DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Last call! Secure your stack and shape the future! Help dev teams across the globe navigate their software supply chain security challenges.

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workloads.

Releasing software shouldn't be stressful or risky. Learn how to leverage progressive delivery techniques to ensure safer deployments.

Avoid machine learning mistakes and boost model performance! Discover key ML patterns, anti-patterns, data strategies, and more.

Related

  • Seven AWS Data Stores You Can Use To Store and Manage Your Data With Ease
  • Automate Amazon Aurora Global Database Using CloudFormation
  • From Zero to Scale With AWS Serverless
  • Relational DB Migration to S3 Data Lake Via AWS DMS, Part I

Trending

  • The Cypress Edge: Next-Level Testing Strategies for React Developers
  • Unlocking the Potential of Apache Iceberg: A Comprehensive Analysis
  • 5 Subtle Indicators Your Development Environment Is Under Siege
  • A Developer's Guide to Mastering Agentic AI: From Theory to Practice
  1. DZone
  2. Data Engineering
  3. Databases
  4. Navigate Serverless Databases: A Guide to the Right Solution

Navigate Serverless Databases: A Guide to the Right Solution

Explore key considerations when choosing a serverless database. This article compares popular databases to help you make an informed decision.

By 
Xiaoyu Ma user avatar
Xiaoyu Ma
·
Jul. 25, 23 · Tutorial
Likes (5)
Comment
Save
Tweet
Share
8.0K Views

Join the DZone community and get the full member experience.

Join For Free

Serverless architecture, a paradigm that has been around for several years, has been transforming the way we build and deploy applications. In this approach, developers can focus on writing code without worrying about the underlying infrastructure. Instead of managing servers or virtual machines, they can rely on cloud providers to handle the scaling, maintenance, and availability of their applications.

While Serverless architecture has been around for a long time, it is only in recent years that the concept of Serverless databases has gained significant attention. Traditionally, databases, with their stateful and performance-sensitive nature, posed challenges in adopting a Serverless approach. However, the essence of databases is to simplify data management, allowing developers to concentrate on their core business goals. In this context, exploring and understanding Serverless databases can be valuable in the sense of enabling developers. 

So, what should you consider when choosing a Serverless database? Let's delve into the topic by comparing and analyzing popular serverless databases such as TiDB, MongoDB, Amazon Aurora, CockroachDB, and DynamoDB.

Suitability 

When choosing a database, regardless of whether you're using a Serverless architecture or not, it's important to consider its suitability. Should you go for a general-purpose database or a specialized one? While specialized databases can be more convenient and advantageous in specific scenarios, they may not be the only crucial factor for technical teams. Sometimes, you need to balance the complexities introduced by multiple technology stacks, difficulties in talent recruitment, and the costs of operations and development.

Compared to traditional relational databases, NoSQL databases like DynamoDB or MongoDB are often considered to have better scalability and performance due to fewer limitations. However, users may end up paying a high price to compensate for the capabilities they give up with NoSQL. For example, they may need to ensure data consistency on their own and develop custom code for query and computation logic. From this perspective, relational databases like TiDB, Amazon Aurora, or CockroachDB offer more versatility but slightly less flexibility. Moreover, TiDB offers Hybrid Transactional/Analytical Processing (HTAP) capabilities, enabling users to analyze operational data directly without separate ETL processes. This simplifies infrastructure complexity for small to medium-sized users who don't currently require complex data warehouses.

In conclusion, choosing the right database involves a careful evaluation of the trade-offs between specialization and generalization, considering factors such as scalability, performance, complexity, and the specific needs of your project.


Data Model

ACID Transaction

Indexing

HTAP

DynamoDB/MongoDB

Schemaless


Weak


Weak

No


Amazon Aurora / CockroachDB

Mainly Relational Model

Strong


Strong

No

TiDB

Yes

Pay-As-You-Go Pricing Model

One of the core features of Serverless is the pay-as-you-go pricing. Almost all Serverless databases attempt to address a common challenge: how to provision resources economically and efficiently under uncertain workloads. Prioritizing lower costs may mean consuming fewer resources. However, in the event of unexpected spikes in business demand, you may have to compromise user experience and system stability. On the other hand, more generous and secure resource provisioning leads to resource waste and higher costs. Striking a balance between these two styles requires complex and meticulous engineering management. This would divert your focus from the core business.

Furthermore, the Pay-as-you-go billing model has varying implementations in different Serverless products. Most Serverless products offer granular billing based on storage capacity and read/write operations per unit. This is largely possible due to the distributed architecture that allows finer resource scaling. Amazon Aurora Serverless is an exception in this case – it employs a coarser billing model based on Aurora Capacity Units (ACUs), which roughly corresponds to 2GB of memory along with the respective CPU and network bandwidth. Additionally, it cannot scale down to zero ACUs. This can result in significant waste for infrequently accessed data, especially when you need to construct numerous small-scale clusters of this kind.

Moreover, each provider has its own pricing structure. In this regard, TiDB offers more affordable prices compared to others.


Pricing Granularity

Scale to Zero

DynamoDB


Per Query + Storage

Yes


MongoDB

TiDB

CockroachDB

Amazon Aurora

ACU + Storage

No

Scalability

In reality, the concept of Serverless databases inherently implies scalability. From 0 Transactions Per Second (TPS) to millions of TPS, Serverless databases should be able to automatically scale based on the workload. While database providers can use a single large database to handle different workloads, this approach would result in significant waste and higher prices. Therefore, users need to adjust the architecture of Serverless databases based on the actual workload.

In this regard, distributed databases have a clear advantage. Apart from vertical scaling, they rely primarily on horizontal scaling, which provides better scalability since vertical scaling easily reaches its limits. Compared with relational distributed databases, a NoSQL database offers better scalability due to the absence of strict transaction constraints. However, the reality is always more complex. For example, MongoDB's Serverless offering is designed for small-scale users of less than one terabyte. Its dedicated offering requires manual sharding to achieve further scalability. On the other hand, TiDB and CockroachDB support horizontal scaling with auto-sharding, which enables better scalability.

As distributed relational databases, both TiDB and CockroachDB benefit from a storage-computing decoupled design. This enables near real-time scaling of the computing layer. Unlike CockroachDB, TiDB can leverage shared storage at the regional level for rapid and stable storage scaling within a few minutes.

TiDB Serverless Architecture

TiDB Serverless Architecture



Scalability

Horizontal Scalability

DynamoDB 


Very High


Horizontal scalability

MongoDB

Low

Only support data volume < 1TB 

Amazon Aurora 


Low

Write - vertically scalability / Horizontal scalability with limited read and write capacity.

CockroachDB

High

Horizontal scalability + compute-storage decoupled  

TiDB

High


Horizontal scalability + compute-storage decoupled + fast storage scalability via object storage  

Rolling Upgrading

Database upgrades are unavoidable. Traditionally, they often involve downtime or disruptions to business continuity. However, in the Serverless database realm, minimizing or eliminating downtime during upgrades is a critical consideration. This is where distributed architectures excel. Their inherent fault-tolerant design allows for non-disruptive rolling upgrades of individual components without causing downtime. Non-distributed architectures face challenges in achieving non-disruptive upgrades. If we look at the major players, Amazon Aurora Serverless does not support non-disruptive updates, emphasizing the advantages of distributed architectures in this regard.



Rolling Upgrade

DynamoDB


Yes


MongoDB

TiDB

CockroachDB

Amazon Aurora 

No

Connection Model

In traditional application models, developers typically prefer long-lived connections to databases instead of frequent short-lived connections. However, maintaining long-lived connections in Serverless applications is often challenging due to architectural limitations. On the other hand, using the HTTP protocol for data access has made it more convenient. Consequently, many databases now offer HTTP-based access interfaces to facilitate data retrieval and manipulation.


HTTP Data API

DynamoDB


Yes


MongoDB

TiDB

Amazon Aurora 

Yes, for v1 and no for v2. 

CockroachDB

No

Professional Support and Services

Professional support and services are essential to consider when selecting a database, Serverless or not. It is crucial to assess the support provided by the vendors. While I cannot objectively evaluate specific products' support services, it is valuable to consider the vendors' reputation and responsiveness to user needs. For example, many TiDB users have expressed satisfaction with the vendor's support, citing timely assistance and a willingness to incorporate user feedback for rapid product improvements.

Wrapping Up

In conclusion, Serverless databases have emerged as a powerful solution for data management in modern applications. By offloading infrastructure management and enabling scalability, they allow developers to focus on their core business objectives. When choosing a Serverless database, it's crucial to consider various factors such as the applicable range, pricing model, scalability, rolling upgrade capabilities, and the availability of HTTP Data APIs.

Here's a comparison summary of different Serverless databases we have covered in this article:


DynamoDB


MongoDB

TiDB

Amazon Aurora

CockroachDB

Applicable range


Low


Medium

Very High

High

High

Pay-as-you-go pricing 


Fine Granularity

              

Fine Granularity

Fine Granularity

Coarse Granularity

Fine Granularity

Scalability

Very High


Low

High


Low

High

Rolling upgrade

Yes

Yes

Yes

No


Yes

HTTP Data API

Yes

Yes

Yes


Yes, for v1 and no for v2. 


No



It's important to note that this summary table provides a general overview, and the suitability of each database depends on your specific requirements and use case.

By carefully evaluating the characteristics and comparing them to your project's needs, you can make an informed decision and select the most suitable Serverless database to drive the success of your application.

AWS Amazon DynamoDB CockroachDB Database TiDB Aurora (protocol)

Opinions expressed by DZone contributors are their own.

Related

  • Seven AWS Data Stores You Can Use To Store and Manage Your Data With Ease
  • Automate Amazon Aurora Global Database Using CloudFormation
  • From Zero to Scale With AWS Serverless
  • Relational DB Migration to S3 Data Lake Via AWS DMS, Part I

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!