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.
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 включають в себе:
Структури індексації
Індексування – це процес зв’язування ключа з розташуванням відповідного запису даних в СУБД. Існує безліч структур індексування даних, використовуваних в базах даних 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 і SQL конкурують між собою, але, на думку багатьох фахівців, перша має більше переваг порівняно з традиційними реляційними базами даних:
Недоліки No-системи
Бази даних NoSQL працюють по-різному, все залежить від документів, які в них зберігаються, але можна сказати, що вони є важливим інструментом в сучасних компаніях, оскільки зберігають необхідну інформацію користувачів і операцій.
Вони не ідеальні, тому не завжди є правильним вибором для програмістів. З одного боку, більшість їх не підтримують функції надійності, які спочатку підтримуються системами реляційних БД. Ці характеристики надійності можна узагальнити як атомарність, узгодженість, ізоляцію і довговічність. Це означає, що NoSQL, які не підтримують ці функції, забезпечують узгодженість торгівлі для продуктивності і масштабованості.
Щоб підтримувати функції забезпечення надійності та узгодженості, розробники повинні реалізувати власний закритий код, який збільшує складність системи. Це обмежує число додатків, які можуть покладатися на NoSQL для безпечних і надійних транзакцій, наприклад, банківські системи.
Застосування бази даних NoSQL
Академічні працівники, інженери, архітектори програмного забезпечення, дизайнери і програмісти вимагають більш глибокого знання структур даних, які раніше не були потрібні для реляційних баз даних. Лідерами ринку є – Hadoop і MongoDB, слідом за “Кассандрою”, “Редискою”, CouchDB і “Риаком”. Сучасні дослідження показують, що є два продукти NOSQL, які домінують над системними інженерами, архітекторами програмного забезпечення, розробниками серед десятка аналогічних технологій – це MongoDB і Hadoop.
Ринок показує, що великі компанії використовують нові методології розробки баз даних NoSQL та інтегрують їх у свої продукти (Oracle, IBM). Ринок БД потроху перетворюється в стандарт PasS, Redis і MongoDB, Edlich. Такі продукти, як Neo4j, MongoDb і CouchDb, стали об’єктом підтримки та інвестування венчурного капіталу.