Первый стабильный выпуск отказоустойчивой СУБД CockroachDB

Материал из Викиновостей, свободного источника новостей

11 мая 2017 года

Состоялся первый стабильный выпуск распределённой СУБД CockroachDB, позволяющей создавать высоконадёжные горизонтально масштабируемые хранилища. При помощи CockroachDB можно развернуть географически распределённые системы, отличающиеся высокой живучестью и не зависящие от сбоев дисков, узлов и даже выхода из строя целых центров обработки данных. Ситуации сбоев обрабатываются автоматически и работа восстанавливается с минимальными задержками. При этом CockroachDB гарантирует целостность ACID-транзакций, предоставляет возможность использования SQL для манипуляции с данными, позволяет вносить изменения в схему хранения на лету, поддерживает индексы и внешние ключи.

CockroachDB разработан под впечатлением от технологий Google Spanner и F1, но в отличие от них является полностью открытым продуктом. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0. Из наиболее подходящих для CockroachDB применений отмечается организация хранения данных приложений, от которых требуется постоянная доступность и целостность данных, а также гибкая масштабируемость (расширение сводится к добавлению (Архивная копия от 19 сентября 2020 на Wayback Machine) новых узлов, которые автоматически включаются в кластер).

CockroachDB предоставляет средства для автоматической репликации, ребалансировки хранилища, обнаружения сбоев и восстановления, при минимальной настройке и обслуживании, что отлично подходит для создания распределённых хранилищ и облачных решений, развёртываемых поверх нескольких центров обработки данных. Система обработки транзакций соответствует требованиям ACID. Обмен данными между узлами производится с использованием шифрования. Аутентификация выполняется на основе SSL-сертификатов. Для клиентов предусмотрена система разделения привилегий(недоступная ссылка). Для приложений предоставляется высокоуровневый SQL API (Архивная копия от 25 октября 2020 на Wayback Machine) (урезанное подмножество SQL(недоступная ссылка)), совместимый с клиентскими драйверами для PostgreSQL.

Из ограничений CockroachDB отмечается плохая пригодность для решений, требующих очень низкого времени отклика при выполнении операций записи и чтения. CockroachDB также плохо адаптирован для нагруженных систем обработки аналитической информации (OLAP), манипулирующих сразу большими срезами данных, и плохо оптимизирован для выполнения сложных SQL-запросов со слиянием нескольких таблиц (JOIN). В версии CockroachDB 1.0 разработчики попытались частично решить проблемы со сложными запросами и представили новый движок распределённого выполнения запросов, допускающий выполнение операций JOIN над данными, распределёнными по разным узлам. Новый движок позволяет добиться линейного ускорения аналитических запросов при добавлении новых узлов в кластер. Новая система уже используется в компании Baidu для обработки БД, расширяющейся примерно на два миллиарда записей в день.

На низком уровне данные хранятся в формате RocksDB (вариант LevelDB) в виде связок ключ/значение с разбивкой на сегменты, охватывающие определённый диапазон данных (по умолчанию размер сегмента - 64MB). После заполнения сегмента данные разбиваются на два новых сегмента, каждый из которых охватывает более узкий диапазон значений, и этот процесс разбиения производится непрерывно. При наличии нескольких узлов образуемые новые сегменты автоматически распределяются на узлы, на которых больше свободных ресурсов. Ребалансировка производится с использованием P2P-протокола gossip, который помогает поддерживать информацию о доступных адресах узлов и состоянии их ресурсов.

Для обеспечения отказоустойчивости данные реплицируются на несколько узлов, на основе которых строится кластер без единой точки отказа, способный работать в режиме multi-active. Для обеспечения непротиворечивости реплик при записи используется метод достижения консенсуса на основе алгоритма Raft. Для обеспечения непротиворечивости операций чтения используется собственный алгоритм(недоступная ссылка) синхронизации на основе временных меток. В рамках одной транзакции могут охватываться данные с разных узлов. При репликации данных учитывается топология кластера - дубликаты создаются с учётом обеспечения резервирования разных серверов, стоек и ЦОД.

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Первый стабильный выпуск отказоустойчивой СУБД CockroachDB», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.