YugabyteDB 2.15: Enable Developers to Build Quicker and Ship Faster
As a developer, your time is extremely valuable. We try to remember that every day as developers power Yugabyte. That means we deliver the most developer-friendly database to make your job easier and your career more successful. And YugabyteDB 2.15, our latest preview release, continues that commitment
This release contains several new enhancements to help you onboard rapidly and leverage familiar, proven capabilities and tools. With the new release, you can reduce your time-to-market for new innovations by eliminating those time-consuming projects to fix nagging issues in your legacy database.
YugabyteDB 2.15 delivers the following key new features to support greater developer productivity:
- Support for READ_COMMITTED Isolation with Pessimistic Locking
- New Webhook and Cloud Storage Sinks for CDC
- PostgreSQL new features such as Materialized Views and CREATE LANGUAGE
- Ecosystem Expansion with support for Prisma, Django and GORM
- Cloud APIs for YugabyteDB Managed
- Multi-Region clusters in YugabyteDB Managed
- Sign-on with social logins
Now, let’s explore each of these features in a lot more detail…
Based on feedback from our passionate customers, we now natively support our third isolation level (READ_COMMITTED). This makes YugabyteDB the industry’s first and only distributed SQL database to offer all three Postgres isolation levels. For those new to isolation levels, they give you the guarantee of what data a transaction can see when it is running in parallel with other transactions. For applications with lots of concurrent transactions, then the strictest isolation level (SERIALIZABLE) doesn’t always make the most sense.
While a slightly weaker level of isolation than the others, READ COMMITTED is the default isolation level for many databases, including PostgreSQL. But being what most people use, the new support provides a safe, seamless path to a modern, distributed data layer. And maybe more important to you as a developer, this isolation level makes application building without handling restarts and failure cases much easier.
With pessimistic locking, a transaction attempting to read currently-changing data gets blocked until the transaction changing the data releases the lock. A transaction running under this isolation level issues shared locks, but releases row locks after reading a row.
When combined with pessimistic locking, you can enjoy several key advantages:
- Simplify application and conflict handling. By completely preventing conflicts from occurring, you don’t have to deal with the situation where you have a conflict.
- Increase performance for many applications. By preventing conflicts and pushing the responsibility to the application to handle, you can deliver the best performance in high-concurrency environments where the chance of having conflicts is high.
- No application rewriting to include client-side retry handling.
- Support longer running operations that increase the probability of transaction conflicts.
For more details, look at this great set of tests for transaction isolation anomalies by Martin Kleppmann.
In the YugabyteDB version 2.13, we announced YugabyteDB’s distributed Change Data Capture (CDC) to help you build seamless event-driven data architectures. CDC allows multiple downstream apps and services to consume the continuous and never-ending stream(s) of changes to data in YugabyteDB. Streams scale to any YugabyteDB cluster independent of its size and impact production traffic as little as possible.
In addition to the existing Kafka Sink, with version 2.15 you can now stream data updates to any https endpoint using a new webhook sink and cloud storage sink.
YugabyteDB 2.15 supports a new Cloud Storage Sink to stream events to Amazon S3. The cloud storage S3 Sink only supports create events in the CDC Stream. With this sink users will be able to stream row-level changes to Snowflake, an online analytical processing (OLAP) database. Every change to a watched row emits a record in a JSON format. Please follow the documentation to understand configuration and how to use this Sink.
YugabyteDB 2.15 also supports a new sink for HTTP (Webhook) to deliver messages to any HTTP endpoint. The webhook sink currently supports HTTP and JSON output format. Please follow the documentation to understand configuration and how to use this Sink.
With this release, you can continue to enjoy the most-PostgreSQL compatible distributed SQL database, with even more features supported. In addition to the READ_COMMITTED isolation level described earlier, version 2.15 also includes GA support for materialized views. This feature was previously released in beta and supported for new language extensions with CREATE LANGUAGE.
A materialized view is a pre-computed data set derived from a query specification and stored for later use. Many applications need to precompute (i.e., materialize) queries over data in order to deliver faster queries and increase stability, at the cost of extra storage.
As a simple example, imagine we have a mailbox of messages for each user along with statistics about the mailbox messages. For read-mostly workload, it is more efficient to materialize a count of unread messages rather than scan all messages every time a user accesses the mailbox. Because the data is pre-computed, querying a materialized view directly is faster than executing a query against the base table of the view. They can also significantly improve the performance of workloads that have the characteristic of common and repeated queries.
Materialized views recompute in the background when the base tables change. Therefore, any incremental data changes from the base tables are automatically added to the materialized views. Materialized views return fresh data. If changes to base tables might invalidate the materialized view, then data reads directly from the base tables.
Please refer to documentation on how to use materialized views.
A database is not only defined by its performance and out of the box features, but also its ability to support bespoke, additional user-specific functionality. To support such options, PostgreSQL provides a pluggable architecture that allows you to install extensions.
One of the common types of extensions are new language extensions. PostgreSQL supports many procedural languages, which can write user defined functions or stored procedures. But there are four that are readily available as part of the standard PostgreSQL distribution: PL/pgSQL, PL/Tcl, PL/Perl, PL/Python. There are a number more that are available as a result of PostgreSQL being so highly extensible.
In order to create these language extensions, YugabyteDB 2.15 adds support for CREATE LANGUAGE DDL, which registers a new procedural language with YugabyteDB. Subsequently, this new language defines functions and procedures. It effectively associates the language name with handler function(s) that are responsible for executing functions written in the language.
When building modern web applications, as a developer you often find data modeling and data access to be productivity bottlenecks. YugabyteDB 2.15 has several new enhancements and capabilities to help you accelerate and leverage familiar, proven ecosystem tools.
Using Prisma with YugabyteDB is, for the most part, the same as using Prisma with any other relational database such as PostgreSQL. Rather than moving towards a schema-less database solution, many find using an ORM (object-relational mapping) tool with SQL to be their preferred option. The Node.js community has long been supportive of the Sequelize ORM, with Prisma being a newer option for those looking to model, migrate, and query their data. When using Prisma with YugabyteDB, you still have access to Prisma’s features such as:
- Modeling their database with Prisma Schema Language (PSL)
- Introspecting their database to work with existing databases
- Migrations to manage changes to their database schema using Prisma Migrate
- Type safe interactions within their application code using Prisma Client
The magic behind Prisma with YugabyteDB is that you now have access to the scalable infrastructure of a distributed SQL database without having to be an expert in hosting and scaling databases. YugabyteDB handles that piece of things so you can focus on building your product rather than spending time on operational overhead.
YugabyteDB’s online schema changes paired with Prisma Migrate, gives you a very smooth workflow for managing your schema without your larger team having to worry about how those changes propagate.
Get acclimated with Prisma support for YugabyteDB by Building a Simple Application with YugabyteDB and Prisma
Django includes a full-featured ORM that simplifies interactions with a database—it’s one of the reasons it has become one of the most popular web frameworks. Even so, you’re still left to manage scale yourself, and ensure the database is resilient and always on. That can be really hard to do with common Django databases like Postgres, SQLite, and MySQL. And that’s why today, we’re excited to announce a new YugabyteDB backend for the Django ORM.
Using YugabyteDB and Django gives you the ease of writing in Python while getting all the benefits of an open source, distributed SQL database. YugabyteDB shards automatically, is naturally resilient, and is highly available.
GORM is a developer-friendly ORM library for dealing with relational databases–including YugabyteDB. The official support of GORM enables Go developers to access the power of SQL with our favorite programming language. With GORM for YugabyteDB, Gophers can easily manage database interactions and operations, all in one place.
Another key tool for you as a developer is YugabyteDB Managed, our fully-managed database-as-a-service (DBaaS) offering where you can leave the day-to-day management to us and in minutes access a live, ready-to-use cluster. With YugabyteDB 2.15, we are making YugabyteDB Managed that much more attractive to you and other developers with an all new REST API, available today as a tech preview.
Embrace automation and Infrastructure-as-Code tools with this new API, which lets you create and manage clusters programmatically. With the API, you can automate actions such as pause or resume a cluster during windows when they are not in use, scale clusters up and down based on a schedule, pull information and create usage reports, and integrate with third-party tools.
With a few clicks, easily configure and deploy a multi-region database in Yugabyte’s fully-managed DBaaS offering. In addition to single-region clusters, you can now create clusters in YugabyteDB Managed that replicate data across multiple cloud regions and can tolerate region-level failures. This provides better availability for your data and a greater peace of mind. This feature is currently in preview with more enhancements on the way.
Along with making multi-region deployments simple, we are also making it easier to onboard YugabyteDB Managed with new built-in guided tutorials. With the new tutorials, you can easily explore postgreSQL features supported by YugabyteDB, execute commands with integrated Cloud Shell, and run sample apps in the programming language of your choice.
Sign-up for YugabyteDB Managed today, and we’ll guide you through getting set up and starting with YugabyteDB.
Speaking of signing up, don’t worry about creating a new password or completing another registration form as we have introduced single sign-on using existing login credentials from trusted social platforms. Signup and login into YugabyteDB Managed using your existing social accounts from Google, GitHub or LinkedIn. If you already have an account, you can also link your social account with an existing account in YugabyteDB Managed as an additional login method. More details here.
We’re thrilled to be able to deliver these enterprise-grade features in the newest version of our flagship product – YugabyteDB 2.15.
We invite you to learn more and try it out:
- YugabyteDB 2.15 is available now in YugabyteDB Managed or to download now! Installing the release just takes a few minutes.
- Join the YugabyteDB Slack Community for interactions with the broader YugabyteDB community and real-time discussions with our engineering teams.
Finally, register for our 4th annual Distributed SQL Summit taking place in September.
NOTE: Following YugabyteDB release versioning standards, YugabyteDB 2.15 is a preview release. Many of these features are now generally available in our latest stable release, YugabyteDB 2.16.