Distributed SQL
Regatta is an SQL relational database, containing all the usual elements such as tables, columns, cells, primary/secondary indexes, foreign keys, all the SQL data-types, integrity-constraints, all the standard relational operations like select, join, sort, group, distinct, aggregations, and so forth.
In addition, Regatta’s data-model covers data-elements that cannot be represented or cannot be represented optimally by traditional relational databases, leveraging NoSQL-like data-expressiveness. For instance, a column-cell can contain more than a single value. Furthermore, cells can contain structures, nested structures, containers such as lists and arrays with a dynamic number of elements, providing the effective capabilities of JSON, XML, etc. Regatta does not regard such cells as holding some opaque structure, but rather is fully aware of the data internals. Relational-model elements, such as foreign-keys, can be included as internal fields inside nested structures. Moreover, it is possible to set integrity constraints to limit the internal structure of the cell, while at the same time, optionally leaving various degrees of freedom. In fact, cells can have a firm structure, be “schemaless”, or anything in between. Regatta’s SQL semantics treat all those types of data elements as first-class citizens of the data-model. Regatta guarantees ACID for all types of data whether structured or NoSQL-like.
Traditional relational databases generally will not handle large rows and variable-size rows in an optimal manner, as it may, among others, cause the database’s data-layout to introduce I/O amplification. It would be fair to say that these databases generally expect fixed-size small rows for optimal operation. Thanks to its optimized data-layouts, Regatta optimally supports both small and large rows, fixed-size and variable-size rows, rows that start small and later on become bigger, and more.
Most relational databases can store small BLOBs. Generally larger BLOBs must be stored externally to the database. Unless the BLOB is small, embedding BLOBs in the database is usually inefficient or impossible. Unlike other databases, Regatta can optimally store small (KBs), medium (MBs), large (GBs) and huge (100GBs – TBs) BLOBs as an integral part of the database. BLOBs can appear anywhere in the data-model including, for example, as a field in a nested-structure.
The combination of Regatta’s rich data-model and optimized data-layout provides optimal support for high-ingress workloads, making it ideal for IOT and time-series.