Skip to content

The high-performance distributed SQL database for global, internet-scale apps.

Notifications You must be signed in to change notification settings

bobbyinsane/yugabyte-db

 
 

Repository files navigation

YugabyteDB


License Documentation Status Ask in forum Slack chat Analytics

What is YugabyteDB?

YugabyteDB is a high-performance, cloud-native distributed SQL database that aims to support all PostgreSQL features. It is best fit for cloud-native OLTP (i.e. real-time, business critical) applications that need absolute data correctness and require at least one of the following: scalability, high tolerance to failures, globally-distributed deployments.

The core features of YugabyteDB include:

  • Powerful RDBMS capabilities Yugabyte SQL (YSQL for short) reuses the query layer of PostgreSQL (similar to Amazon Aurora PostgreSQL), thereby supporting most of its features (datatypes, queries, expressions, operators and functions, stored procedures, triggers, extensions, etc). Here is a detailed list of features currently supported by YSQL.

  • Distributed transactions The transactions design is based on the Google Spanner architecture. Strongly consistency of writes is achieved by using Raft consensus for replication and cluster-wide distributed ACID transactions using hybrid logical clocks. *Snapshot * and serializable isolation levels are supported. Reads (queries) have strong consistency by default, but can be tuned dynamically to read from followers and read-replicas.

  • High availability YugabyteDB is extremely resilient to common outages with native failover and repair. YugabyteDB can be configured to tolerate disk, node, zone and region failures automatically. For a typical deployment (YugabyteDB cluster deployed in one region across multiple zones in a public cloud), the RPO is 0 (meaning no data is lost on a failure) and the RTO is 3 seconds (meaning the data being served by the failed node is available in 3 seconds).

  • Horizontal scalability It is possible to scale out a YugabyteDB cluster in order to achieve more IOPS or data storage simply by adding nodes to the cluster.

  • Geo-distributed, multi-cloud YugabyteDB can be deployed in public clouds and natively inside Kubernetes. It supports deployments that span three or more fault domains, such as multi-zone, multi-region and multi-cloud deployments. It also supports two region deployments with asynchronous master-slave replication and bidirectional, multi-master replication. To serve (stale) data with low latencies, read replicas are also a supported feature.

  • Multi API design The query layer of YugabyteDB is built to be extensible. Currently, YugabyteDB supports two distributed SQL APIs Yugabyte SQL (YSQL) (fully relational API that re-uses query layer of PostgreSQL) and Yugabyte Cloud QL (YCQL) (semi-relational SQL-like API with documents/indexing support and Apache Cassandra QL roots).

  • 100% open source YugabyteDB is fully open-source under the Apache 2.0 license. The open-source version has powerful enterprise features distributed backups, encryption of data at-rest, in-flight TLS encryption, change data capture, read replicas and others.

Read more about YugabyteDB in our Docs.

Get Started

Cannot find what you are looking for? Have a question? Please post your questions or comments on our Community Slack or Forum.

Build Apps

YugabyteDB supports a number of languages and client drivers. Below is a brief list.

Language ORM YSQL Drivers YCQL Drivers
Java Spring/Hibernate PostgreSQL JDBC cassandra-driver-core-yb
Go Gorm pq gocql
NodeJS Sequelize pg cassandra-driver
Python SQLAlchemy psycopg2 yb-cassandra-driver
Ruby ActiveRecord pg yugabyte-ycql-driver
C# EntityFramework npgsql CassandraCSharpDriver
C++ Not tested libpqxx cassandra-cpp-driver
C Not tested libpq Not tested

What's being worked on?

This section has been updated on Mar 29, 2020.

Here is a list of some of the key features being worked on for the upcoming v2.2 release around July 2020, along with the recently completed features.

Feature Status Release Target Progress Comments
Online rebuild of indexes PROGRESS v2.2 Track Available in beta for YCQL (docs coming soon), in progress for YSQL
Online schema migrations PROGRESS v2.2 Track YCQL already supports online schema changes
Distributed backups for transactional tables PROGRESS v2.2 Track Distributed backups for non-transactional tables in YCQL is already GA
Automatic tablet splitting PROGRESS v2.2 Track
Improve YSQL performance and support for benchmarks PROGRESS v2.2 Track
YSQL cluster administration features PROGRESS v2.2 Track
COLOCATED tables PROGRESS
Row-level geo-partitioning PROGRESS Track This feature will be done in two phases: supporting PostgreSQL partitions followed by geo-placement support for partitions
Support for most ALTER TABLE variants PROGRESS Track
Change data capture BETA This feature is currently available but in beta.
Two datacenter (2DC) deployments DONE v2.1 Docs
Encryption of data at rest DONE v2.1 Docs

Architecture

YugabyteDB Architecture

Review detailed architecture in our Docs.

Need Help?

Contribute

As an open source project with a strong focus on the user community, we welcome contributions as GitHub pull requests. See our Contributor Guides to get going. Discussions and RFCs for features happen on the design discussions section of our Forum.

License

Source code in this repository is variously licensed under the Apache License 2.0 and the Polyform Free Trial License 1.0.0. A copy of each license can be found in the licenses directory.

The build produces two sets of binaries:

  • The entire database with all its features (including the enterprise ones) are licensed under the Apache License 2.0
  • The binaries that contain -managed in the artifact and help run a managed service are licensed under the Polyform Free Trial License 1.0.0.

By default, the build options generate only the Apache License 2.0 binaries.

Read More

About

The high-performance distributed SQL database for global, internet-scale apps.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 46.2%
  • C++ 32.3%
  • Java 7.7%
  • PLpgSQL 3.8%
  • JavaScript 1.3%
  • TSQL 1.3%
  • Other 7.4%