ClustrixDB is a full-featured RDBMS that combines a sophisticated distributed architecture with a simple SQL interface. It was specifically built for online transaction processing (OLTP) as well as for MySQL compatibility.
To better enable you to understand this document, some definitions are in order. Within ClustrixDB, a node refers to an individual networked server while a cluster consists of three or more nodes that are configured to work together.
Some of the key features of ClustrixDB are as follows:
ClustrixDB uses shared-nothing architecture; the only architecture that is known to scale linearly as nodes are added. In a shared-nothing architecture, each node owns a portion of the data. Reads and writes are distributed to multiple nodes to reduce contention. Additionally, ClustrixDB automatically distributes both data and query execution to scale.
ClustrixDB further allows you to easily add (“Flex Up”) and reduce (“Flex Down”) capacity of your database to meet the changing and seasonal requirements of your application. To expand your cluster’s capacity, use the Flex Up feature to add nodes to your cluster. Conversely, use the Flex Down feature of ClustrixDB to scale back your configuration. Both operations automatically redistribute data within the cluster in the background while the database remains online and available.
ClustrixDB was built specifically for large-scale, online transaction processing (OLTP). It ensures that transactions always maintain ACID compliance, even in a distributed environment. ClustrixDB is a fully relational database built for high throughput workloads and can scale reads and writes by simply adding nodes. By distributing data and workload across different nodes and cores in a cluster, ClustrixDB can achieve levels of parallelism that far exceed what is possible on a single instance database.
A key component of ClustrixDB is the Rebalancer which runs continuously in the background to automatically manage the distribution of data for the cluster. It ensures that multiple copies (replicas) of your data are maintained across the cluster. If the cluster encounters an unexpected node failure and there are not sufficient replicas available, the Rebalancer automatically works to create more. Both data and load are distributed evenly across the cluster, even as data is being added or removed.
Each node of a ClustrixDB cluster is configured with the same version of the database engine, a map of all the system's data, and its own query compiler. Each node is capable of performing both reads and writes.
Queries are evaluated by ClustrixDB's powerful Query Optimizer, Sierra, to determine the optimal execution plan. The database then dissects each query into individual segments that are distributed to the nodes containing the relevant data. In essence, ClustrixDB delivers the query to the related data and then amalgamates the results. All of this sophisticated distributed query planning and execution is leveraged by a simple SQL interface.
ClustrixDB was designed for fault tolerance and by default, can sustain a node or zone failure with no data loss. When a node or zone becomes unavailable, it is removed from service and the cluster is able to leverage copies of data on other nodes. The ClustrixDB Rebalancer will automatically create additional replicas of that data, a process that happens transparently in the background with no user intervention and, as such, makes ClustrixDB auto-healing. To learn more, see the article regarding ClustrixDB's Consistency, Fault Tolerance, and Availability. To learn more about deploying a cluster across multiple zones, see Zones.
ClustrixDB can be deployed wherever CentOS 7.4+ is available -- in clouds (AWS, Rackspace, Azure) or on commodity hardware of your choice. For more on recommended hardware platforms, see ClustrixDB Reference Server Configurations.
ClustrixDB utilizes MySQL syntax and constructs for SQL, DML, DDL, triggers, and stored procedures. For current MySQL users, that means that your present environment is likely already compatible with ClustrixDB. Although similar to MySQL, ClustrixDB was actually built from the ground-up. See MySQL Compatibility for more information.
ClustrixDB also supports the MySQL Replication protocol, including SBR and RBR. For more information, see Configuring Replication.
Users are provided with a simple SQL interface for accessing data within ClustrixDB. An application will see ClustrixDB as a single instance, regardless of how many nodes are in the cluster or where the data is located. ClustrixDB does not shard data and no modifications to the application are required to access the database. Each node within ClustrixDB is able to service any reads or writes.
Because ClustrixDB speaks MySQL, migration utilizes both existing MySQL tools and proprietary ClustrixDB products. A typical migration looks like this:
Dump the MySQL database with mysqldump.
Import the dump ClustrixDB using clustrix_import.
Use replication to synchronize ClustrixDB with the most recent changes made to the MySQL database.
Cut over application servers to ClustrixDB.
For detailed information regarding migration, see Migrating to ClustrixDB from MySQL.