Top Qs
Timeline
Chat
Perspective

YugabyteDB

Transactional distributed SQL database From Wikipedia, the free encyclopedia

YugabyteDB
Remove ads

YugabyteDB is a high-performance transactional distributed SQL database for cloud-native applications, developed by Yugabyte.[1]

Quick Facts Original author(s), Developer(s) ...
Remove ads
Quick Facts Company type, Industry ...
Remove ads

History

Summarize
Perspective

Yugabyte was founded by ex-Facebook engineers Kannan Muthukkaruppan, Karthik Ranganathan, and Mikhail Bautin. At Facebook, they were part of the team that built and operated Cassandra and HBase[2][3] for workloads such as Facebook Messenger and Facebook's Operational Data Store.[4]

The founders came together in February 2016 to build YugabyteDB.[5][6]

YugabyteDB was initially available in two editions: community and enterprise. In July 2019, Yugabyte open-sourced previously commercial features and launched YugabyteDB as open-source under the Apache 2.0 license.[7]

Funding

In October 2021, five years after the company's inception, Yugabyte closed a $188 Million Series C funding round to become a Unicorn start-up with a valuation of $1.3Bn[8]

More information Series, Date Announced ...
Remove ads

Architecture

Summarize
Perspective

YugabyteDB is a distributed SQL database that aims to be strongly transactionally consistent across failure zones (i.e. ACID compliance].[20][21] Jepsen testing, the de facto industry standard for verifying correctness, has never fully passed, mainly due to race conditions during schema changes.[22] In CAP Theorem terms YugabyteDB is a Consistent/Partition Tolerant (CP) database.[23][24][25]

YugabyteDB has two layers,[26] a storage engine known as DocDB and the Yugabyte Query Layer.[27]

Thumb
YugabyteDB Architecture

DocDB

The storage engine consists of a customized RocksDB[27][28] combined with sharding and load balancing algorithms for the data. In addition, the Raft consensus algorithm controls the replication of data between the nodes.[27][28] There is also a Distributed transaction manager[27][28] and Multiversion concurrency control (MVCC)[27][28] to support distributed transactions.[28]

The engine also exploits a Hybrid Logical Clock[29][27] that combines coarsely-synchronized physical clocks with Lamport clocks to track causal relationships.[30]

The DocDB layer is not directly accessible by users.[27]

YugabyteDB Query Layer

Yugabyte has a pluggable query layer that abstracts the query layer from the storage layer below.[31] There are currently two APIs that can access the database:[28]

YSQL[32] is a PostgreSQL code-compatible API[33][34] based around v11.2. YSQL is accessed via standard PostgreSQL drivers using native protocols.[35] It exploits the native PostgreSQL code for the query layer[36] and replaces the storage engine with calls to the pluggable query layer. This re-use means that Yugabyte supports many features, including:

  • Triggers & Stored Procedures[34]
  • PostgreSQL extensions that operate in the query layer[34]
  • Native JSONB support[34]

YCQL[37] is a Cassandra-like API based around v3.10 and re-written in C++. YCQL is accessed via standard Cassandra drivers[38] using the native protocol port of 9042. In addition to the 'vanilla' Cassandra components, YCQL is augmented with the following features:

  • Transactional consistency - unlike Cassandra, Yugabyte YCQL is transactional.[39]
  • JSON data types supported natively[40]
  • Tables can have secondary indexes[41]

Currently, data written to either API is not accessible via the other API, however YSQL can access YCQL using the PostgreSQL foreign data wrapper feature.[42]

The security model for accessing the system is inherited from the API, so access controls for YSQL look like PostgreSQL,[43] and YCQL looks like Cassandra access controls.[44]

Remove ads

Cluster-to-cluster replication

In addition to its core functionality of distributing a single database, YugabyteDB has the ability to replicate between database instances.[45][46] The replication can be one-way or bi-directional and is asynchronous. One-way replication is used either to create a read-only copy for workload off-loading or in a read-write mode to create an active-passive standby. Bi-directional replication is generally used in read-write configurations and is used for active-active configurations, geo-distributed applications, etc.

Migration tooling

Yugabyte also provides YugabyteDB Voyager, tooling to facilitate the migration of Oracle and other similar databases to YugabyteDB.[47][48] This tool supports the migration of schemas, procedural code and data from the source platform to YugabyteDB.

See also

References

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads