YDB — an open source Distributed SQL Database
Телеграм -> @oscave
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.
How does YDB’s query performance compare against other Distributed SQL DBMS?
YCSB is the most well-known key-value benchmark suite. We’ve prepared a performance study, comparing the key-value performance of YDB, CockroachDB, and YugabyteDB.

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.
Cache with SQL interface
Low response times and scalability allow YDB to be used simultaneously as an online database and a precomputed cache. SQL access significantly increases usability and enables operational analytics on data in the cache. Tour operator and travel aggregator websites, for example, can use YDB to cache flight or tour search results, as well as recalculate prices and check seasonal availability.
Centralized inventory tracking system
YDB ensures strong transaction consistency. This allows you to provide a consistent view of inventory in thousands of warehouses and retail facilities, and makes YDB the right choice for E-commerce, transport logistics, and warehousing applications.
Internet of Things (IoT) Ecosystem
With automatic sharding support, YDB lets you handle data streams from a wide range of devices: the load profile used in IoT projects.
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.
How can I stay in touch?
GitHub
Blog
Discord
X
YouTube
Telegram