Start Now

11 Things You Wish You Knew Before Starting with DynamoDB

DynamoDB is a fully managed NoSQL database offered by Amazon Web Services. While it works great for smaller scale applications, the limitations it poses in the context of larger scale applications are not well understood. This post aims to help developers and operations engineers understand the precise strengths and weaknesses of DynamoDB, especially when it powers a complex large-scale application.

The Good

1. Data Modeling

DynamoDB supports a document oriented data model.

Read more

DynamoDB vs MongoDB vs Cassandra for Fast Growing Geo-Distributed Apps

Amazon DynamoDB is a popular NoSQL database choice for mid-to-large enterprises. In this post, we look beyond Amazon’s marketing claims to explore how well DynamoDB satisfies the core technical requirements of fast growing geo-distributed apps with low latency reads, a common use case found in today’s enterprises. We examine the development, operational and financial consequences of working around the limitations of DynamoDB when attempting to “force-fit” for this use case. Finally, we compare and contrast alternatives such as MongoDB,

Read more

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

Editor’s note – This is the first part of a two-part series on database storage engines:

When evaluating operational databases, developers building distributed cloud applications tend to focus on data modeling flexibility, consistency guarantees, linear scalability,

Read more

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

In the first post of this two-part series, we learned 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, which are primarily relational/SQL in nature, support strong consistency and 

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. This number will continue to grow in the months ahead.

SQL and NoSQL Databases on Kubernetes (source: Kubernetes Application Survey,

Read more

Yes We Can! Distributed ACID Transactions with High Performance

ACID transactions are a fundamental building block when developing business-critical, user-facing applications. They simplify the complex task of ensuring data integrity while supporting highly concurrent operations. While they are taken for granted in monolithic SQL/relational databases, distributed NoSQL/non-relational databases either forsake them completely or support only a highly restrictive single-row flavor (see sections below). This loss of ACID properties is usually justified with a gain in performance (measured in terms of low latency and/or high throughput).

Read more

Overcoming MongoDB Sharding and Replication Limitations with YugabyteDB

A few of our early users have chosen to build their new cloud applications on YugabyteDB 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. However, significant limitations remain that make it unsuitable for latency-sensitive,

Read more

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

Updated April 2019.

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

Building a Strongly Consistent Cassandra with Better Performance

In an earlier blog on database consistency, we had a detailed discussion on the risks and challenges applications face in dealing with eventually consistent NoSQL databases. We also dispelled the myth that eventually consistent DBs perform better than strongly consistent DBs. In this blog, we will look more closely into how YugabyteDB provides strong consistency while outperforming an eventually consistent DB like Apache Cassandra. Note that YugabyteDB retains drop-in compatibility with the Cassandra Query Language (CQL) API.

Read more

Facebook’s User DB — Is it SQL or NoSQL?

Updated March 2019.

Ever wondered which database Facebook (FB) uses to store the profiles of its 2.3B+ users? Is it SQL or NoSQL? How has FB database architecture evolved over the last 15+ years? As an engineer in FB database infrastructure team from 2007 to 2013, I had a front row seat in witnessing this evolution. There are invaluable lessons to be learned by better understanding the database evolution at the world’s largest social network,

Read more

Get started in any cloud, container or data center