SWC-DB

SWC-DB ("Super Wide Column Database") is a DBMS with support for super-wide key. The key is supporting 16777216(2^24,uint24) number of Fractions, max 2^24 bytes a Fraction and total size of a key is up-to 2^32 bytes. SWC-DB does not have Tables nor Namespaces whereas the number of columns is a numerous (at date max of unsigned 64 bit integer). SWC-DB uses a proprietary SQL (structural query language) that suit the requirements to work with it's super wide-key.

Concurrency Control

Multi-version Concurrency Control (MVCC) Deterministic Concurrency Control Timestamp Ordering

The option to define the maximum cell-versions to keep/retain in SWC-DB is done by configuring the column's Schema property "cell_versions", whereas the order and the revision of a cell is determined by the Cell's definitions of timestamp and it's order DESC/ASC. The timestamp defaults to AUTO that is swcdbRanger application system's time and order to ASC. Additionally to the user-supplied timestamp SWC-DB cell has an internal cell-revision definition that let to determine the latest data that should be retain or removed. The precision of timestamp used in SWC-DB is in nanoseconds. Whereas the configurable 'cell_ttl' property of a column schema is in milliseconds. The Cell's TTL of the schema is applied against timestamp of a cell and at reach of TTL the cell is auto-considered as non-existing, depends on momentum and max-versions, by changing the Schema's cell-ttl before Compaction has under-go It is a possibility the Cell still exists.

Compression

Naïve (Page-Level) Naïve (Record-Level) Bit Packing / Mostly Encoding

The available encoders (compressors) are ZSTD, ZLIB, SNAPPY and in PLAIN. On a record-level base configuration it is done by updating Cell-Value with the desired encoder. On a page-level base that is applied at Cell-Store-Block it is done by defining the default configuration for a schema or by column-schema definition with the encoder to use. Transactions of Communications are configurable at a program specific (application level) with an application designated configuration property and file. Variable-Length integers are used for most of numerical primitives either long-term/persistent storage or intermediate run-time consumption.

SWC-DB Logo
Website

https://www.swcdb.org

Source Code

https://github.com/kashirin-alex/swc-db

Tech Docs

https://github.com/kashirin-alex/swc-db/tree/master/docs

Developer

Kashirin Alex

Country of Origin

IL

Start Year

2019

Project Type

Commercial, Open Source

Written in

C++

Supported languages

C, C#, C++, Java, Python, Rust

Operating Systems

Linux

Licenses

GPL v3, Proprietary