систем стало розвиток Інтернету, ряд сервісів якого (DNS-сервери, пошукові машини, соціальні мережі і т.д.) спочатку повинні обробляти великі масиви інформації і відповідати на величезне число запитів. Це вимагає не тільки максимального врахування будь-якої специфіки оброблюваної інформації, а й переходу на розподілені обчислення. Ніякої як завгодно потужний сервер в принципі не здатний самотужки забезпечити потрібну продуктивність. У підсумку основними принципами NoSQL стали відмова від реляційної моделі для урахування специфіки оброблюваних даних, а також гарна горизонтальна масштабованість до сотень і тисяч серверів для забезпечення швидкості роботи. Однак це виявило ще одну проблему, сформульовану у вигляді теореми CAP (Consistence, Availability, Partition tolerance - «узгодженість, доступність, стійкість до поділу»): у розподіленої обчислювальної системі неможливо одночасно виконати вимоги щодо узгодженості даних, доступності системи та стійкості до поділу. Під останнім вимогою розуміється те, що система не розпадається на декілька ізольованих секцій, усередині яких виконуються вимоги щодо узгодженості і доступності.
Схожі сторінки доказ теореми CAP засноване на простих міркуваннях. Нехай розподілена система складається з N серверів, кожен з яких обробляє запити деякого числа клієнтських додатків (рис. 1). При обробці запиту сервер повинен гарантувати актуальність інформації, що міститься в що надсилається відповіді на запит, для чого попередньо потрібно виконати синхронізацію вмісту його власної бази з іншими серверами. Таким чином, серверу необхідно чекати повної синхронізації або генерувати відповідь на основі не синхронізованих даних. Можливий і третій варіант, коли з якихось причин синхронізація проводиться тільки з частиною серверів системи. У першому випадку виявляється не виконаним вимога по доступності, у другому - по узгодженості, в третьому - по стійкості до поділу.
Іноді розподілені системи класифікують за видами виконуваних вимог CAP: CA - система задовольняє вимогам по узгодженості та доступності, CP - по узгодженості і стійкості, AP - по доступності і стійкості. У будь-якому з трьох випадків не буде виконано властивість ACID (Atomicity, Consistency, Isolation, Durability - «атомарность, узгодженість, ізольованість, довговічність»), зазвичай суворо дотримуване в реляційних СУБД, а йому протиставляється властивість BASE (Basically Available, Soft State, Eventually consistent). При збої в деяких вузлах системи відмова отримує тільки частину додатків, взаємодіючих з вийшли з ладу вузлами. У ході взаємодії використовуються протоколи без стану, що знижує навантаження на окремі вузли і дозволяє її перерозподіляти. Нарешті, допустима тимчасова неузгодженість даних у різних вузлах системи за умови, що інформація буде синхронізована через деякий доступний проміжок часу. BASE використовується для найбільш загального опису вимог до розподілених NoSQL-системам, що підпадають під твердження теореми CAP і не задовольняють вимогам ACID.
Системи NoSQL
Існує безліч різних NoSQL-систем обробки даних, в якому можна виділити наступні основні класи: зберігання XML-документів, зберігання пар «ключ - значення», зберігання графів, зберігання кортежів довільної довжини, Triple Storages, багатовимірні дані і т. д. p>
Сховища XML-документів (BaseX, eXist) являють собою засоби для роботи з великою кількістю XML-документів або з документами вел...