SingleStore is a highly-scalable distributed system. Data is sharded automatically amongst nodes in a cluster. Sharding optimizes query performance for both distributed aggregate queries and filtered queries with equality predicates. You can add nodes and redistribute shards (also known as partitions) as needed to scale your workload.
SingleStore also supports storing and processing data using an in-memory rowstore or a disk-based columnstore. The in-memory rowstore provides optimum real-time performance for transactional workloads. The disk-based columnstore is best for analytical workloads across large historical datasets.
Columnstores are the default table type, but rowstores can be created by specifying a rowstore index type. A combination of the SingleStore rowstore and columnstore engines simplifies your technology stack by allowing you to merge real-time and historical data in a single query.
In addition to handling mixed workloads, SingleStore supports high concurrency for simultaneous users. A distributed query optimizer evenly divides the processing workload to maximize the efficiency of CPU usage. Query plans are compiled to machine code and cached to expedite subsequent executions. A key feature of these compiled query plans is they do not pre-specify values for the parameters. This allows SingleStore to substitute the values upon request, which enables subsequent queries of the same structure to run quickly. Moreover, with SingleStore using Multi-Version Concurrency Control (MVCC) and lock-free data structures, data remains highly accessible, even amidst a high volume of concurrent reads and writes.
For more information, see: