Новости и события » Hi-Tech » Компания Bloomberg открыла код распределенной СУБД Comdb2

Компания Bloomberg открыла код распределенной СУБД Comdb2

Компания Bloomberg открыла код распределенной СУБД Comdb2

Компания Bloomberg перевела СУБД Comdb2 в разряд открытых проектов. Comdb2 относится к категории реляционных кластерных СУБД, позволяющих развернуть БД поверх нескольких узлов кластера и обеспечивающих высокий уровень отказоустойчивости и производительности. Ключевой задачей Comdb2 является предоставление простой и надежной распределенной системы, позволяющей обратиться к данным или внести изменение, подключившись к любому узлу, и получить автоматическую синхронизацию изменений на всех остальных узлах кластера, в том числе территориально разделенных. Разработка СУБД Comdb2 ведется компанией Bloomberg c 2004 года. Код написан на языке Си и распространяется под лицензией Apache 2.0.

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

Для обеспечения непротиворечивости изменения данных в Comdb2 применяется техника обеспечения параллелизма OCC (Optimistic Concurrency Control), предоставляющая несколько уровней изоляции транзакций, включая снапшоты и сериализируемые транзакции. Транзакции, осуществляющие чтение и запись данных, могут выполняться на всех узлах, при этом клиентская библиотека обеспечивает свободу выбора узла для подключения (клиент подключается к ближайшему доступному узлу, а в случае проблем может в прозрачном режиме переподключиться к другому узлу).

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

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

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


Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх