Доступна СУБД Apache Cassandra 4.0

Організація Apache Software Foundation представила реліз розподіленої СУБД Apache Cassandra 4.0, що відноситься до класу noSQL-систем і розрахованої на створення високомасштабованих та надійних сховищ величезних масивів даних, що зберігаються у формі асоціативного масиву (хеша). Випуск Cassandra 4.0 визнаний готовим для робочих впроваджень та вже протестований в інфраструктурах компаній Amazon, Apple, DataStax, Instaclustr, iland та Netflix з кластерами, що налічують понад 1000 вузлів. Код проекту написаний мовою Java та поширюється в рамках ліцензії Apache 2.0.

Спочатку СУБД Cassandra було розроблено компанією Facebook і в 2009 році передано під заступництво фонду Apache. Промислові рішення на базі Cassandra розгорнуті для забезпечення роботи таких компаній, як Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit і Twitter. Наприклад, розгорнута компанією Apple інфраструктура зберігання на базі Apache Cassandra налічує понад тисячу кластерів, що включають 160 тисяч вузлів і зберігають понад 100 петабайт даних. У компанії Huawei використовується понад 300 кластерів Apache Cassandra, що включають 30 тисяч вузлів, а в Netflix — понад 100 кластрів, що охоплюють 10 тисяч вузлів і обробляють більше трильйона запитів на день.

СУБД Cassandra об'єднує у собі повністю розподілену hash-систему Dynamo, що забезпечує практично лінійну масштабованість зі збільшенням обсягу даних. Cassandra використовує модель зберігання даних на базі сімейства стовпців (ColumnFamily), що відрізняється від систем подібних memcachedb, які зберігають дані тільки у зв'язці ключ/значення, можливістю організувати зберігання хешів з кількома рівнями вкладеності. Для спрощення взаємодії з БД підтримується мова формування структурованих запитів CQL (Cassandra Query Language), що нагадує SQL, але урізаний за функціональністю. З можливостей можна відзначити підтримку просторів імен та сімейств стовпців, створення індексів через вираз «CREATE INDEX».

СУБД дозволяє створювати стійкі до збоїв сховища: дані, що містяться в БД, автоматично реплікуються на кілька вузлів розподіленої мережі, яка може охоплювати різні центри обробки даних. При збої вузла його функції на льоту підхоплюються іншими вузлами. Додавання нових вузлів до кластера та оновлення версії Cassandra здійснюється на льоту, без додаткового ручного втручання та переконфігурування інших вузлів. Драйвери з підтримкою CQL підготовлені для мов Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ та JavaScript (Node.js).

Основні нововведення:

  • Підвищена продуктивність та масштабованість. Підвищена ефективність обміну даними у форматі SSTable (Sorted Strings Table) між вузлами. Оптимізовано протокол обміну повідомленнями між вузлами (Internode Messaging Protocol). Швидкість передачі потоків даних між вузлами зросла до 5 разів (в основному завдяки застосуванню техніки Zero Copy та передачі SSTables повністю), а пропускна здатність при операціях читання та запису до 25%. Оптимізовано процес інкрементального відновлення. Затримки через припинення виконання збирачем сміття знижено до кількох мілісекунд.
  • Додана підтримка лога аудиту, що дозволяє відстежувати операції автентифікації користувачів та всі запити CQL, що виконуються.
  • Додано можливість ведення повного бінарного лога запитів, що дозволяє зберігати весь трафік запитів та відповідей. Для керування запропоновані команди "nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog", а для аналізу лога поставляється утиліта fqltool. Надано команди для перетворення лога в вид (Dump), порівняння зрізів активності (Compare) і повторного виконання (Replay) для аналізу з відтворенням умов, властивих реальному навантаженню.
  • Додано підтримку віртуальних таблиць, що відображають не дані, що зберігаються в SSTables, а інформацію, що виводиться через API (метрики продуктивності, інформація про налаштування, вміст кешу, відомості про підключених клієнтів тощо).
  • Підвищена ефективність зберігання даних у стислому вигляді, що дозволяє знизити споживання дискового простору та підвищити продуктивність операцій читання.
  • Дані, що належать до системного простору ключів (system.*), тепер за умовчанням розміщуються в першій директорії замість розподілу по всіх директоріях з даними, що дозволяє зберегти працездатність вузла у разі виходу з ладу одного з додаткових дисків.
  • Додано експериментальну підтримку тимчасової реплікації (Transient Replication) та легких кворумів (Cheap Quorums). Тимчасові репліки не зберігають усі дані та використовують інкрементне відновлення для узгодження з повними репліками. Легкі кворуми реалізують оптимізацію операцій запису, при якій запис у тимчасові репліки не проводиться, поки не доступний достатній набір повних реплік.
  • Додана експериментальна підтримка Java 11.
  • Додано експериментальну опцію для порівняння всіх дерев Меркла (Merkle Tree). Наприклад, включення опції на кластері з трьома вузлами, в якому дві репліки однакові, а одна застаріла, призведе до виконання оновлення застарілої репліки з використанням лише однієї операції копіювання актуальної репліки.
  • Додані нові функції currentTimestamp, currentDate, currentTime і currentTimeUUID.
  • Додано підтримку арифметичних операцій у запитах CQL.
  • Надано можливість виконання арифметичних операцій між даними з типами "timestamp"/"date" та "duration".
  • Додано режим для перегляду потоків даних, необхідних для відновлення (nodetool repair —preview) та можливість перевірки цілісності відновлюваних даних (nodetool repair —validate).
  • У запитах SELECT з'явилася можливість обробки елементів Map та Set.
  • Додано підтримку розпаралелювання етапу початкової побудови матеріалізованих уявлень (cassandra.yaml:concurrent_materialized_view_builders).
  • У команді «nodetool cfstats» додано підтримку сортування за певними метриками та обмеження числа рядків, що виводяться.
  • Наведено налаштування для обмеження підключення користувача лише до певних датацентрів.
  • Додано можливість обмеження інтенсивності (rate limit) операцій створення та очищення снапшотів.
  • У cqlsh та cqlshlib реалізована підтримка Python 3 (підтримка Python 2.7 поки що збережена).
  • Припинено підтримку платформи Windows. Для запуску Cassandra в Windows рекомендується використовувати Linux-оточення, створені на основі підсистеми WSL2 (Windows Subsystem for Linux 2) або систем віртуалізації.



Джерело: opennet.ru

Додати коментар або відгук