там, де SQL недостатньо гнучкий, і не витісняти його там, де він справляється зі своїми завданнями. p align="justify"> В основі ідеї NoSQL лежить:
нереляційних модель даних,
Відкритий вихідний код,
Хороша горизонтальна масштабованість.
масштабованість - автоматичний розподіл між декількома серверами.
Такі системи ми називаємо розподіленими базами даних (розподіл йде між комп'ютерами по локальній мережі). У них входять:
Cassandra, HBase, Riak, Scalaris, Voldemort.
В якості одного з методологічних обгрунтувань підходу NoSQL використовується евристичний принцип, відомий як теорема Ca, який стверджує, що в розподіленої системі неможливо одночасно забезпечити узгодженість даних, доступність (англ. availability - коректність відгуку по будь-якому запиту) і стійкість до расщиплению розподіленої системи на ізольовані частини Таким чином, при необхідності досягнення високої доступності і стійкості до поділу планується не фокусуватися на засобах забезпечення узгодженості даних, забезпечуваних традиційними SQL-орієнтованими СУБД з транзакційними механізмами на принципах ACI.
Опис деяких СУБД з даного руху
couchDB
Автори:
Damien Katz, JanLehnardt, Noah Slater, Christopher Lenz, j. ChrisAnderson. p align="justify"> Розробник - Apeche SoftwareFoundation.
CouchDB - документно-оріентірованнаясістема управління базами даних, яка не потребує опису схеми даних. Ця програма є вільною, відкритою і написана мовою Erlang. CouchDB можна розглядати як сервер веб-додатків; для реалізації цієї ідеї в неї встроенпроізводітельний веб-сервер, а програмний код, як і дані, зберігається в тій же базі данних.для автоматизації роботи з пріложеніяміCouchDB використовується утиліта CouchApp. p align="justify"> Подібно іншим документно-оріентірованнимСУБД (Mnesia, Lotus Notes, MongoDB), і на відміну від реляційних СУБД, CouchDB призначена для роботи з напів-структурованою інформацією і має такі особливості:
Дані зберігаються не в рядках і колонках, а у вигляді JSON-подібних документів, моделлю яких є не таблиці, а дерева;
Чи не підтримується типізація елементів даних, тобто сопостовленія окремих полях документів типів integer, DATE і пр. замість цього користувач може написати функцію-валідатор (функцію перевіряючу відповідність документа певному формату);
Цілісність бази даних забезпечується виключно на рівні окремих записів (але не на рівні зв'язків між ними);
Зв'язки між таблицями або записами принципово не підтримуються, відповідно опірація об'єднання (JOIN) між таблицями не визначена;
Для побудови індексів і виконання за...