Universal storage allows you to support large-scale Online Transaction Processing (OLTP) and Hybrid Transactional and Analytical Processing (HTAP) at a lower total cost of ownership (TCO). Universal storage is a continuing evolution of the columnstore, supporting transactional workloads that would have traditionally used the rowstore.
Although rowstores are well-suited for transaction processing, it can be costly to store large datasets in rowstores, as they store all data in RAM. Because columnstores are disk-based, it is more economical to store data in columnstores as opposed to rowstores.
Current Features in Universal Storage
Currently, universal storage has five features that allow columnstores to process transactional workloads more efficiently:
- Hash indexes on columnstores which may optionally require uniqueness.
- Subsegment access, which speeds up access to a row in a columnstore. For more details, see item 6 in Creating Efficient Columnstore Queries.
- Row-level locking on columnstores.
- Joins on columnstores, where one of the tables in the join uses a highly selective filter.
- Upserts on columnstores.
Additionally, sparse compression for rowstores enables wide tables with a large percentage of
NULL values to be stored in as little as half of the RAM.
See SingleStore Universal Storage – And Then There Was One for additional information about (1) using columnstores with hash indexes, sub-segment access, and fine-grain locking to enable OLTP operations on data bigger than will fit in RAM, and (2) using SPARSE rowstore compression to reduce TCO for rowstore tables with many NULL values.