Atibase is a relational open-source database management system that is compatible and interoperable with Oracle. Atibase is a hybrid database – data can be stored and manipulated in main memory alone, and physical disk alone, or a combination of both. Altibase is an in-memory database, and its utilization of server-side and client-side sharding architecture allows for a linear performance enhancement without coordinator-related bottlenecks, regardless of the number of servers added. In addition, Altibase can be used as a front-end solution to Oracle, specifically acting as a user interface that allows users the access of raw, structured, or tabular data within the application.
Altibase started off as an in-memory database research project at a government-funded research organization in Seoul, South Korea, in 1991. The research project began as an in-depth look at the effects of RAM on traditional relational databases. In 2000, its first version was released for commercial use and by 2003, it entered the Chinese market. In 2005, Altibase commercialized hybrid DBMS, which allowed various clients to utilize both RAM and disk as storage mediums. By 2015, Altibase introduced its scale-out technology, sharding, and three years later went open source. Altibase’s clients span from the telecommunications, finance, manufacturing and utilities sectors.
Altibase has Multi-version Concurrency Control (MVCC) which provides high throughput with consistency and isolation. It is implemented in different ways for memory tablespaces and disk tablespaces. Altibase uses “Out Place MVCC” for memory tablespaces and “In-Place MVCC” for disk tablespaces. They both superficially appear similar, so there is no need for the user to distinguish between the two.
In Out-Place MVCC, a new version of a record is created and associated with previous versions of the record every time an update operation occurs. In In-Place MVCC, the contents of the columns that belong to the original records and the ones that are being changed, are written as “undo log records” to an undo page. These logs exist in undo tablespace, and the new data is written to the location of the original record.
Altibase is a relational database that is also ACID and SQL compliant. Atlibase is compatible and interoperable with Oracle and migrating from another database to Altibase is less complex than majority of other migrations. Altibase also uses sharding technology which allows minimal use of coordinators.
Altibase has “read committed” (0), “repeatable read” (1), and “no phantom read” (2), which can be selected appropriately depending on the user’s requirements. Each number refers to the level of which the transaction isolation levels succeeds. These levels are defined by the presence or absence of dirty reads (uncommitted data), non-repeatable reads, and phantom (initially unseen data).
Altibase can scale vertically and horizontally via sharding. Altibase can automatically account for the addition of new RAM and faster processors which results in an immediate performance increase.
Altibase creates service threads for query processing and put them in the Service Thread pool. For every user configuration when the server is started, a number of service threads increases.
The parser checks the syntax of the SQL text, and if no errors are detected in the SQL, the parser generates a parse tree which is used in the validation step. The parser does not have access to the database. The validator accesses various system tables in the database to verify that all database objects referenced by the SQL exist, such as tables, columns, views, types, etc. If there are no errors, the validator generates a “checked” parse tree. After checking the validity of the SQL text, the optimizer tries to find out the best way to execute the given checked parse tree, and then it generates the plan tree. The last phase executes the query. The executor executes the SQL using the given plan tree.
Tables are ordered in regards to the node that created them along with the type of storage. Memory hash tables scan and save records in two methods - the bucket method or the partitioning method. The bucket method saves records in buckets in a list format, and scans the records through these buckets. On the other hand, the partitioning method keeps the records in a list, but scans records by partitions.
Altibase is a shared-nothing DBMS which provides sharding. It has a distributed architecture where all the nodes work independently of each other to satisfy a given query, and report back to the master node when done. The nodes don’t share any memory or disk space and the data within nodes are distributed across nodes through a distribution key.
In order to accelerate the performance and reduce the size of materialized views, columns that are not referenced by the user are excluded.