Interested Article - Apache Cassandra

Apache Cassandra — распределённая система управления базами данных , относящаяся к классу NoSQL -систем и расчитанная на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша.

Изначально проект был разработан в недрах Facebook, в 2009 году передан под крыло фонда Apache Software Foundation , и теперь эта организация продолжает развитие проекта. Промышленные решения на базе Cassandra развёрнуты для обеспечения сервисов таких компаний как Cisco , IBM , , Reddit , Digg , Rackspace , Huawei , Netflix , Apple , Instagram , GitHub , Twitter и Spotify . К 2011 году крупнейший кластер серверов, обслуживающий единую базу данных под управлением Cassandra, насчитывал более 400 машин и содержал данные размером более 300 ТБ .

Apache Cassandra написана на языке Java , реализует распределённую хэш-систему, сходную с DynamoDB , что обеспечивает практически линейную масштабируемость при увеличении объёма данных. Использует модель хранения данных на базе семейства столбцов , чем отличается от систем подобных , которые хранят данные только в связке « ключ — значение »; имеет возможностью организовать хранение хэшей с несколькими уровнями вложенности. Относится к категории отказоустойчивых СУБД: помещённые в базу данные автоматически реплицируются на несколько узлов распределённой сети или даже равномерно распределяются в нескольких дата-центрах. При сбое узла его функции на лету подхватываются другими узлами, добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурации других узлов. Тем не менее настоятельно рекомендуется заново сгенерировать ключи (метки) для каждого узла, включая существующие, чтобы сохранить качество распределения нагрузки. Генерации ключей для существующих узлов можно избежать в случае кратного увеличения количества узлов (в 2 раза, в 3 раза и так далее).

CQL

Для упрощения взаимодействия с базой данных поддерживается язык формирования структурированных запросов CQL (Cassandra Query Language), который в какой-то степени сходен с SQL , но существенно урезан по функциональным возможностям. Например, можно выполнять только простейшие запросы SELECT с выборкой по определённому условию. Добавление и обновление осуществляется через единое выражение UPDATE , операция INSERT отсутствует (если записи нет, при выполнении UPDATE она создаётся — используется семантика SQL-оператора MERGE ). Из отличительных возможностей — поддержка пространств имён и семейств столбцов, создание индексов через выражение « CREATE INDEX ». Драйверы с поддержкой CQL реализованы для языков Python (DBAPI2), Java ( JDBC ), Ruby ( gem cassandra-cql ), PHP ( Thrift , cassandra-pdo , Cassandra-PHP-Client-Library ), JavaScript ( Node.js ) и Perl ( DBD::Cassandra ).

Кроме того, CQL реализован в СУБД , которая архитектурно и лингвистически повторяет систему Cassandra, но написана на C++ с целью повышения показателей производительности.

Примечания

  1. . Дата обращения: 14 января 2012. 23 октября 2011 года.

Ссылки

  • Avinash Lakshman. . Engineering @ Facebook's Notes (25 августа 2008). Дата обращения: 4 июня 2009.
  • presented by Eben Hewitt on December 1, 2010
  • at FOSDEM 2010

Литература

  • Карпентер Дж., Хьюитт Э. Cassandra. Полное руководство = Cassandra: The Definitive Guide. — , 2016. — 400 с. — ISBN 978-5-97060-453-3 .
Источник —

Same as Apache Cassandra