The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Компания Bloomberg открыла код распределённой СУБД Comdb2"
Отправлено opennews, 10-Июн-17 11:43 
Компания Bloomberg перевела СУБД Comdb2 (https://bloomberg.github.io/comdb2/) в разряд открытых проектов. Comdb2 относится к категории реляционных кластерных СУБД, позволяющих развернуть БД поверх нескольких узлов кластера и обеспечивающих высокий уровень отказоустойчивости и производительности. Ключевой задачей Comdb2 является предоставление простой и надёжной распределённой системы, позволяющей обратиться к данным или внести изменение, подключившись к любому узлу, и получить автоматическую синхронизацию изменений на всех остальных узлах кластера, в том числе территориально разделённых. Разработка СУБД Comdb2 ведётся компанией Bloomberg c 2004 года. Код написан на языке Си и распространяется (https://github.com/bloomberg/comdb2) под лицензией Apache 2.0.


Comdb2 предоставляет достаточно простую и ясную логику организации работы кластера: достаточно запустить Comdb2 на одном узле, создать БД и определить в настройках (простой файл со списком хостов) на каких ещё узлах обеспечить хранение данной БД. После чего можно запустить дополнительные узлы, при помощи команды copycomdb2 перенести на них данные  и включить их в распределённое хранилище. В дальнейшем, для взаимодействия с БД можно обращаться к любому из узлов кластера, при этом изменения будут реплицированы на остальные узлы.


Узлы могут группироваться и связываться с другими группами узлов, размещённых в других центрах обработки данных. В каждой группе узлов автоматически выбирается главный узел репликации, который берёт на себя функции распределения потоков данных для синхронизации состояния остальных узлов. Репликация по умолчанию выполнятся в синхронном режиме, т.е. до получения подтверждения, что все узлы получили изменения, транзакция не закрывается, но если операция INSERT успешно завершена, то изменения сразу становятся видны для запросов в любых частях кластера.

Для обеспечения непротиворечивости изменения данных в   Comdb2 применяется (https://bloomberg.github.io/comdb2/transaction_model.html) техника обеспечения параллелизма OCC (Optimistic Concurrency Control (https://en.wikipedia.org/wiki/Optimistic_concurrency_control)), предоставляющая несколько уровней изоляции транзакций, включая снапшоты и сериализируемые транзакции. Транзакции, осуществляющие чтение и запись данных, могут выполняться на всех узлах, при этом клиентская библиотека обеспечивает свободу выбора узла для подключения (клиент подключается к ближайшему доступному узлу, а в случае проблем может в прозрачном режиме переподключиться к другому узлу).

Comdb2 обеспечивает гарантированную целостность и высокую доступность данных, но ценой ограниченной масштабируемости при выполнении операций записи (Comdb2 практически линейно масштабируется на чтение, но скорость выполнения операций записи сильно зависит от числа узлов).  Тесты производительности демонстрируют для 6-узлового кластера способность обработать около 2000 операций записи в секунду и 2 млн операций чтения в секунду.


Comdb2 поддерживает диалект языка SQL очень похожий (https://bloomberg.github.io/comdb2/sql.html) на SQLite так как для разбора и планирования запросов применяются оригинальные парсер и планировщик от проекта SQLite. На дисковом уровне данные таблиц хранятся в сильно модифицированном представлении BerkeleyDB 4.2. Возможно создание хранимых процедур на языке Lua. Помимо реляционной модели доступа к данным СУБД также поддерживает и модель "публикация/подписка" (publish/subscribe), которая может комбинироваться с триггерами.

URL: https://news.ycombinator.com/item?id=14526052
Новость: http://www.opennet.ru/opennews/art.shtml?num=46679

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру