NoSQL бази даних: огляд, приклади і сфери застосування

Гібридна система Cassandra

Одна з найбільш широко використовуваних БД NoSQL – Cassandra, розроблена Facebook. Метою Cassandra було створення СУБД, яка не має єдиної точки відмови та забезпечує максимальну доступність. Cassandra – це, головним чином, БД сховища стовпців. У деяких дослідженнях вона згадувалася як гібридна система, заснована на Google BigTable, якою є БД сховища стовпців і Amazon DynamoDB, притаманна типу «ключ-значення». Ключі в Cassandra вказують на набір сімейств стовпців з опорою на розподілену файлову систему Google BigTable і функції доступності Dynamo (розподілена хеш-таблиця).

Основні характеристики Cassandra включають в себе:

  • Відсутність єдиної точки відмови. Для цього вона повинна працювати на кластері вузлів, а не на одній машині. Це не означає, що дані на кожному кластері однакові. Коли відбувається збій в одному з вузлів, дані на ньому будуть недоступні. Однак інші вузли і дані будуть доступними.
  • Розподілене хешування – це схема, яка забезпечує функціональність хеш-таблиці таким чином, що додавання або видалення одного слота не призводить до значної зміни відображення ключів на слоти. Це дозволяє розподіляти навантаження на сервери або вузли відповідно до їх ємністю і мінімізувати час простою.
  • Відносно простий у використанні клієнтський інтерфейс. Вона використовує Apache Thrift для свого клієнтського інтерфейсу, який надає RPC-клієнт на декількох мовах, але більшість розробників вважають за краще альтернативи з відкритим вихідним кодом, створені на основі Apple Thrift, наприклад, Hector.
  • Реплікація даних. По суті, він відображає дані для інших вузлів в кластері. Реплікація може бути випадковою або визначеної для максимального захисту даних, наприклад, шляхом розміщення у вузлі іншого центру обробки даних.
  • Політика поділу вирішує, де і на якому сайті розмістити ключ. Це може бути випадковим або впорядкованим процесом. При використанні обох типів політик поділу Cassandra може знайти баланс між навантаженням і оптимізацією продуктивності запитів.
  • Узгодженість. Реплікація ускладнює узгодженість. Це пов’язано з тим, що всі вузли повинні бути оновлені в будь-який момент часу з самими останніми значеннями або під час виконання операції читання.
  • Читання/запис дій. Клієнт надсилає запит одного вузла. Вузол, відповідно до політики реплікації, зберігає дані в кластері. Кожен вузол спочатку змінює дані в журналі фіксації і оновлює структуру таблиці, причому обидва зміни виконуються синхронно. Запит на читання відправляється одному єдиному вузлі, який містить дані у відповідності з політикою поділу/розміщення.