Достъпна СУБД 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 съчетава напълно разпределена хеш система 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). Например, включването на опцията в клъстера с 3 възела, в който две реплики са еднакви, а една е остаряла, ще доведе до обновление на остарялата реплика с използване само на една операция за копиране на актуалната реплика.
  • Добавени са нови функции 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
Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster