Apache Cassandra — вільна та відкрита розподілена з широким стовпчиком noSQL система керування базами даних, яка створена для роботи з високомасштабованими і надійними сховищами величезних масивів даних. Cassandra надає надійну підтримку кластерів, що охоплюють численні датацентри та забезпечує високу доступність даних та працює без точкових відмов з асинхронною нецентралізованою реплікацією даних, що дозволяє для всіх користувачів виконувати операції з низькою затримкою.
Промислові рішення на базі Cassandra розгорнуті для забезпечення сервісів таких компаній, як Cisco, IBM, Cloudkick, Reddit, Digg, Rackspace і Twitter.
Історія Авінаш Лакшман, один з розробників , та Прашант Малік почали розробку Cassandra в надрах Facebook з метою створення потужної функції пошуку. Facebook випустила БД як проєкт з відкритим кодом на Google Code у липні 2008 року. А вже в 2009 році була передана під оруду фонду Apache Software Foundation. У лютому 2010 року була оцінена як проєкт найвищої важливості.
Розробники назвали базу даних на честь міфологічної троянської пророчиці Кассандри з аллюзією на прокляття оракула ().
Станом на 2011 рік найбільший кластер серверів, котрий обслуговує єдину БД Cassandra, налічував понад 400 машин і містив дані розміром понад 300 Тб.
Огляд СКБД Cassandra написана на мові Java і об'єднує в собі повністю розподілену , що забезпечує практично лінійну масштабованість при збільшенні обсягу даних. Cassandra використовує модель зберігання даних на базі сімейства стовпців (ColumnFamily), що відрізняється від систем подібних до memcachedb, які зберігають дані лише у зв'язці ключ/значення, можливістю організувати зберігання хешей з кількома рівнями вкладеності. Cassandra відноситься до категорії сховищ підвищено стійких до збоїв: поміщені в БД дані автоматично реплікуються на кілька вузлів розподіленої мережі або навіть рівномірно розподіляються до декількох дата-центрів. При збої вузла, його функції на льоту підхоплюються іншими вузлами. Додавання нових вузлів у кластер і оновлення версії Cassandra виробляється на льоту, без додаткового ручного втручання і переконфігурації інших вузлів.
Для спрощення взаємодії з БД підтримується мова формування структурованих запитів CQL (Cassandra Query Language), яка на перший погляд нагадує SQL, але істотно урізана в функціональності. Наприклад, можна виконувати тільки найпростіші запити SELECT з вибіркою за певною умовою, але без підтримки сортування та групування. Додавання та оновлення даних здійснюється через вирази UPDATE або INSERT. Вони схожі за поведінкою і додають новий запис якщо запис відсутній або оновлюють існуючий. З можливостей можна відзначити підтримку просторів імен і сімейств стовпців, створення індексів через вираз «CREATE INDEX». Драйвери з підтримкою SQL підготовлені для мов Python, Java (JDBC/DBAPI2) і JavaScript (Node.js).
Виноски
Див. також Amazon DynamoDB
Посилання
Project Website Project Wiki Adopting Apache Cassandra presented by Eben Hewitt on December 1, 2010 Presentation on Cassandra at SIGMOD 2008 Introduction to Cassandra at FOSDEM 2010 LADIS 2009 WhitePaper by the original contributors Avinash Lakshman & Prashant Malik Cassandra Articles on NoSQLDatabases.com Cassandra News and Articles on myNoSQL Cassandra @ Twitter: an Interview with Ryan King Presentation on RDBMS vs. Dynamo, BigTable, and Cassandra RPM build for the apache cassandra project