Підручник NoSQL: що таке, типи баз даних NoSQL і приклад

Що таке NoSQL?

NoSQL База даних — це нереляційна система керування даними, для якої не потрібна фіксована схема. Він уникає об’єднань і його легко масштабувати. Основною метою використання бази даних NoSQL є розподілені сховища даних з величезними потребами в сховищі даних. NoSQL використовується для великих даних і веб-додатків у реальному часі. Наприклад, такі компанії, як Twitter, Facebook і Google, збирають терабайти даних користувачів щодня.

База даних NoSQL означає «Не тільки SQL» або «Не SQL». Хоча кращим терміном був би «NoREL», NoSQL прижився. Карл Строц представив концепцію NoSQL у 1998 році.

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

База даних NoSQL

Чому NoSQL?

Концепція баз даних NoSQL стала популярною серед таких гігантів Інтернету, як Google, Facebook, Amazonтощо, які мають справу з величезними обсягами даних. Час відповіді системи стає повільним, коли ви використовуєте RDBMS для великих обсягів даних.

Щоб вирішити цю проблему, ми могли б «розширити» наші системи, оновивши наявне обладнання. Цей процес дорогий.

Альтернативою для вирішення цієї проблеми є розподіл навантаження бази даних на кількох хостах щоразу, коли навантаження зростає. Цей метод відомий як «масштабування».

NoSQL

База даних NoSQL є нереляційною, тому вона масштабується краще, ніж реляційні бази даних, оскільки вони розроблені з урахуванням веб-додатків.

Коротка історія баз даних NoSQL

  • 1998 – Карло Строцці використовує термін NoSQL для своєї легкої реляційної бази даних з відкритим кодом.
  • 2000- Графічна база даних Neo4j запущено
  • 2004 — запущено Google BigTable
  • 2005- CouchDB запускається
  • 2007 р.- Наукова робота на тему Amazon Динамо звільнено
  • 2008 - Facebook відкриває джерела Cassandra проект
  • 2009 - Термін NoSQL було знову введено

Особливості NoSQL

Нереляційний

  • Бази даних NoSQL ніколи не слідують реляційна модель
  • Ніколи не надавайте таблиці з плоскими записами з фіксованими стовпцями
  • Робота з самодостатніми агрегатами або BLOB
  • Не потребує об’єктно-реляційного відображення та нормалізації даних
  • Жодних складних функцій, таких як мови запитів, планувальники запитів, об’єднання посилальної цілісності, ACID

Без схеми

  • Бази даних NoSQL або не містять схем, або мають розслаблені схеми
  • Не вимагайте будь-якого визначення схеми даних
  • Пропонує різнорідні структури даних в одному домені
Особливості NoSQL
NoSQL не містить схем

Простий API

  • Пропонує прості у використанні інтерфейси для зберігання та запиту наданих даних
  • API дозволяють низькорівневі маніпуляції з даними та методи відбору
  • Текстові протоколи переважно використовуються з HTTP REST із JSON
  • Здебільшого не використовується стандартна мова запитів NoSQL
  • Веб-сумісні бази даних, що працюють як служби, що виходять в Інтернет

Розподілений

  • Кілька баз даних NoSQL можна виконувати розподіленим способом
  • Пропонує можливості автоматичного масштабування та відновлення після збоїв
  • Часто концепцією ACID можна принести в жертву масштабованість і пропускну здатність
  • Переважно відсутня синхронна реплікація між розподіленими вузлами Асинхронна реплікація з декількома головними, однорангова реплікація, реплікація HDFS
  • Лише забезпечує остаточну послідовність
  • Нічим не поділився Archiтектура. Це забезпечує меншу координацію та більший розподіл.
Особливості NoSQL
NoSQL не має спільного доступу.

Типи баз даних NoSQL

Бази даних NoSQL в основному поділяються на чотири типи: пара ключ-значення, орієнтована на стовпець, орієнтована на графік і орієнтована на документ. Кожна категорія має свої унікальні властивості та обмеження. Жодна з вищевказаних баз даних не може краще вирішити всі проблеми. Користувачі повинні вибрати базу даних на основі своїх потреб у продукті.

Типи баз даних NoSQL:

  • На основі пари ключ-значення
  • Граф, орієнтований на стовпці
  • На основі графіків
  • Документоорієнтований

Типи баз даних NoSQL

На основі пари ключ-значення

Дані зберігаються в парах ключ/значення. Він розроблений таким чином, щоб працювати з великою кількістю даних і великим навантаженням.

Бази даних зберігання пари ключ-значення зберігають дані як хеш-таблицю, де кожен ключ унікальний, а значенням може бути JSON, BLOB (великі двійкові об’єкти), рядок тощо.

Наприклад, пара ключ-значення може містити ключ на кшталт «Веб-сайт», пов’язаний зі значенням на зразок «Guru99».

На основі пари ключ-значення

Це один із найпростіших прикладів бази даних NoSQL. Цей вид бази даних NoSQL використовується як колекція, словники, асоціативні масиви тощо. Сховища ключових значень допомагають розробнику зберігати дані без схем. Вони найкраще підходять для вмісту кошика для покупок.

Redis, Dynamo, Riak — це деякі приклади NoSQL баз даних для зберігання ключів і значень. Всі вони засновані на AmazonДинамівська газета.

На основі колонок

Бази даних, орієнтовані на стовпці, працюють зі стовпцями й базуються на папері BigTable від Google. Кожен стовпець обробляється окремо. Значення баз даних з одним стовпцем зберігаються безперервно.

База даних NoSQL на основі стовпців

База даних NoSQL на основі стовпців

Вони забезпечують високу продуктивність запитів агрегації, таких як SUM, COUNT, AVG, MIN тощо, оскільки дані легко доступні в стовпці.

Бази даних NoSQL на основі стовпців широко використовуються для керування сховищами даних, бізнес-аналітика, CRM, Бібліотечні карткові каталоги,

HBase, Cassandra, HBase, Hypertable є прикладами NoSQL запитів бази даних на основі стовпців.

Документоорієнтований

Документно-орієнтована база даних NoSQL зберігає та отримує дані як пару ключ-значення, але частина значення зберігається як документ. Документ зберігається у форматах JSON або XML. Значення розуміється БД і може запитуватися.

Реляційний Vs. документ

Реляційний Vs. документ

На цій діаграмі ліворуч ви бачите, що у нас є рядки та стовпці, а праворуч у нас є база даних документів, яка має структуру, подібну до JSON. Тепер для реляційної бази даних ви повинні знати, які стовпці у вас є і так далі. Однак для бази даних документів у вас є сховище даних, наприклад об’єкт JSON. Вам не потрібно визначати, що робить його гнучким.

Тип документа в основному використовується для систем CMS, платформ блогів, аналітики в реальному часі та програм електронної комерції. Його не слід використовувати для складних транзакцій, які вимагають кількох операцій або запитів щодо різних агрегатних структур.

Amazon SimpleDB, CouchDB, MongoDB, Riak, Lotus Notes, MongoDB, є популярними документами Системи СУБД.

На основі графіків

База даних графового типу зберігає сутності, а також зв’язки між цими сутностями. Сутність зберігається як вузол із зв’язком як ребрами. Ребро дає зв’язок між вузлами. Кожен вузол і ребро мають унікальний ідентифікатор.

На основі графіків

Порівняно з реляційною базою даних, де таблиці слабо зв’язані, база даних Graph є багатореляційною за своєю природою. Відношення обходу відбувається швидко, оскільки вони вже записані в БД, і немає необхідності їх обчислювати.

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

Neo4J, нескінченний граф, OrientDB, FlockDB є популярними базами даних на основі графів.

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

Найпоширенішим механізмом отримання даних є отримання значення на основі REST на основі його ключа/ідентифікатора за допомогою ресурсу GET

База даних сховища документів пропонує складніші запити, оскільки вони розуміють значення в парі ключ-значення. Наприклад, CouchDB дозволяє визначати види за допомогою MapReduce

Що таке теорема CAP?

Теорему CAP також називають теоремою Брюера. У ньому зазначено, що розподілене сховище даних не може запропонувати більше двох із трьох гарантій

  1. консистенція
  2. доступність
  3. Толерантність розділу

Послідовність:

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

наявність:

База даних має бути завжди доступною та оперативною. Він не повинен мати простоїв.

Толерантність до розділу:

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

Кінцева послідовність

Термін «можлива узгодженість» означає наявність копій даних на кількох машинах для досягнення високої доступності та масштабованості. Таким чином, зміни, внесені до будь-якого елемента даних на одній машині, мають поширюватися на інші репліки.

Реплікація даних може не відбуватися миттєво, оскільки деякі копії оновлюватимуться негайно, а інші – через певний час. Ці копії можуть бути взаємними, але з часом вони стають узгодженими. Звідси й назва остаточна консистенція.

БАЗА: Bякось Aдоступний, Sчасто держава, Eвентиляційна консистенція

  • По суті, доступний означає, що база даних доступна весь час відповідно до теореми CAP
  • М'який стан означає навіть без введення; може змінитися стан системи
  • Можлива узгодженість означає, що система стане узгодженою з часом

Кінцева послідовність

Переваги NoSQL

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

Недоліки NoSQL

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

Підсумки

  • NoSQL — це нереляційна DMS, яка не потребує фіксованої схеми, уникає об’єднань і легко масштабується
  • Концепція баз даних NoSQL стала популярною серед таких гігантів Інтернету, як Google, Facebook, Amazonтощо, які мають справу з величезними обсягами даних
  • У 1998 році Карло Строцці використав термін NoSQL для своєї легкої реляційної бази даних з відкритим кодом.
  • Бази даних NoSQL ніколи не дотримуються реляційної моделі, вони або не містять схем, або мають розслаблені схеми
  • Чотири типи баз даних NoSQL: 1). На основі пари ключ-значення 2). Стовпчастий графік 3). Графіки на основі 4). Документоорієнтований
  • NOSQL може однаково ефективно обробляти структуровані, напівструктуровані та неструктуровані дані
  • Теорема CAP складається з трьох слів Consistency, Availability і Partition Tolerance
  • BASE означає Bякось Aдоступний, Sчасто держава, Eвентиляційна консистенція
  • Термін «можлива узгодженість» означає наявність копій даних на кількох машинах для досягнення високої доступності та масштабованості
  • NOSQL пропонують обмежені можливості запитів