MariaDB Xpand is a distributed SQL database for businesses who need to run web, mobile and IoT applications at a scale beyond that which standard relational databases are capable of reaching. It was built with a singular, unrelenting focus on scaling SQL to unimaginable levels without sacrificing the relational data model and ACID transactions. It’s a database for every business in the digital era, from digitally native disruptors to industry titans undergoing digital transformation.
Xpand can be deployed with as little as three database nodes for modest workloads to over a hundred for massive ones, combining thousands of cores, terabytes of memory and petabytes of storage to operate as a single logical database capable of handling 10 million queries per second. Further, database nodes can be added or removed on demand, allowing Xpand to scale when its workloads do – whether it’s the result of viral growth or holiday surges.
Xpand partitions tables into slices, and assigns them to different database instances. As a result, each instance caches unique slices of data in memory for fast reads. Simply add instances to increase the total amount of data cached in memory, and thus read performance.
Xpand distributes data via slices (i.e., horizontal table partitions), writing different data to different database instances at the same time. It effectively combines multiple storage devices to increase disk I/O. Simply add instances to increase write throughput and lower write latency.
Xpand was designed to tolerate infrastructure failures and maintain availability. It stores multiple copies of data on different database nodes, and optionally, in different availability zones. If one or more of them fail (or even an entire zone), it will automatically switch to using copies stored on other ones – no manual intervention needed.
Xpand can store copies of data in multiple availability zones within a region when running in the cloud, or in multiple racks when running on premises.
Xpand uses parallel streaming replication between regions/data centers to support both active/active and active/passive global deployments.
Xpand scales without sacrificing data integrity, writing all copies of data synchronously (and concurrently) to provide strong consistency and guaranteeing the atomicity, consistency, isolation and durability (ACID) of transactions spanning multiple database nodes. If a transaction coordinator should fail, another one can take over because transactions are made durable using a high-performance Paxos implementation and consensus.
Xpand scales without imposing limitations on standard SQL support. It is compatible with MariaDB and MySQL connectors, and applications can continue to query data the same way they did (or would) with MariaDB/MySQL – with joins, ordering, aggregates, stored procedures/functions, JSON functions and more.
Xpand continuously monitors data distribution and the resource utilization of individual database nodes. If nodes are added or removed, or if hotspots are detected, it will automatically begin moving data around in order to restore an even distribution of the data and the workload – making every node equal in its use and maximizing performance.
When new database nodes are added, Xpand automatically moves some of the data to them in order to maintain an even distribution of data.
When a database node fails or becomes unavailable, Xpand automatically recreates lost copies of data to restore fault tolerance.
If a database node is handling too much of the workload, Xpand automatically reassigns some of its data to restore an even workload distribution.