explaingit

ydb-platform/ydb

4,722C++Audience · ops devopsComplexity · 5/5Setup · hard

TLDR

YDB is an open-source distributed database that handles both transactional row storage and analytical column storage on the same cluster, with multi-datacenter fault tolerance and PostgreSQL-compatible queries.

Mindmap

mindmap
  root((YDB))
    What it does
      Distributed database
      ACID transactions
    Storage modes
      Row tables
      Column tables
      Topic queues
    Deployment
      Kubernetes
      Ansible
      Bare metal
    Compatibility
      PostgreSQL
      Apache Kafka
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Deploy a distributed database cluster that survives a full datacenter outage without losing writes.

USE CASE 2

Run both transactional and analytical queries on the same YDB cluster without separate systems.

USE CASE 3

Connect existing PostgreSQL tools and Apache Kafka clients to YDB without rewriting integrations.

USE CASE 4

Scale storage and compute independently as data volume and query load grow at different rates.

Tech stack

C++KubernetesAnsible

Getting it running

Difficulty · hard Time to first run · 1day+

Requires multi-server setup with at least 8 GB RAM per node, full fault tolerance needs three separate datacenters.

License not specified in the available explanation, but the project is open source.

In plain English

YDB is an open-source distributed database written in C++. It is designed for applications that need to store and query large amounts of data across many servers at once, while still guaranteeing that every write is consistent and that groups of related changes either all succeed or all fail together. Those guarantees are what the term ACID transactions refers to. YDB supports two kinds of data tables side by side: row-oriented tables, which are good for transactional workloads where you look up or update individual records, and column-oriented tables, which are better for analytical queries that scan and aggregate large numbers of rows. It also supports persistent message queues called topics, for moving data between systems in a streaming fashion. The queue system is compatible with Apache Kafka's protocol, and the database query language is compatible with PostgreSQL, so existing tools built for those systems can connect to YDB. The database is built to survive failures automatically. It can be spread across three separate datacenters, and if one datacenter goes offline completely, the cluster keeps accepting both reads and writes. After a hardware failure, it restores data redundancy on its own without manual intervention. Storage and compute scale independently, so you can add more storage nodes without adding compute nodes, and vice versa. Real production deployments described in the README include clusters with over ten thousand nodes, petabytes of stored data, and millions of transactions per second. YDB can be deployed on bare metal or virtual machines using Ansible, on containers using Kubernetes, or set up manually. It supports running multiple separate databases on one shared cluster, and also a serverless mode where compute resources are shared. The minimum requirement is an x86 64-bit machine with at least 8 GB of RAM. Development builds are tested on Ubuntu Linux, macOS, and Windows.

Copy-paste prompts

Prompt 1
I want to deploy a 3-node YDB cluster using Docker for local development. Write the docker-compose.yml and show me how to connect and run a basic SQL query.
Prompt 2
How do I create a row table and a column table in YDB and run a query that joins them? Show the SQL syntax.
Prompt 3
I have an existing application using PostgreSQL. How do I point it at YDB instead and what compatibility limitations should I expect?
Prompt 4
Set up a YDB topic message queue and show me how to publish and consume messages using the Kafka-compatible protocol.
Prompt 5
Using Ansible, walk me through the minimal steps to deploy a fault-tolerant YDB cluster across three datacenters from the ydb-platform/ydb repository.
Open on GitHub → Explain another repo

← ydb-platform on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.