Порівняння NoSQL систем управління базами даних

Основна мета баз данихNoSQL - надання додаткового функціоналу на відміну від реляційних систем. Наприклад, це може бути зберігання пар ключ-значення, тоді ви отримаєте значне збільшення продуктивності за рахунок кешування, або зберігання неструктурних наборів даних, з якими простіше буде звертатися.

Зміст

  1. СУБД
  2. NoSQL СУБД
  1. Сховище ключ-значення
  2. Розподілене сховище
  3. Документо-орієнтована СУБД
  4. БД на основі графів
  • NoSQL бази даних типу ключ-значення
  • Популярні БД
  • Приклади використання
  • NoSQL бази даних типу стовпець
  • Популярні БД
  • Приклади використання
  • NoSQL бази даних типу документ
  • Популярні БД
  • Приклади використання
  • NoSQL бази даних типу граф
  • Популярні БД
  • Приклади використання
  • Порівняння NoSQL та реляційних СУБД
  • Системи управління базами даних

    Бази даних це логічні змодельовані сховища, призначені для різних типів даних. Кожна база даних, крім безсхемних (NoSQL), використовує модель, що визначає структуру даних. СУБД – це спеціальні додатки або набір бібліотек для роботи з різними базами даних.

    NoSQL системи управління базами даних

    Протягом останнього десятиліття вибір багатьох розробників і системних адміністраторів для їх додатків завжди падав на реляційні СУБД. Незважаючи на те, що вони не такі вже й адаптивні, функціонал реляційних СУБД дозволяє створювати досить складні системи даних. Цього було більш ніж достатньо, доки з'явилися NoSQL СУБД.

    Сам термін NoSQL з'явився близько десяти років тому, хоч би як це здавалося смішним, але спочатку це було назвою чергової реляційної системи управління базами даних. Проте мала на увазі вона трохи інше - уникнути використання стандартів SQL. У наступні кілька років інші підхопили цю ідею і почали використовувати цей термін щодо нереляційних баз даних.

    За задумом NoSQL бази даних та СУБД не мають на увазі внутрішніх зв'язків. Вони не ґрунтуються на одній моделі, а кожна база даних, залежно від цілей, використовує різні моделі.

    Існує досить багато різних моделей та функціональних систем для NoSQL баз даних:

    • Сховище ключ-значення - Redis, MemcacheDB і т.д. (зазвичай зберігають дані у пам'яті)
    • Розподілене сховище (Column-oriented) - Cassandra, HBase і т.д (призначені для великих обсягів даних).
    • Документо-орієнтовані СУБД – MongoDB, Couchbase і т.д. (Призначені для зберігання ієрархічних структур даних – документів)
    • БД з урахуванням графів - OrientDB, Neo4J тощо.

    Щоб краще зрозуміти, чим відрізняються всі ці типи СУБД, розглянемо їх.

    Сховище ключ-значення

    Почнемо наш розгляд із типу сховища ключ-значення, оскільки це найголовніше рішення із сімейства NoSQL. Цей тип БД працює з даними типу ключ-значення, наприклад, як словник. Тут немає місця ні структурі, ні зв'язкам. Після підключення до сервера (наприклад Redis) програма може задати ключ і його значення, а згодом отримувати ці дані на запит.

    Примітка: коли стосується комп'ютерів, словник це особливий тип даних. Він є масивом колекцій з різними ключами і відповідними їм значеннями.

    Розподілене сховище

    засуті це наступний крок після СУБД типу ключ-значення. Незважаючи на досить складну для розуміння сутність, ці бази даних чудово працюють просто створюючи колекції з однієї або кількох пар ключ-значення, які в сумі відповідають одному запису.

    На відміну від звичних таблиць у реляційних моделях, ці СУБД не вимагає попереднього опису структури даних. Кожен запис складається з одного або декількох стовпців, що містять дані, а кожен стовпець різних записів може зберігати різні типи даних.

    В цілому, розподілене сховище ні що інше як двовимірний масив, де кожен ключ (запис) містить одну або кілька пар ключ-значення прив'язаних до нього. Така система дозволяє зберігати та використовувати великі обсяги неструктурованих даних. (Одна запис з великою кількістю додаткової інформації) . Такі бази даних зазвичай використовуються, коли недостатньо простих пар ключ-значення, а зберігати необхідно великий обсяг записів з різною інформацією. Такі СУБД за відповідного використання можуть бути дуже продуктивними.

    Документо-орієнтовані сховища

    Такі СУБД NoSQL дуже швидко захопили свій ринок. Вони працюють так само, як і попередні системи, але вони допускають набагато більшу вкладеність і складність структури даних. (наприклад, документ, вкладений у документ, вкладений у документ). Документи знімають обмеження вкладеності першого та другого рівнів типу ключ-значення у розподілених сховищах. В цілому, можна описати як завгодно складну структуру даних як документ і зберегти в такій БД.

    Незважаючи на досить великий функціонал і здатність доступу до даних за одним ключем, такі СУБД мають низку своїх проблем. Наприклад, при доступі до одного документа ви повністю отримуєте його у відповідь на запит,навіть якщо вам потрібне якесь одне поле, що не може не позначитися на продуктивності.

    Бази даних на основі графів

    Наостанок ми залишили найцікавіше. БД з урахуванням графів зберігають дані у зовсім іншому вигляді. Вони використовують деревоподібні структури з вузлами та зв'язками, що з'єднують їх. Так само як і в математиці деякі операції набагато зручніше виконувати з такими даними завдяки зв'язкам між ними та їх угрупованню (наприклад, зв'язки між людьми).

    СУБД Ключ-Значення (Key-Value)

    Такі БД дуже продуктивні, прості у користуванні і легко масштабуються.

    Популярні СУБД

    Деякі популярні сховища:

    • Redis - БД в оперативній пам'яті з додатковою стійкістю до відмов.
    • Riak - розподілене, реплікаційне сховище
    • Memcached / MemcacheDB - розподілена БД в оперативній пам'яті

    Приклади використання

    Часто трапляються випадки застосування БД сховищ ключ-значення:

    • Кешування - швидке та часте збереження даних для майбутнього використання
    • Черга - деякі БД типу ключ-значення підтримують списки, набори та черги
    • Розподіл інформації/завдань - використовується для реалізації патерну Pub/Sub
    • Живе оновлення інформації - програми, що використовують стани

    NoSQL розподілені СУБД

    Такі системи баз даних є дуже ефективними і можуть бути використані для зберігання важливої ​​інформації великих обсягів. Може вони десь не дуже гнучкі в плані даних, зате вони функціональні та продуктивні.

    Популярні СУБД

    Ось основні представники цього типу БД:

    • Cassandra - структура даних заснована на BigTable та DynamoDB
    • HBase - сховище дляApache Hadoop заснований на принципах BigTable

    Приклади використання

    Основні сфери застосування:

    • Зберігання неструктурованих даних, що не руйнуються - якщо вам необхідно зберігати великі обсяги даних протягом тривалого часу, то такі БД дуже добре впораються із завданням
    • Масштабування – за задумом такі бази даних легко масштабуються. Вони легко справляються з будь-яким обсягом даних

    Документо-орієнтовані СУБД

    Документ-орієнтовані сховища добре зберігають незв'язану інформацію великих обсягів, навіть якщо вона дуже відрізняється від сутності до сутності.

    Популярні СУБД

    СУБД, що часто зустрічаються:

    • Couchbase - засноване на JSON, сумісне з Memcached сховище
    • CouchDB - передове документоорієнтоване сховище
    • MongoDB - дуже популярне та функціональне сховище

    Приклади використання

    Часті сфери застосування:

    NoSQL бази даних типу граф

    Такі типи БД зберігають інформацію зовсім особливо, зовсім не як інші СУБД.

    Популярні СУБД

    СУБД, що часто зустрічаються:

    • OrientDB - дуже швидке документоорієнтоване сховище гібрид типу граф написане на Java. Включає різні режими роботи
    • Neo4J - безсхемне, дуже потужне та популярне сховище написане на Java

    Приклади використання

    Часті приклади використання:

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

    Порівняння NoSQL СУБД та реляційних СУБД

    Щоб мати чітке уявлення, ніж NoSQL відрізняється від реляційних систем, давайте складемо список з основними відмінностями.

    Приклади використання NoSQL

    • Швидкість - бази даних NoSQL зазвичай швидше, а іноді набагато швидше, коли справа доходить до запису. Операції читання також можуть бути досить швидкими залежно від того, яку саме БД ви використовуєте
    • Безсхемна технологія - Реляційні СУБД вимагають чітко описану структуру даних на початок роботи. NoSQL рішення пропонують більш гнучкі рішення.
    • Автоматизована (або дуже проста) реплікація/масштабування - NoSQL бази даних швидко розвиваються - розробники активно вирішують основні проблеми, одна з яких - реплікація та масштабування. На відміну від реляційних СУБД, NoSQL рішення легко масштабуються та працюють із кластерами.
    • Великий вибір - коли доходить до вибору NoSQL сховища, існує великий вибір різних моделей. Як було сказано раніше, наскільки правильно ви зробите свій вибір вплине на продуктивність вашої системи.