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

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

7-03-2019, 11:15
16 441
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 використовується хеш-таблиця, в якій унікальний ключ вказує на елемент. Вони можуть бути впорядковані в логічні групи, вимагаючи у своїх межах унікальності. Це дозволяє використовувати ідентичні ключі в різних логічних групах. Деякі реалізації БД надають механізми кешування, які значно підвищують їх продуктивність. Все, що потрібно для роботи з предметами, що зберігаються в базі даних - це ключ. Дані зберігаються у вигляді рядка 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 центрируют свої функції на основі:
Горизонтальної масштабованості з можливістю збільшення свого розміру, збільшення простору зберігання в БД без шкоди для роботи. Хмарної технології. Більшість БД NoSQL базують своє сховище в хмарі, щоб звільнити більше місця. Крім того, у них є вузли для реплікації інформації. Ефективного використання ресурсів. Компанії в даний час знаходяться в процесі технологічного переходу, тому практично необхідно, щоб у них була БД, що дозволяє їм впроваджувати нові технологічні інструменти. Дані NoSQL працюють саме для цього - гнучка модель дозволяє швидко адаптуватися до нових інструментів. Вільної схеми функціонування. NoSQL не мають жорсткої системи, тому у програмістів є свобода змінювати дані по необхідності. Це означає, що якщо потрібно змінити визначення поля або типу даних, то в цьому немає проблем на відміну від баз SQL, де зміни подібного роду пов'язані з великими труднощами. Швидкість відгуку. Швидкість в БД вимірюється затримкою, яка є часом відгуку, NoSQL стурбовані максимально можливим зменшенням часу затримки. Використання індексів. 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

Одна з найбільш широко використовуються БД NoSQL - Cassandra, розроблена Facebook. Метою Cassandra було створення СУБД, яка не має єдиної точки відмови та забезпечує максимальну доступність. Cassandra - це, головним чином, БД сховища стовпців. У деяких дослідженнях вона згадувалася як гібридна система, заснована на Google BigTable, якою є БД сховища стовпців і Amazon DynamoDB, притаманна типу «ключ-значення». Ключі в Cassandra вказують на набір сімейств стовпців з опорою на розподілену файлову систему Google BigTable і функції доступності Dynamo (розподілена хеш-таблиця).
Основні характеристики Cassandra включають в себе: Відсутність єдиної точки відмови. Для цього вона повинна працювати на кластері вузлів, а не на одній машині. Це не означає, що дані на кожному кластері однакові. Коли відбувається збій в одному з вузлів, дані на ньому будуть недоступні. Однак інші вузли і дані будуть доступними. Розподілене хешування - це схема, яка забезпечує функціональність хеш-таблиці таким чином, що додавання або видалення одного слота не призводить до значної зміни відображення ключів на слоти. Це дозволяє розподіляти навантаження на сервери або вузли відповідно до їх ємністю і мінімізувати час простою. Відносно простий у використанні клієнтський інтерфейс. Вона використовує Apache Thrift для свого клієнтського інтерфейсу, який надає RPC-клієнт на декількох мовах, але більшість розробників вважають за краще альтернативи з відкритим вихідним кодом, створені на основі Apple Thrift, наприклад, Hector. Реплікація даних. По суті, він відображає дані для інших вузлів в кластері. Реплікація може бути випадковою або визначеної для максимального захисту даних, наприклад, шляхом розміщення у вузлі іншого центру обробки даних. Політика поділу вирішує, де і на якому сайті розмістити ключ. Це може бути випадковим або впорядкованим процесом. При використанні обох типів політик поділу Cassandra може знайти баланс між навантаженням і оптимізацією продуктивності запитів. Узгодженість. Реплікація ускладнює узгодженість. Це пов'язано з тим, що всі вузли повинні бути оновлені в будь-який момент часу з самими останніми значеннями або під час виконання операції читання. Читання/запис дій. Клієнт надсилає запит одного вузла. Вузол, відповідно до політики реплікації, зберігає дані в кластері. Кожен вузол спочатку змінює дані в журналі фіксації і оновлює структуру таблиці, причому обидва зміни виконуються синхронно. Запит на читання відправляється одному єдиного сайту, який містить дані у відповідності з політикою поділу/розміщення.

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

Індексування - це процес зв'язування ключа з розташуванням відповідного запису даних в СУБД. Існує безліч структур індексування даних, використовуваних в базах даних NoSQL. B-Tree є однією з найпоширеніших структур індексу в СУБД. В ній внутрішні вузли можуть мати змінну кількість дочірніх вузлів у визначеному діапазоні. Одне з основних відмінностей від інших деревоподібних структур, таких як AVL, полягає в тому, що B-Tree дозволяє мати змінну кількість дочірніх вузлів, що означає меншу балансування дерева, але більшу втрату простору. B + Tree - один з найпопулярніших варіантів B-дерев. Це поліпшення (на відміну від B-Tree) вимагає, щоб всі ключі знаходилися в листі. Структура даних T-Trees була розроблена шляхом об'єднання функцій AVL-Дерева і B-Trees. Дерева AVL відносяться до типу самобалансирующихся дерев двійкового пошуку, тоді як дерева B - незбалансовані, а у кожного вузла може бути різна кількість дочірніх елементів. В T-дереві структура дуже схожа на AVL-дерево і B-дерево. Кожен вузол зберігає кортежу {key-value, pointer}. Крім того, двійковий пошук використовується в поєднанні з вузлами і кількома кортежами, щоб забезпечити кращу пам'ять і продуктивність. T-дерево має три типи вузлів: з правим і лівим дочірнім вузлом, кінцевий вузол без дочірніх вузлів і вузол з половинним листом тільки з одним дочірнім вузлом. Вважається, що у T-Trees краща загальна продуктивність.

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

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

Переваги NoSQL

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

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

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

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

Академічні працівники, інженери, архітектори програмного забезпечення, дизайнери і програмісти вимагають більш глибокого знання структур даних, які раніше не були потрібні для реляційних баз даних. Лідерами ринку є - Hadoop і MongoDB, слідом за "Кассандрою", "Редискою", CouchDB і "Риаком". Сучасні дослідження показують, що є два продукти NOSQL, які домінують над системними інженерами, архітекторами програмного забезпечення, розробниками серед десятка аналогічних технологій – це MongoDB і Hadoop. Ринок показує, що великі компанії використовують нові методології розробки баз даних NoSQL та інтегрують їх у свої продукти (Oracle, IBM). Ринок БД потроху перетворюється в стандарт PasS, Redis і MongoDB, Edlich. Такі продукти, як Neo4j, MongoDb і CouchDb, стали об'єктом підтримки та інвестування венчурного капіталу.
Цікаво по темі
Як на комп'ютері встановити «Ексель»: стандартні і нетривіальні методи
Як на комп'ютері встановити «Ексель»: стандартні і нетривіальні методи
Практично всі ті люди, які працюють з електронною документацією, найчастіше для виконання повсякденних завдань з усього офісного пакета, що
Класифікація БД: варіанти, моделі даних і основні характеристики
Класифікація БД: варіанти, моделі даних і основні характеристики
В якості БД позначається набір даних, які необхідно упорядкувати, а система управління базою даних (СУБД) відповідає за її адміністрування,
PostgreSQL vs. MySQL - порівняння, особливості та відгуки
PostgreSQL vs. MySQL - порівняння, особливості та відгуки
Вибираючи, яку базу даних використовувати, потрібно постаратися не зробити помилку, вважаючи, що всі РСУБД з відкритим вихідним кодом однакові.
Microsoft Access - реляційна система управління базами даних: склад, сумісність
Microsoft Access - реляційна система управління базами даних: склад, сумісність
Поняття баз даних (DB – database) використовується скрізь. Компанії, фірми та організації різного рівня використовують БД у своїй роботі, довіряючи
Докладно про те, як зв'язати таблиці в access
Докладно про те, як зв'язати таблиці в access
Багато хто з нас працюють на виробництві, де найчастіше для ведення звіту використовуються бази даних. У даній статті ми докладно розповімо про те,
Установка SQL With
Установка SQL With
SQL With Server — система управління реляційними базами даних Microsoft (СУБД). Це повнофункціональна база даних, в першу чергу призначена для