Siodb data block storage

Siodb has a unique way of storing data. This unique storage design is a combination of various modern concepts which together provide high performance. Let’s discover deeper how works this storage architecture.

Column storage

First of all, Siodb stores its data in columns (as opposed to row storage where one storage unit stores multiple columns). Each column from each table has its own set of data files. Furthermore, Siodb indexes each column by design according to their type.

Also, Siodb has an automatic data type size to be flexible on data type sizes. Thanks to this feature, Siodb take care of the data size without having to declare column size nor impacting performance.

Block partitioning

Siodb writes data from a column in data files called partitions. All partitions have the same size. Siodb fills the partition from the beginning to the end with the data from clients. No matter the transaction type (insert, update, delete), Siodb generates records and then append those records into the current partition.

A storage representation for a table of 4 columns:

This storage architecture enables high throughput. Indeed, for any kinds of operation, multiples threads work in parallel to go through each partition of requested columns.

Load profile

This storage architecture answer to both biggest load types in application: OLTP and OLAP.

Indeed, OLAP applications execute large queries across various columns from various big tables. Hence, the column storage, automatically indexed and partitioned by blocks make Siodb very fast on large query processing.

Nevertheless, OLTP applications are not forgotten. Indeed, a master column on each table keeps a virtual view of data by row. Therefore, whenever Siodb accesses a cell from any row in a table, it has direct access on all other cells of that row.

In brief, the internal storage architecture of Siodb reduces I/Os, increases performance and avoid wasting space.

Please comment below should you need more details.

Leave a Reply

Your email address will not be published. Required fields are marked *