Skip to content

Реверс инжиниринг архитектуры CockroachDB, cloud-native SQL database for building global, scalable cloud services

License

Notifications You must be signed in to change notification settings

gridgentoo/cockroach

Repository files navigation

Предисловие на русском языке: Новая система уже используется в компании 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 причиной перехода на несвободную лицензию является борьба с паразитированием провайдеров облачных сервисов, которые создают производные коммерческие продукты и занимаются перепродажей открытых СУБД в виде облачных сервисов, но не принимают участия в жизни сообщества и не помогают в разработке. Создаётся ситуация когда выгоду получают ничем не связанные с проектом облачные провайдеры, перепродающие готовые открытые решения, а непосредственно разработчики остаются ни с чем.

CockroachDB

Install the Helm client (version 3.0 or higher) and add the cockroachdb chart repository:

https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-kubernetes.html#step-2-start-cockroachdb.

CockroachDB is a cloud-native SQL database for building global, scalable cloud services that survive disasters.

TeamCity CI GoDoc

What is CockroachDB?

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:

Status

CockroachDB is production-ready. See our Roadmap for a list of features planned or in development.

Docs

For guidance on installation, development, deployment, and administration, see our User Documentation.

Quickstart

  1. Install CockroachDB.

  2. Start a local cluster and talk to it via the built-in SQL client.

  3. Learn more about CockroachDB SQL.

  4. Use a PostgreSQL-compatible driver or ORM to build an app with CockroachDB.

  5. Explore core features, such as data replication, automatic rebalancing, and fault tolerance and recovery.

Client Drivers

CockroachDB supports the PostgreSQL wire protocol, so you can use any available PostgreSQL client drivers to connect from various languages.

Deployment

  • 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.

Need Help?

Contributing

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.

Design

For an in-depth discussion of the CockroachDB architecture, see our Architecture Guide.

For the original design motivation, see our design doc.

Comparison with Other Databases

To see how key features of CockroachDB stack up against other databases, visit the CockroachDB in Comparison page on our website.

See Also

About

Реверс инжиниринг архитектуры CockroachDB, cloud-native SQL database for building global, scalable cloud services

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published