MariaDB ColumnStore is a collumnar storage engine designed for distributed massively parallel processing (MPP). It consists of a number of different components, working together. These components include:
- User Module:
- The User Module is made up of the front end MariaDB Server instance and a number of processes specific to MariaDB ColumnStore that handle concurrency scaling. The storage engine plugin for MariaDB ColumnStore hands over the query to one of these processes which then further break down SQL requests, distributing the various parts to one or more Performance Modules to process the query. Finally, the User Module assembles all the query results from the various participating Performance Modules to form the complete query result set that is returned to the user.
- Performance Module:
- The Performance Module is responsible for storing, retrieving, and managing data, processing block requests for query operations, and passing it back to the User Module(s) to finalize the query requests. The Performance Module selects data from disk and caches it in a shared nothing data cache that is part of the server on which the Performance Module resides. MPP is accomplished by allowing the user to configure as many Performance Modules as they would like; each additional Performance Module adds more cache to the overall database as well as more processing power.
- MariaDB ColumnStore is extremely flexible with respect to the storage system. When running on premise, it can use either local storage or shared storage (e.g. SAN) to store data. In the Amazon EC2 environment, it can use ephemeral or Elastic Block Store (EBS) volumes. When data redundancy is required for a shared-nothing deployment, it is built to integrate with GlusterFS and the Apache Hadoop Distributed File System (HDFS). In the first alpha release only local storage, shared storage and EBS configuration have been tested. HDFS and GlusterFS testing will be done in future alpha releases.