Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
3
Добавлен:
15.01.2021
Размер:
33.91 Кб
Скачать

Переваги apache cassandra

  • масштабованість і надійність в зв'язку з відсутністю центрального сервера (Master Node), відмова якого може стати причиною збою всього кластера, як у випадку HBase. Додати нові вузли в кластер і оновити версії Cassandra можна на льоту, без додаткового ручного втручання і переконфігурації всього кластера. Однак, на практиці рекомендується заново згенерувати ключі (токени) для кожного вузла, включаючи існуючі, щоб зберегти якість розподілу навантаження. Генерації ключів для існуючих вузлів можна уникнути в разі кратного збільшення кількості вузлів (двічі, тричі і т.д.). Також варто відзначити 3 механізму відновлення даних:

    • читання з відновленням (read repair), коли під час читання дані запитуються з усіх реплік і порівнюються після координації. Та колонка, яка має останню мітку часу, пошириться на вузли з застарілими мітками.

    • спрямована відправка (hinted handoff), яка зберігає інформацію про операції записи на координатора навіть якщо запис на якомусь вузлі не вийшло. Потім, по можливості, цей запис знову повториться. Такий механізм дозволяє швидко відновити дані у разі короткострокового відсутності вузла в кластері. Крім того, при рівні узгодженості ANY він дозволяє домогтися повної доступності для запису (absolute write availability) навіть при недоступності всіх вузлів-реплік - операція запису підтверджується, а дані збережуться на вузлі-координатора.

    • анти-ентропійне відновлення вузла (anti-entropy node repair) - регулярно запускається вручну процес відновлення всіх реплік, який дозволяє відновити дані, якщо вони не були відновлені двома вищеописаними способами.

  • гнучка схема даних, заснована на комбінації столбцових сімейств (Column Family) в простір ключів (keyspace), дозволяючи визначати в рядках однієї і тієї ж таблиці різні стовпці і таким чином ефективно зберігати виряджені таблиці. При цьому в одній таблиці може бути до двох мільйонів стовпців, що вельми актуально для Big Data систем.

  • висока пропускна здатність, особливо для операцій запису (близько 80-360 МБ / с на вузол) - завдяки зберіганню в оперативній пам'яті відповідального вузла, дані записуються швидше, ніж зчитуються. Крім того, за рахунок використання LSM-дерев, Сassandra також дозволяє досить-таки швидко зчитувати дані. Нагадаємо, LSM-дерево (Log-structured merge-tree, журнально-структуроване дерево зі злиттям) - це структура даних, яка зберігає пари «ключ - значення» і надає швидкий доступ за індексом в умовах частих запитів на вставку, наприклад, при зберіганні журналів транзакцій.

  • власна SQL-подібна мова запитів (CQL, Cassandra Query Language), яка дозволяє виконувати найпростіші запити SELECT з вибіркою за певним умові. Додавання і оновлення здійснюється через єдине вираження UPDATE, операція INSERT відсутня. Також CQL підтримує простір імен і сімейств стовпців. Драйвери з підтримкою цієї мови запитів реалізовані для мов Python, Java, Ruby, PHP, JavaScript і Perl.

  • наявність інструментів розширення функціональних можливостей - певні користувачем типи даних (UDT, User Defined Types), починаючи з версії 2.1, а в релізі 2.2 можна писати збережені процедури і агрегати.

  • підтримка пошуку за рахунок вторинних індексів, створити які можна за допомогою CQL-вирази CREATE INDEX;

  • настроюється узгодженість і підтримка реплікації, коли користувачі можуть самі визначити необхідну кількість реплік і задати рівень узгодженості даних по кожній операції зберігання. Зокрема, при кожному читанні і запису клієнт може вказати бажаний рівень узгодженості (консистентності) - ANY, ONE, TWO, THREE, QUORUM, SERIAL, ALL і інші. Наприклад, яка буде використовуватися під рівень ONE каже, що запит повинен дійти хоча б до одного вузла, що відповідає за зберігання рядки, а QUORUM - що запит має отримати більшість вузлів, наприклад, 2 з 3. Це дозволяє вибирати між швидкістю виконання запитів і надійністю. Для більшості завдань саме ONE є цілком відповідним рівнем узгодженості.

  • автоматичне вирішення конфліктів завдяки зберіганню тимчасових міток (timestamp) для кожного стовпця в будь-якому записі. Наприклад, якщо одночасно робляться два запити на зміну значень різних стовпців запису, то можливий конфлікт на вузлах, що відповідають за зберігання цього рядка. Конфлікт буде успішно вирішено за часом останньої зміни стовпців.

  • підтримка аутентифікації, ролей і роботи з клієнтом по захищеному криптографічного протоколу SSL.

  • підтримка ACID-транзакційності на рівні запису, тобто для набору стовпчиків з одним ключем:

    • Atomicity (атомарність) - всі стовпці в одному записі за одну операцію будуть записані;

    • Consistency (узгодженість) - можна задати рівень суворої узгодженості;

    • Isolation (ізольованість) - починаючи з версії 1.1, з'явилася підтримка ізольованості, коли під час запису стовпців одного рядка інший користувач, який читає цю ж рядок, побачить повністю стару версію запису або, вже після закінчення операції, нову версію, а не частина колонок з однієї і частина з другої;

    • Durability (довговічність), що забезпечується наявністю журналу фіксацій, який буде відтворено і відновить відмовив вузол кластера до потрібного стану.