The Planned 2021 YugabyteDB Distributed SQL Roadmap
By: Jimmy Guerrero
Tags: Postgres, Software Development, Open Source, Database, Postgresql

Our mission at Yugabyte is to build the default distributed SQL database for cloud native applications in a multi cloud world. We recently announced the general availability of Yugabyte 2.5, which brought new features like Geo-Partitioning and Enterprise-Grade security features in addition to major enhancements in multi-region deployments and performance — while also improving on high availability, horizontal scalability, and ease of managing the database. The Yugabyte team is currently working on even more exciting features, and this blog post will give you a sneak peek into what’s coming in the next release.

Because YugabyteDB is fully open source, it’s easy for developers to use and build on it. And open source adoption helps create a rapid feedback loop from community and enterprise users alike, which helps drive the collaborative and community-driven development of feature-rich software while maintaining high quality and reliability. Security hardening, ecosystem integrations, extensibility frameworks, and other enterprise features naturally get stronger as a result of the open source approach.

Although this blog post is a sneak peek as of today into the upcoming release, you can track the most recent updates and additions on the roadmap section on the YugabyteDB GitHub page.

Commitment to open source

First, it is worth restating that YugabyteDB doesn’t pay lip service to open source like other database projects. We don’t trick you into downloading software that has time-bombed enterprise features that you can “try,” but ultimately have to “buy”. Advanced features like read replicas, encryption, change data capture, distributed backups and multi-master async replication are all available under the Apache 2.0 license. To learn more about our commitment to open source, check out, “Why we changed YugabyteDB licensing to 100% open source.”

How YugabyteDB versioning works

Next, let’s do a quick refresher on how YugabyteDB’s versioning system works:

For production

Stable releases are production level releases suitable for widespread enterprise deployment. Releases within stable release series, denoted by MAJOR.EVEN versioning (such as 2.2, 2.4, …), introduce thoroughly tested new features and changes added since the last stable release. The stable release contains tested and hardened features suitable for production environments and receives long term commercial support. The next stable release, 2.4 is expected to ship in January 2021.

For development

Latest releases are development releases and incrementally and regularly introduce new features and changes that are suitable for development, testing, and POCs. Releases within the latest release series, denoted by MAJOR.ODD versioning (such as 2.3, 2.5, …), incrementally introduce new features and changes that are intended for development and testing. The 2.3 latest release series will become the basis for the next 2.4 stable release series after a certain period of testing and validation. The 2.5 version shipped on Nov 12, 2020. To learn more about this release, check out: “Announcing YugabyteDB 2.5.”

For an in depth discussion on YugabyteDB’s versioning system, check out “Yugabyte Adopts a New Versioning System.”

Recap: Recently released features in YugabyteDB 2.5

Here’s a brief highlight of some of the features made available in the last major release.

Issue #2393 — Improved identity and access management including LDAP and active directory support.

— Improved identity and access management including LDAP and active directory support. Issue #5232 — Follower reads in YSQL with the ability to perform follower reads for YSQL and transactional tables in YCQL.

— Follower reads in YSQL with the ability to perform follower reads for YSQL and transactional tables in YCQL. Issue #4194 — YSQL cluster administration features with a per-node view of currently active queries, find which queries are slow, what active connections are doing, etc.

— YSQL cluster administration features with a per-node view of currently active queries, find which queries are slow, what active connections are doing, etc. Issue #5241 — Support loading large data sets into YSQL using COPY which improves transactions which have a very large number of operations, as well as provide various options to batch load data more efficiently.

— Support loading large data sets into YSQL using COPY which improves transactions which have a very large number of operations, as well as provide various options to batch load data more efficiently. Issue #1331 — Database runtime activity monitoring, audit logging, and inactivity monitoring.

YugabyteDB 2.5 features still in development

There were some features in 2.5 that required some additional development time, those features are listed below.

Issue #1004 — Automatic table spitting enabled by default. This feature enables changing the number of tablets (which are splits of data) at runtime. There are a number of scenarios where this is useful including RANGE scans, low cardinality primary keys and when small tables become very large.

— Automatic table spitting enabled by default. This feature enables changing the number of tablets (which are splits of data) at runtime. There are a number of scenarios where this is useful including RANGE scans, low cardinality primary keys and when small tables become very large. Issue #4420 — Improving the features required for the Day 2 operations of Yugabyte Platform.

— Improving the features required for the Day 2 operations of Yugabyte Platform. Issue #5683- Transparently restart transactions to decrease the incidence of transaction restart errors seen in various scenarios.

Planned YugabyteDB 2.7 features

Look for the first release of 2.7 to ship in March 2021 which includes a bunch of new features, like Point in Time Restore, automatic tablet splitting, support for GIN indexes, and enhancements wrt to performance, incorporating PostgreSQL 12 features and improving day 2 operations with Yugabyte Platform.

Here’s what we are planning to include:

Issue #1820 — Point in time restores similar to how PostgreSQL works.

— Point in time restores similar to how PostgreSQL works. Issue #5680 — Support for pessimistic locking which is desirable in scenarios where you want the database to wait for existing transactions (that might otherwise conflict) to complete before making progress.

— Support for pessimistic locking which is desirable in scenarios where you want the database to wait for existing transactions (that might otherwise conflict) to complete before making progress. Issue #5242 — Various improvements to YSQL query performance including JOIN planning and execution, table statistics, scans, and indexes.

— Various improvements to YSQL query performance including JOIN planning and execution, table statistics, scans, and indexes. Issue #1337 — Support for GIN indexes.

— Support for GIN indexes. Issue #1104 — Support for ALTER TABLE <name> ADD PRIMARY KEY.

— Support for ALTER TABLE <name> ADD PRIMARY KEY. Issue #4192 — Support for online schema migrations in which DDL operations can be safely run as a part of schema migrations concurrently with foreground operations.

— Support for online schema migrations in which DDL operations can be safely run as a part of schema migrations concurrently with foreground operations. Support for Liquibase, Flyway, ORM schema migrations.

Support WSO2 API Gateway and Identity Manager.

Issue #6488 — Support Spark 3 using the YCQL API.

— Support Spark 3 using the YCQL API. Issue #1958 — Ongoing improvements to geo partitioned tables.

— Ongoing improvements to geo partitioned tables. Issue #3226 — Enhancements and performance optimizations to TPC-C benchmarking.

Upcoming features currently in the design phase

There are plenty of features we are planning to include in upcoming releases. Here’s a sample of some of the ones where we are currently working through the design and implementation details.

Issue #3725 — Support for pgloader to enable migrations from MySQL.

— Support for pgloader to enable migrations from MySQL. Issue #5239 — Make COLOCATED tables the default for YSQL.

— Make COLOCATED tables the default for YSQL. Support Kafka as a source and sink for both YSQL and YCQL.

Issue #1808 — Support for transactions in asynchronous xCluster replication so that transactions are applied atomically on the consumer cluster.

Join the YugabyteDB community

We know that development teams working on fast moving projects with tight timelines need to get answers to their questions quickly from the folks who are actively developing YugabyteDB. They also want to exchange learnings with experienced community members who have “been there and done that.”

YugabyteDB Community Slack is the community’s “center of gravity” on the Internet for helping make everyone’s project a success. Community Slack is almost 2200 members strong. Join the conversation, our community is standing by!

Become a YugabyteDB contributor

We recently crossed 130 contributors to the YugabyteDB project on GitHub who have helped make the core database software more functional, faster, and more reliable. Are you ready to make a contribution? Check out our contributors documentation on how to get started or join the #contributors channel on YugabyteDB Community Slack and introduce yourself!