DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

YugabyteDB


YugaByte DB is a transactional database management system that can scale up and down across multiple regions for planet-scale and geo-distributed applications. Offering both SQL and NoSQL in one platform, it supports distributed ACID transactions, auto-sharding, and auto-balancing. It provides compatible APIs extended from Redis API and Apache Cassandra Query Language (CQL), and SQL API which is compatible with PostgreSQL. Built on a customized version of RocksDB, YugaByte DB's storage engine, DocDB, is a log-structured merge-tree (LSM) based "key to object/document" store.[04][05][06]

Source Code
https://github.com/yugabyte/yugabyte-db[02]
Developer
Country of Origin
US
Start Year
2016 [15]
Project Types
Commercial, Open Source
Written in
C++
Supported Languages
C, C#, C++, Go, Java, JavaScript, Python
Derived From
RocksDB
Inspired By
Cloud Spanner
Compatible With
Cassandra, PostgreSQL, Redis
Operating Systems
Linux, macOS
License
Apache v2

Database Entry

YugabyteDB


YugaByte DB is a transactional database management system that can scale up and down across multiple regions for planet-scale and geo-distributed applications. Offering both SQL and NoSQL in one platform, it supports distributed ACID transactions, auto-sharding, and auto-balancing. It provides compatible APIs extended from Redis API and Apache Cassandra Query Language (CQL), and SQL API which is compatible with PostgreSQL. Built on a customized version of RocksDB, YugaByte DB's storage engine, DocDB, is a log-structured merge-tree (LSM) based "key to object/document" store.[04][05][06]

History[06]


YugaByte DB's first public beta release came out in November 2017. It was developed by the former team that built and ran Facebook's NoSQL platform that supported a number of real-time applications. They left Facebook and found their own company, YugaByte Inc, aiming to build a database management system to unify the data layer for mission-critical applications. Companies like Amazon, Netflix, and Uber have lots of experts, so they manage to offer complex DBaaS platforms which benefit their app developers. However, for traditional enterprises and small startups, the data layer is still an unsolved problem. This is where YugaByte DB comes to rescue.

Concurrency Control[07]


YugaByte DB uses MVCC for concurrency control. Although not clearly stated, it uses a variant of OCC to ensure atomicity. Under a distributed environment, it uses Two-Phase Commit with Early Acknowledgement. When a transaction wants to modify a number of rows, it will first write "provisional" records of each modified row to the target tablet storing the row. These records will not be seen by the client unless the transaction commits. If conflicts occur when writing these records, the transaction will restart and abort. In this case, the client will see a certain number of retries (restarts are transparent to clients). If no conflicts occur, the transaction will commit and notify success to client. After that, the "provisional" records are applied and cleaned asynchronously.

Data Model[05]


YugaByte DB's storage engine, DocDB, is derived from RocksDB. Unlike RocksDB, DocDB is a "key to object/document" store instead of a "key to value" store. Values in DocDB can be primitive types as well as object types (e.g., lists, sorted sets, and sorted maps) with arbitrary nesting.

Foreign Keys[08][09]


YugaByte DB does not support foreign keys as none of its CREATE TABLE APIs offer keywords to set foreign key constraints.

Indexes


Isolation Levels[10]


YugaByte DB currently only supports Snapshot Isolation and is still working on supporting Serializable Isolation.

Joins[11][12][13]


Only YugaByte DB's PostgreSQL-compatible API YSQL supports join operations (i.e., inner, outer, left, and right join). The other two APIs, YEDIS and YCQL, do not support this operation.

Logging


Query Interface[14]


YugaByte DB offers the following three query APIs:

  • YCQL: Cassandra-compatible API that supports DDL/DML statements, builtin functions, expression operators, and user-defined data types.
  • YEDIS: Redis-compatible API that supports data types including string, hash, set, sorted set, list, and time seris (new in YugaByte DB).
  • YSQL (beta): PostgreSQL-compatible API that supports DDL/DML statements, builtin functions, expression operators, and user-defined data types.

Storage Model


Citations

15 sources
  1. YugabyteDB: AI-Ready, Distributed, Postgres-Compatible Database yugabyte.com
  2. GitHub - yugabyte/yugabyte-db: YugabyteDB - the cloud native distributed SQL database for mission-critical applications. · GitHub github.com
  3. YugabyteDB Docs yugabyte.com
  4. YugabyteDB FAQS | YugabyteDB Docs yugabyte.com Dead — Check Archive
  5. https://docs.yugabyte.com/latest/architecture/concepts/persistence/ yugabyte.com Dead — Check Archive
  6. YugabyteDB Has Arrived yugabyte.com
  7. Transactional I/O path | YugabyteDB Docs yugabyte.com
  8. https://docs.yugabyte.com/latest/api/cassandra/ddl_create_table/ yugabyte.com Dead — Check Archive
  9. https://docs.yugabyte.com/latest/api/postgresql/ddl_create_table/ yugabyte.com Dead — Check Archive
  10. Transaction isolation levels | YugabyteDB Docs yugabyte.com
  11. Explore YSQL, the Yugabyte SQL API | YugabyteDB Docs yugabyte.com
  12. SELECT statement [YCQL] | YugabyteDB Docs yugabyte.com
  13. https://docs.yugabyte.com/latest/api/postgresql/dml_select/ yugabyte.com Dead — Check Archive
  14. YugabyteDB API reference (for YSQL and YCQL) | YugabyteDB Docs yugabyte.com
  15. https://www.crunchbase.com/organization/yugabyte#section-overview crunchbase.com
Revision #10