Предисловие на русском языке: Новая система уже используется в компании Baidu для обработки БД, расширяющейся примерно на два миллиарда записей в день. CockroachDB — достаточно молодая реляционная СУБД с открытым кодом (лицензия Apache 2.0), изначально созданная быть распределённой (с горизонтальным масштабированием «из коробки») и отказоустойчивой. Её авторы из компании Cockroach Labs, созданной в 2015 году, задаются целью «совместить богатство функциональности SQL с горизонтальной доступностью, привычной для NoSQL-решений».
Код проекта написан на языке Go и распространяется под лицензией Apache 2.0. CockroachDB разработан под впечатлением от технологий Google Spanner и F1, но в отличие от них является полностью открытым продуктом.
На низком уровне данные хранятся в формате RocksDB (вариант LevelDB) в виде связок ключ/значение с разбивкой на сегменты, охватывающие определённый диапазон данных (по умолчанию размер сегмента - 64MB). После заполнения сегмента данные разбиваются на два новых сегмента, каждый из которых охватывает более узкий диапазон значений, и этот процесс разбиения производится непрерывно. При наличии нескольких узлов образуемые новые сегменты автоматически распределяются на узлы, на которых больше свободных ресурсов. Ребалансировка производится с использованием P2P-протокола gossip, который помогает поддерживать информацию о доступных адресах узлов и состоянии их ресурсов.
Для обеспечения отказоустойчивости данные реплицируются на несколько узлов, на основе которых строится кластер без единой точки отказа, способный работать в режиме multi-active. Для обеспечения непротиворечивости реплик при записи используется метод достижения консенсуса на основе алгоритма Raft. Для обеспечения непротиворечивости операций чтения используется собственный алгоритм синхронизации на основе временных меток. В рамках одной транзакции могут охватываться данные с разных узлов. При репликации данных учитывается топология кластера - дубликаты создаются с учётом обеспечения резервирования разных серверов, стоек и ЦОД.
Ранее уже опубликованный код остаётся под лицензией Apache 2.0 и доступен для создания форков. Кроме того, после истечения трёх лет с момента выпуска, код будет выводится из под действия BSL и распространяться под обычной лицензией Apache 2.0.
Как и в случае с перелицензированием MongoDB, модулей Redis и TimescaleDB причиной перехода на несвободную лицензию является борьба с паразитированием провайдеров облачных сервисов, которые создают производные коммерческие продукты и занимаются перепродажей открытых СУБД в виде облачных сервисов, но не принимают участия в жизни сообщества и не помогают в разработке. Создаётся ситуация когда выгоду получают ничем не связанные с проектом облачные провайдеры, перепродающие готовые открытые решения, а непосредственно разработчики остаются ни с чем.
Install the Helm client (version 3.0 or higher) and add the cockroachdb chart repository:
CockroachDB is a cloud-native SQL database for building global, scalable cloud services that survive disasters.
- What is CockroachDB?
- Docs
- Quickstart
- Client Drivers
- Deployment
- Need Help?
- Contributing
- Design
- Comparison with Other Databases
- See Also
CockroachDB is a distributed SQL database built on a transactional and strongly-consistent key-value store. It scales horizontally; survives disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports strongly-consistent ACID transactions; and provides a familiar SQL API for structuring, manipulating, and querying data.
For more details, see our FAQ or architecture document.
Here’s a quick explainer video:
CockroachDB is production-ready. See our Roadmap for a list of features planned or in development.
For guidance on installation, development, deployment, and administration, see our User Documentation.
-
Start a local cluster and talk to it via the built-in SQL client.
-
Use a PostgreSQL-compatible driver or ORM to build an app with CockroachDB.
-
Explore core features, such as data replication, automatic rebalancing, and fault tolerance and recovery.
CockroachDB supports the PostgreSQL wire protocol, so you can use any available PostgreSQL client drivers to connect from various languages.
-
For recommended drivers that we've tested, see Install Client Drivers.
-
For tutorials using these drivers, as well as supported ORMs, see Build an App with CockroachDB.
- Test Deployment - Easiest way to test an insecure, multi-node CockroachDB cluster.
- Production Deployments
- Manual - Steps to deploy a CockroachDB cluster manually on multiple machines.
- Cloud - Guides for deploying CockroachDB on various cloud platforms.
- Orchestration - Guides for running CockroachDB with popular open-source orchestration systems.
-
Troubleshooting documentation - Learn how to troubleshoot common errors, cluster and node setup, and SQL query behavior, and how to use debug and error logs.
-
CockroachDB Forum and Stack Overflow - Ask questions, find answers, and help other users.
-
For filing bugs, suggesting improvements, or requesting new features, help us out by opening an issue.
We're an open source project and welcome contributions. See our Contributing Guide for more details.
Engineering discussion takes place on our public mailing list, cockroach-db@googlegroups.com.
For an in-depth discussion of the CockroachDB architecture, see our Architecture Guide.
For the original design motivation, see our design doc.
To see how key features of CockroachDB stack up against other databases, visit the CockroachDB in Comparison page on our website.
- Tech Talks by CockroachDB founders and engineers
- The CockroachDB User documentation
- The CockroachDB Blog
- Key Design documents: