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.
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.
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.
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.
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.
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.
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.
Who uses YDB?
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 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 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 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.
Could you briefly explain YDB to me in a video?
Sure, here you go →
How to get started?
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.