- What is YugabyteDB?
- Get Started
- Build Apps
- What's being worked on?
- Architecture
- Need Help?
- Contribute
- License
- Read More
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.
-
Continuous availability YugabyteDB is extremely resilient to common outages with native failover and repair. YugabyteDB can be configured to tolerate disk, node, zone, region and cloud failures automatically. For a typical deployment where a YugabyteDB cluster is deployed in one region across multiple zones on 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 Scaling a YugabyteDB cluster in order to achieve more IOPS or data storage is as simple as 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 xCluster asynchronous replication with unidirectional master-slave and bidirectional multi-master configurations that can be leveraged in two-region deployments. 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), a fully relational API that re-uses query layer of PostgreSQL, and Yugabyte Cloud QL (YCQL), a semi-relational SQL-like API with documents/indexing support with 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
- Install YugabyteDB
- Create a local cluster
- Connect and try out SQL commands
- Build an app using a PostgreSQL-compatible driver or ORM.
- Try running a real-world demo application:
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 May 19, 2020.
Current roadmap
Here is a list of some of the key features being worked on for the upcoming releases. Note that the YugabyteDB v2.2 release is expected around July 2020 and the v2.3 release is expected in Oct 2020.
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 GA |
PROGRESS | v2.2 | ||
IPV6 support for YugabyteDB | PROGRESS | v2.2 | Track | |
DEFERRED constraints support in YSQL |
PROGRESS | v2.2 | Track | |
Audit logging support | PLANNING | v2.3 | Track | |
Improving day 2 operations of Yugabyte Platform | PROGRESS | v2.3 | Track | |
Row-level geo-partitioning | PROGRESS | v2.3 | 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 |
Planned additions to roadmap
The following items are being planned as additions to the roadmap
Feature | Status | Release Target | Progress | Comments |
---|---|---|---|---|
YSQL query optimizer improvements | PLANNING | |||
Support advanced features with COLOCATED tables |
PLANNING | Support the following in colocated tables: ALTER table, xCluster replication, transactional backups, 2DC replication, multiple colocation groups support |
||
Performance improvements for COLOCATED tables |
PLANNING | Pushdown joins, geo-distributed perf by routing queries to colocated tablet leader, ability to pull out fast growing tables out of colocation groups | ||
Point in time restores | PLANNING | Track | ||
LDAP authentication support | PLANNING | Track | ||
Support Kafka as source and sink | PLANNING | Support source and sink for both YSQL and YSQL | ||
Follower reads with distributed transactions | PLANNING | Ability to perform follower reads for YSQL and transactional tables in YCQL. Note that this is currently supported for scenarios without distributed transactions. | ||
Support for transactions in async xCluster replication | PLANNING | v2.3 | Track | Apply transactions atomically on consumer cluster. |
Recently released features
Feature | Status | Release Target | Progress | Comments |
---|---|---|---|---|
Change data capture | ✅ BETA | This feature is currently available but in beta. | ||
xCluster replication (async cross-cluster replication) | ✅ DONE | v2.1 | Docs | |
Encryption of data at rest | ✅ DONE | v2.1 | Docs |
Architecture
Review detailed architecture in our Docs.
Need Help?
-
You can ask questions, find answers, help others on our Community Slack and Forum as well as Stack Overflow
-
Please use GitHub issues to report issues.
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
- To see our updates, go to The Distributed SQL Blog.
- See how YugabyteDB compares with other databases.