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

NoSQL являють собою сховище, яке не відповідає моделі реляційних баз даних і їх характеристикам, у них немає схем, вони не об`єднуються, і не гарантують властивість ACID. Масштабується NO-система горизонтально і використовує широкий обсяг основної пам`яті комп`ютера, вирішуючи проблему великих обсягів інформації.

Власні власні типи-це нова методологія розробки нереляційних баз даних NoSQL, виконана великими компаніями для задоволення корпоративних потреб, такими, наприклад, як BigTable від Google, який вважається першою системою NoSQL, і Amazon DynamoDB. Успіх цих систем поклав початок розробці ряду схожих систем БД з відкритим вихідним кодом і пропрієтарних БД, найбільш популярними з яких є Hypertable, Cassandra, MongoDB, DynamoDB,

Еволюція NoSQL

Проблема масштабованості SQL була визнана компаніями Web 2.0 з величезними, зростаючими потребами в даних та інфраструктурі, такими як Google, Amazon та Facebook. Вони знайшли власні вирішення проблем, впровадивши технології BigTable, DynamoDB і Cassandra. Зростаючий інтерес призвів до ряду систем управління базами даних NoSQL (СУБД) з акцентом на продуктивність, надійність та узгодженість. Ряд існуючих структур індексації були повторно використані і поліпшені з метою підвищення продуктивності пошуку і читання.

Термін був придуманий Калором Строцці ще в 1998 році, а воскрешений у 2009 році співробітником Rackspace Еріком Евансом для вирішення проблем веб-компаній з великим обсягом операцій та інформації.

Термін був придуманий Калором Строцці

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

Неструктуроване сховище

Таким чином NoSQL не мають фіксованої структури таблиць, як у реляційній системі. У цій таблиці наведено коротке порівняння можливостей NoSQL та SQL.

Коротке порівняння можливостей

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

Типи інформаційних сховищ

NoSQL Key Value використовується хеш-таблиця

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

Весь, що потрібно для роботи з предметами, що зберігаються в базі даних-це ключ. Дані зберігаються в вигляді рядка JSON або BLOB (великий двійковий об`єкт). Одним з найбільших недоліків цієї форми є відсутність узгодженості на рівні БД. Це може бути додано під час розробки бази даних NoSQL програмістами зі своїм власним кодом, але це також вимагає більше зусиль, через складність реалізації і часу. Найвідоміша БД NoSQL, побудована на сховищі значень ключів-це Amazon DynamoDB.

Сховища документів (Document) аналогічні сховищам значень ключів в тому, що вони не містять схеми і засновані на моделі значень. Отже, обидва типи мають однакові переваги та недоліки. І тій, і іншій не вистачає узгодженості на рівні бази даних, що не дозволяє додаткам надавати більше надійних функцій. Проте існують деякі ключова відмінність між ними. У сховищах документів значення (документи) забезпечують кодування для збережених даних. Такими кодуваннями можуть бути XML, JSON або BSON (двійковий код JSON). Найпопулярнішим додатком БД, що використовує сховище документів, є MongoDB.

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

Сховища стовпців мають швидкий доступ для читання/запису до збережених даних. У ньому стовпці рядка відповідають одному стовпцю і зберігаються, як один запис на диску. Це забезпечує швидший доступ під час операцій читання / запису. Найбільш популярні бази даних, які використовують сховище стовпців баз даних NoSQL, приклади: Google BigTable, HBase і Cassandra.

У БД NoSQL Graph BD для представлення даних використовується структура орієнтованого графа. Граф складається з ребер і вузлів.

Принцип роботи БД

Типи інформаційних сховищ

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

  1. Горизонтальної масштабованості з можливістю збільшення свого розміру, збільшення простору зберігання в БД без шкоди для роботи.
  2. Хмарної технології. Більшість БД NoSQL базують своє сховище в хмарі, щоб звільнити більше місця. Крім того, вони мають вузли для реплікації інформації.
  3. Ефективного використання ресурсів. В даний час компанії перебувають у процесі технологічного переходу, тому практично необхідно, щоб вони мали БД, що дозволяє їм впроваджувати нові технологічні інструменти. Дані NoSQL працюють саме для цього - гнучка модель дозволяє швидко адаптуватися до нових інструментів.
  4. Вільної схеми функціонування. NoSQL не мають жорсткої системи, тому програмісти мають свободу змінювати дані за потребою. Це означає, що якщо потрібно змінити визначення поля або типу даних, то в цьому немає проблем на відміну від баз SQL, де зміни подібного роду пов`язані з великими складнощами.
  5. Швидкістю відгуку. Швидкість в БД вимірюється затримкою, яка є часом відгуку, NoSQL стурбовані максимально можливим зменшенням часу затримки.
  6. Використання індексів. SQL і NoSQL потребують індексів, оскільки запити не можуть бути зроблені в мільйонах записів, якщо Індекс не був налаштований. У NoSQL індекси генеруються у формі B-Tree, тобто вузли збалансовані, а значить збільшується швидкість пошуку.

Системи управління

У наступній таблиці наведено коротке порівняння між різними системами управління БД NoSQL.

Системи управління

MongoDB має гнучке сховище схем-це означає, що збережені об`єкти не повинні мати однакову структуру або поля. Він також має деякі функції оптимізації, які розподіляють колекції даних між собою, що призводить до загального поліпшення продуктивності та більш збалансованої системи. Інші системи NoSQL, такі, як Apache CouchDB, також є БД типу сховища документів і мають багато спільних можливостей з MongoDB, за винятком того, що до БД можна отримати доступ за допомогою API RESTful.

REST-це архітектурний стиль, що складається з узгодженого набору архітектурних обмежень, що застосовуються до компонентів, з`єднувачів та елементів даних в Інтернеті. Він заснований на кешованому комунікаційному протоколі "клієнт-сервер" без збереження стану, наприклад, протокол HTTP. Програми RESTful використовують HTTP-запити для публікації, читання та видалення даних. Що стосується баз даних стовпців, Hypertable - це БД NoSQL, написана на C ++ і заснована на Google BigTable. Hypertable підтримує розподіл сховищ даних по вузлах для забезпечення максимальної масштабованості, як MongoDB і CouchDB.

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

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

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

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

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

Структури індексації

Структури індексації

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

Однією з основних відмінностей від інших деревоподібних структур, таких як AVL, є те, що B-Tree дозволяє мати змінну кількість дочірніх вузлів, що означає менше балансування дерева, але більшу втрату простору. B + Tree-один з найпопулярніших варіантів B-дерев. Це вдосконалення (на відміну від B-Tree) вимагає, щоб усі ключі були в листі.

Структура даних T-Trees була розроблена шляхом об`єднання функцій AVL-Trees та B-Trees. Дерева AVL відносяться до типу самобалансуючих дерев двійкового пошуку, тоді як дерева B-незбалансовані, і кожен вузол може мати різну кількість дочірніх елементів.

У t-дереві структура дуже схожа на AVL-дерево та B-дерево. Кожен вузол зберігає більше одного кортежу {key-value, pointer}. Крім того, двійковий пошук використовується в поєднанні з вузлами і декількома кортежами, щоб забезпечити кращу пам`ять і продуктивність.

T-дерево має три типи вузлів: з правим і лівим дочірнім вузлом, кінцевий вузол без дочірніх вузлів і вузол з половинним листом тільки з одним дочірнім вузлом. Вважається, що T-Trees має кращу загальну продуктивність.

Поширені помилки застосування БД

Існують три поширені помилки, які здійснюють організації, коли справа доходить до NoSQL:

  1. NoSQL-це більше, ніж масштабованість, не можна прирівнювати NoSQL до веб-шкали. Прабатьками сучасних нереляційних баз даних були такі компанії, як Google і Amazon, які зосередилися на вирішенні проблем масштабованості у веб-середовищі.
  2. Розробники повинні розвиватися. В одному висококласному веб-проекті погано підібрана команда інтеграції створила величезну проблему, і для її усунення знадобився час і мільйони доларів.
  3. Ускладнене поширення. Ніщо не замінить знання і досвід ні в реалізації, ні в процесі адміністрування. Трапляється так, що запит, який швидко виконується на локальній машині розробки, не буде масштабуватися горизонтально на сотнях машин. Сучасний додаток має розподілену архітектуру та багато користувачів одночасно, які вимагають швидких відповідей.

Переваги NoSQL

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

  1. Мають просту і гнучку структуру.
  2. Не має схем.
  3. Заснована на парах "ключ-значення".
  4. Деякі типи включають сховище стовпців, документів, значень ключів, графіків, об`єктів, XML та інші режими даних.
  5. Зазвичай кожне значення в БД має ключ. Деякі сховища дозволяють розробникам зберігати серіалізовані об`єкти, а не лише прості значення рядків.
  6. NoSQL з відкритим вихідним кодом не вимагають дорогих ліцензійних зборів і можуть працювати на недорогому обладнанні, що робить їх розгортання рентабельним.
  7. При роботі з NoSQL, незалежно від того, відкриті вони чи власні, розширення простіше та дешевше, ніж при роботі з реляційними базами даних. Він виконується шляхом горизонтального масштабування та розподілу навантаження по всіх вузлах, а не за типом вертикального масштабування, який зазвичай виконується в системах реляційних баз даних і замінює основний хост більш потужним.

Недоліки No-системи

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

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

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

Застосування бази даних NoSQL

Застосування бази даних NoSQL

Академічні працівники, інженери, архітектори програмного забезпечення, дизайнери додатків і програмісти вимагають більш глибокого знання структур даних, які раніше не були потрібні для реляційних баз даних. Лідерами ринку є-Hadoop і MongoDB, слідом за "Касандра", "Редис", CouchDB і "Ріаком". Сучасні дослідження показують, що є два продукти NOSQL, які домінують над системними інженерами, архітекторами програмне забезпечення, розробниками серед десятка аналогічних технологій-це MongoDB і Hadoop.

Ринок показує, що великі компанії використовують нові методології розробки баз даних NoSQL та інтегрують їх у свої продукти (Oracle, IBM) . Ринок БД потроху перетворюється в стандарт PasS, Redis і MongoDB, Edlich. Такі продукти, як Neo4j, MongoDb і CouchDb, стали об`єктом підтримки та інвестування венчурного капіталу.

Статті на тему