The YugaByte Database Blog

Thoughts on open source, cloud native and distributed databases

Polyglot Persistence vs. Multi-API/Multi-Model: Which One For Multi-Cloud?

Modern app architectures rely on data with different models and access patterns. Polyglot persistence, first introduced in 2011, states that each such data model should be powered by an independent database that is purpose-built for that model. The original intent was to look beyond relational/SQL databases to the emerging world of NoSQL.

Polyglot Persistence in Action at an E-Commerce App (Source: Martin Fowler)

The Messy Reality of Polyglot Persistence

Polyglot persistence is not free of costs — it leads to increased complexity across the board.

Read More

A Busy Developer’s Guide to Database Storage Engines — The Basics

When evaluating operational databases, developers building distributed cloud apps tend to focus on data modeling flexibility, consistency guarantees, linear scalability, fault tolerance, low latency, high throughput and easy manageability as high priority concerns. However, it is essential to have a good understanding of the underlying storage engine to reason about how the database actually delivers on these core promises.

Read More

A Busy Developer’s Guide to Database Storage Engines — Advanced Topics

In the first post of this series, we learnt about the B-Tree vs LSM approach to index management in operational databases. While the indexing algorithm plays a fundamental role in determining the type of storage engine needed, advanced considerations highlighted below are equally important to take into account.

Consistency, Transactions & Concurrency Control

Monolithic databases,

Read More

Docker, Kubernetes and the Rise of Cloud Native Databases

Containerized Stateful Services Are Here

Results from the 2018 Kubernetes Application Usage Survey should put to rest concerns enterprise users have had around the viability of Docker containers and Kubernetes orchestration for running stateful services such as databases and message queues. Its exciting to see that nearly 40% of respondents are running databases (SQL and/or NoSQL) using Kubernetes.

Read More

Orchestrating Stateful Apps with Kubernetes StatefulSets

Kubernetes, the open source container orchestration engine that originated from Google’s Borg project, has seen some of the most explosive growth ever recorded in an open source project. The complete software development lifecycle involving stateless apps can now be executed in a more consistent, efficient and resilient manner than ever before. However, the same is not true for stateful apps — containers are inherently stateless and Kubernetes did not do anything special in the initial days to change that.

Read More

Overcoming MongoDB Sharding and Replication Limitations with YugaByte DB

A few of our early users have chosen to build their new cloud applications on YugaByte DB even though their current primary datastore is MongoDB. Starting with the v3.4 release in Nov 2016, MongoDB has made improvements in its sharding and replication architecture that has allowed it to be re-classified as a Consistent and Partition-tolerant (CP) database and move away from its Available and Partition-tolerant (AP) origins.

Read More

Practical Tradeoffs in Google Cloud Spanner, Azure Cosmos DB and YugaByte DB

The famed CAP Theorem has been a source of much debate among distributed systems engineers. Those of us building distributed databases are often asked how we deal with it. In this post, we dive deeper into the consistency-availability tradeoff imposed by CAP which is only applicable during failure conditions. We also highlight the lesser-known-but-equally-important consistency-latency tradeoff imposed by the PACELC Theorem that extends CAP to normal operations.

Read More