134
Это
распределенная база данных, она написана на языке Java. По
организации модели данных Cassandra похожа на BigTable и Hbase, однако
терминология и детали несколько различаются. Здесь база данных называется
«пространством ключей» (keyspace) и содержит семейства столбцов (column
family), которые являются аналогами таблиц и служат
контейнерами для строк
(рядов, rows), идентифицируемых уникальными ключами (row key). Строки
состоят из столбцов (column) или супер-столбцов (super column). Столбец
является минимальной единицей данных в Cassandra и состоит из имени, значения
и
временной
метки.
Данная
система
обеспечивает
горизонтальную
масштабируемость на большом количестве равноправных недорогих узлов,
поддерживает
как строгую согласованность, так и согласованность в конечном
счете. Параметры репликации W и Rмогут задаваться на уровне запросов к базе
данных. Данные сегментируются по узлам, используя консистентное
хеширование. Согласно [80] операции модификации данных атомарны на уровне
строк таблицы (т.е. записей).
Также
как в MongoDB, конфликты разрешаются только с использованием
временной метки.
3. Riak.
Riak – мощная система управления данными типа «ключ-значение» с
открытым исходным кодом, она написана на языке Erlang. Значительное влияние
на архитектуру Riak оказала система Amazon Dynamo. В Riak используется
консистентное хеширование, механизмы автоматического восстановления реплик
после
сбоя.
Такая
архитектура
обеспечивает
отказоустойчивость,
децентрализацию и легкое добавление новых физических узлов. На каждом
физическом узле может работать
несколько виртуальных узлов, что позволяет
сбалансировать нагрузку; параметры репликации могут быть гибко настроены как
на уровне сегмента, так и на уровне отдельного запроса к базе данных. Riak
использует механизм ведения версий записи базы данных (Vector Clock) для
реализации параллельного доступа к этой записи (опционально). Конфликты
обновлений могут разрешаться
либо по временной метке, либо на уровне
135
приложения (в этом случае приложению возвращаются конфликтующие версии
объектов, т.е. записей БД). Поддерживаются триггеры (называемые «commit
hooks»), позволяющие запускать функции на JavaScript или Erlang перед или
после модификации объекта.
Ключи в Riak объединяются в сегменты, что позволяет задавать параметры
репликации, список триггеров, метод разрешения конфликтов на уровне сегмента.
Таким образом, объект однозначно идентифицируется парой (сегмент, ключ).
Каждый
объект содержит метаданные, в том числе поддерживаются ссылки на
другие объекты. Riak поддерживает вторичные индексы и технологию MapReduce
для реализации более сложных запросов. Функциональность Riak делает эту
систему близкой к документным базам данных NoSQL. Подсистема хранения
данных в Riak
является подключаемым модулем, что позволяет использовать
различные системы хранения для разных задач. Согласно [81] Riak используется в
достаточно большом количестве проектов.
Исследуемый аналитический модуль должен обеспечивать горизонтальную
масштабируемость, отказоустойчивость, допускать конкурентное обновление
записи. Также требуется обеспечивать разные уровни согласованности для
разных
сегментов данных. Исходя из перечисленных требований, дальнейший проект
аналитического модуля рассматривается для базы данных NoSQL Riak.
Do'stlaringiz bilan baham: