Raijin uses a hybrid columnar data storage. The columnar format combined with vectorized execution greatly increases the data throughput demanded by analytical workloads.
Many traditional SQL solutions use B-Tree based indexing algorithms. While this data structure can work great for OLTP type queries, index maintenance and tuple access greatly inhibits performance when a large amount of data needs to be accessed from secondary storage. This often leads to gradual performance degradation for both read and write operations as the database size grows. Instead of using B-Trees, the Raijin Database engine employs a variant of LSM Trees that performs well for both read and write (append) operations.
The storage layer in Raijin can use partitioning in order to increase data locality. Besides boosting query performance, detaching data partitions can help to quickly and efficiently move data out of the database. In case of time-series data, data partitioning can be used to discard historical data or move data into an archive without the need to run expensive dump operations.