Apache выпустил Cassandra 2.0, новую версию распределенной базы данных NoSQL. Улучшения включают облегченные транзакции, триггеры и улучшения языка запросов Cassandra.
Популярность Apache Cassandra выросла и теперь используется в приложениях Adobe, CERN, Comcast, eBay, GoDaddy, HP, IBM, Instagram, Netflix, Plaxo и Sony.
Согласно объявлению Apache Software Foundation о новой версии, облегченная поддержка транзакций означает, что Cassandra теперь имеет линеаризуемость операций, аналогичную сериализуемому уровню изоляции, предлагаемому реляционными базами данных, что предотвращает конфликты во время одновременных запросов.
В блоге разработчиков DataStax есть хорошее описание того, как работают облегченные транзакции в Cassandra, но, по сути, система использует протокол консенсуса Paxos. По сути, узел предлагает изменить значение. Предложение отправляется участвующим репликам, и эти реплики обещают не принимать никаких других предложенных изменений (на данный момент). Если большинство узлов обещают принять изменение предлагающего, он может приступить к внесению изменения. Однако, если большинство реплицированных узлов включили ранее предложенное изменение в свой ответ, то это то значение, которое предлагает предлагающий узел.
Кассандра расширяет протокол консенсуса Paxos третьей фазой; фаза фиксации / подтверждения. Это означает, что для обеспечения линейной транзакции требуется четыре цикла туда и обратно, но до тех пор, пока вам не нужно много атомарных транзакций в вашем приложении, это работает.
Триггеры — это следующее улучшение, и работа над ними продолжается с предупреждением об изменениях, которые появятся в Cassandra 2.1. Однако триггеры в настоящее время полагаются на зарегистрированные пакеты для реализации гибкого, атомарного, в конечном итоге согласованного механизма реакции на операции записи и их дополнения.
Усовершенствования CQL добавляют курсоры и улучшенную поддержку индексов. Есть поддержка новых триггеров и некоторая поддержка новых облегченных транзакций. Эта поддержка предоставляется благодаря поддержке ключевого слова IF в операторах INSERT, UPDATE и DELETE. Дополнительная поддержка индексов позволяет использовать столбцы для вторичных индексов, которые уже используются в качестве столбцов первичного ключа.
Другие улучшения включают
Улучшенное уплотнение, предотвращающее ухудшение производительности чтения при большой нагрузке записи
Стремительно пытается избежать тайм-аутов запросов, отправляя избыточные запросы другим репликам, если на исходный запрос проходит слишком много времени.
Индивидуальная реализация сервера Thrift на основе LMAX Disruptor, которая обеспечивает более низкие задержки обработки сообщений и лучшую пропускную способность с помощью гибких стратегий распределения буфера.
Исходный код, документация и связанные ресурсы доступны на сайте Apache Cassandra.