YDB background

YDB

YDB is a versatile open source Distributed SQL Database that combines high availability and scalability with strong consistency and ACID transactions. It accommodates transactional (OLTP), analytical (OLAP), and streaming workloads simultaneously.

What can I do with YDB?

Transactional workloads (OLTP)

Entrust YDB with keeping your application state regardless of how large or frequently modified it is. Handling petabytes of data and millions of transactions per second is not an issue.

Analytical workloads (OLAP)

Build analytical reports based on data you store in YDB with performance comparable to database management systems purpose-built for this use case. No compromises on consistency and availability are necessary.

Streaming workloads

Use the YDB topics feature to reliably send data between your applications or consume change data capture feed from regular tables. Exactly-once and at-least-once semantics are available to choose from.

Why YDB?

True elastic scalability

Add or remove nodes on the fly to easily scale up and down as needed. YDB has separate compute and storage layers, which allows to independently add disk capacity or CPU resources depending on what is scarce under the current workload.

Fault-tolerance

YDB is designed to work in three availability zones, ensuring availability even if the whole availability zone goes offline. It recovers automatically after a disk, server, or data center failure with minimum latency disruptions for applications.

User-friendliness

Working with a YDB cluster feels like working with a limitless single-node DBMS thanks to strong consistency, ACID transactions, high-performance queries, fast data ingestion with a familiar SQL dialect and JSON API support.

Versatility

With support for various kinds of workloads, YDB alone can replace multiple data storage and processing systems or the whole enterprise data ecosystem in a given company.

Open Source

YDB source code is published under the Apache 2.0 license, one of the most permissive true OSS licenses, so there’s no risk of cloud or vendor lock-in.

Compatibility with any environment

YDB can be deployed in Kubernetes, in any cloud environment, or in on-premise datacenters. Local experimentation on a laptop or desktop is also possible.

Performance evaluation of PostgreSQL vs Distributed DBMS

TPC-C is the most well-known OLTP benchmark suite. We’ve prepared a performance study, comparing the performance of PostgreSQL, YDB, and CockroachDB in fault-tolerant configurations.

Read more

Who uses YDB?

Metrika

Metrika is one of the largest web and mobile analytics platforms in the world. It relies on YDB to build user sessions on the fly.

Migrating to YDB allowed Metrika to expand the amount of stored data and query load indefinitely. Now one of their databases contains over 400 TB of data and can withstand loads of over 1,000,000 RPS.

Yandex Market

Yandex Market is one of the largest e-commerce services in the CIS region. Its key functionality, like shopping cart, checkout, and discount, uses YDB to store state.

Choosing YDB as a database management system allowed Market Cart to withstand a hundredfold load spikes while maintaining strict response time guarantees.

Auto.ru

Auto.ru reduced CPU consumption for the Jaeger trace database threefold after moving to YDB, making it possible to write 500,000 traces/sec without sampling.

The successful implementation of YDB as a trace storage proved the applicability and key properties like scalability, fault-tolerance, and strong consistency. As a result, Auto.ru then chose YDB as a relational database for some of their microservices.

Alice

Alice is a voice assistant and a smart home ecosystem. After moving to YDB, the Alice team solved the synchronization issues they had after switching between primary database servers or turning back data centers after maintenance.

With YDB they reduced the amount of database-related toil for their DevOps team, expanded the amount of stored data to hundreds of terabytes and the load to hundreds of thousands of RPS. Moving to YDB made it possible to abandon manual data sharding and obtain strong consistency in a cluster spanning three datacenters.

What are the typical usage scenarios?

Dealing with spiky workloads

YDB’s elasticity allows to quickly change the amount of resources allocated to a database, adjusting the throughput in accordance with the query load. Easily increase or decrease the amount of computing resources needed in line with upcoming events like Black Friday or as the result of your planned marketing campaigns.

Observability data storage

Column-oriented tables in YDB work great for storing logs and metrics, with simple access via SQL interface. Also, low computing resource consumption and scalability make Jaeger trace recording cost-efficient and easy to use.

Document database

Even though YDB uses strict typing, support for the JSON data type and functions expands YDB’s capabilities as a document database.

Could you briefly explain YDB to me in a video?

Sure, here you go →

How to get started?

Docker

Pull the current latest version of the YDB Docker image:

docker pull cr.yandex/yc/yandex-docker-local-ydb:latest

Create a working directory and start the local YDB container from it:

docker run -d --rm --name ydb-local -h localhost \
-p 2135:2135 -p 8765:8765 -p 2136:2136 \
-v $(pwd)/ydb_certs:/ydb_certs -v $(pwd)/ydb_data:/ydb_data \
-e YDB_DEFAULT_LOG_LEVEL=NOTICE \
-e GRPC_TLS_PORT=2135 -e GRPC_PORT=2136 -e MON_PORT=8765 \
cr.yandex/yc/yandex-docker-local-ydb:latest

Go to the Getting started › Self-hosted deploy › Docker in the YDB documentation to get further information.