Релиз БД Apache Cassandra 2.0 с поддержкой триггеров и легковесных транзакций

5 сентября 2013 года

Представлен релиз распределённой БД Apache Cassandra 2.0, относящейся к классу noSQL-систем и рассчитанной на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, хранимых в форме ассоциативного массива (хэша). Код проекта написан на языке Java и распространяется в рамках лицензии Apache 2.0.

БД Cassandra объединяет в себе полностью распределённую hash-систему Dynamo, обеспечивающую практически линейную масштабируемость при увеличении объема данных. Cassandra использует модель хранения данных на базе семейства столбцов (ColumnFamily), отличающуюся от систем подобных memcachedb, которые хранят данные только в связке ключ/значение, возможностью организовать хранение хэшей с несколькими уровнями вложенности.

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

Для упрощения взаимодействия с БД поддерживается язык формирования структурированных запросов CQL (Cassandra Query Language), на первый взгляд напоминающий SQL, но существенно урезанный по функциональности. Например, можно выполнять только простейшие запросы SELECT с выборкой по определённому условию, но без поддержки сортировки и группировки. Добавление и обновление данных производится через единое выражение UPDATE, операция INSERT отсутствует (если записи нет, при выполнении UPDATE она создаётся). Из возможностей можно отметить поддержку пространств имён и семейств столбцов, создание индексов через выражение "CREATE INDEX". Драйверы с поддержкой CQL подготовлены для языков Python, Java (JDBC/DBAPI2) и JavaScript (Node.js).

Изначально проект был разработан в недрах компании Facebook и в 2009 году передан под покровительство фонда Apache. Промышленные решения на базе Cassandra, способные обрабатывать тысячи запросов в секунду, развернуты для обеспечения сервисов таких компаний и оргнизаций, как Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Netflix, Sony, Rackspace, Reddit и Twitter. Наиболее крупный кластер серверов, обслуживающих единую БД Cassandra насчитывает более 400 машин и используется для хранения более 300 Тб данных.

Особенности новой версии:

  • Поддержка легковесных транзакций, позволяющих гарантировать порядок выполнения последовательности операций и обеспечить изоляцию, защищающую от возникновения конфликтов при выполнении конкурирующих запросов;
  • Экспериментальная поддержка триггеров, позволяющих вынести выполнение критичного к производительности кода на сторону сервера, ближе к обрабатываемым данным. Пример задания триггера: "CREATE TRIGGER myTrigger ON myTable USING 'org.apache.cassandra.triggers.InvertedIndex'", где обработчик org.apache.cassandra.triggers.InvertedIndex задаётся в виде Java-класса;
  • Расширение языка CQL3 (Cassandra Query Language) в направлении удобства использовании в data-driven-приложениях (отделение данных от логики из обработки в форме бэкенд/фронтэнд) и упрощения миграции с реляционных СУБД.
  • Добавление в выражение SELECT поддержки псевдонимов (alias), задаваемых при помощи ключевого слова "AS", например, " SELECT name AS user_name FROM users;". В блоках "WHERE" и "ORDER BY" псевдонимы не поддерживаются;
  • Возобновлена поддержка выражения "ALTER TABLE DROP" для таблиц CQL3;
  • В выражениях CREATE для пространств ключей, таблиц и индексов (CREATE KEYSPACE, CREATE TABLE и CREATE INDEX) добавлена поддержка условной операции "IF NOT EXISTS", позволяющей выполнять операцию только при отсутствии объекта с указанным именем;
  • В выражение добавлена поддержка условия "IF NOT EXISTS";
  • В выражение UDPATE добавлена поддержка условия "IF";
  • Поддержка вторичных индексов для столбцов, отмеченных как первичные ключи (PRIMARY KEY);
  • Поддержка библиотеки JEMalloc с реализацией высоко эффективных функций распределения памяти, позволяющих заметно снизить уровень фрагментации памяти;
  • Оптимизация упаковки данных в хранилище, позволяющая сохранить высокую производительность чтения в конфигурациях с большой нагрузкой на запись;
  • Режим горячего повтора операции для избежания возникновения таймаутов при выполнении запроса - если после отправки первого запроса прошло слишком много времени без ответа отправляется дополнительные запросы к другим репликам;
  • Собственная реализация Thrift-сервера, созданная на основе библиотеки LMAX Disruptor, предоставляющей средства обмена сообщениями между нитями с минимальной задержкой.

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


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

Комментарии

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