Акронім NoSQL був придуманий у 1998 році. Багато людей думають, що NoSQL – це принизливий термін, створений для того, щоб тикати в SQL. Насправді цей термін означає не тільки SQL. Ідея полягає в тому, що обидві технології можуть співіснувати, і кожна має своє місце. Рух NoSQL був у новинах в останні кілька років, оскільки багато лідерів Web 2.0 прийняли технологію NoSQL. Такі компанії, як Facebook, Twitter, Digg, Amazon, LinkedIn і Google, так чи інакше використовують NoSQL. Давайте розберемо NoSQL, щоб ви могли пояснити це своєму CIO або навіть своїм колегам.

База даних MYSQL.

NoSQL виник із потреби

Зберігання даних: Цифрові дані, що зберігаються у світі, вимірюються в екзабайтах. Ексабайт дорівнює одному мільярду гігабайт (ГБ) даних. Згідно з Internet.com, обсяг збережених даних, доданих у 2006 році, становив 161 екзабайт. Всього через 4 роки, у 2010 році, обсяг збережених даних становитиме майже 1000 ExaBytes, що є збільшенням більш ніж на 500%. Іншими словами, у світі зберігається багато даних, і вони будуть продовжувати зростати.

Взаємопов'язані дані: Дані продовжують ставати все більш пов’язаними. Створення Інтернету сприяють гіперпосиланням, блоги мають pingbacks, а кожна велика система соціальних мереж має теги, які пов’язують речі разом. Основні системи створені так, щоб бути взаємопов’язаними.

Складна структура даних: NoSQL може легко обробляти ієрархічні вкладені структури даних. Щоб виконати те ж саме в SQL, вам знадобиться кілька реляційних таблиць з усіма видами ключів. Крім того, існує зв’язок між продуктивністю та складністю даних. У традиційній СУБД продуктивність може погіршитися, оскільки ми зберігаємо величезні обсяги даних, необхідних у програмах соціальних мереж і семантична мережа.

Що таке NoSQL?

Я думаю, що один із способів визначити NoSQL - це розглянути те, чим він не є. Це не SQL і не реляційний. Як випливає з назви, це не заміна СУБД, а доповнення до неї. NoSQL розроблено для розподілених сховищ даних для дуже великих потреб даних. Подумайте про Facebook з його 500 000 000 користувачів або про Twitter, який щодня накопичує терабіти даних.

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

Категорії NoSQL

Нинішній світ NoSQL вписується в 4 основні категорії.

  1. Магазини ключів-значень засновані насамперед на Папір Динамо від Amazon який був написаний у 2007 році. Основна ідея — існування хеш-таблиці, де є унікальний ключ і вказівник на певний елемент даних. Ці відображення зазвичай супроводжуються механізмами кешу для максимальної продуктивності.
    1. Сімейні магазини Column були створені для зберігання та обробки дуже великих обсягів даних, розподілених на багатьох машинах. Є ще ключі, але вони вказують на кілька стовпців. У випадку BigTable (модель NoSQL сімейства стовпців Google) рядки ідентифікуються ключем рядка з даними, відсортованими та збереженими за цим ключом. Стовпчики розташовані за сімейством колонок.
  2. Бази даних документів були натхненні Lotus Notes і подібні до сховищ "ключ-значення". Модель – це в основному версійні документи, які є колекціями інших колекцій ключ-значення. Напівструктуровані документи зберігаються у таких форматах, як JSON.
  3. Графова база данихs будуються з вузлами, зв'язками між нотами та властивостями вузлів. Замість таблиць рядків і стовпців і жорсткої структури SQL використовується гнучка модель графіка, яка може масштабуватися на багатьох машинах.

Основні гравці NoSQL

Основні гравці в NoSQL з'явилися насамперед завдяки організаціям, які їх прийняли. Деякі з найбільших технологій NoSQL включають:

  • Динамо: Dynamo було створено Amazon.com і є найвідомішою базою даних NoSQL з ключем і значенням. Amazon потребувала широкомасштабованої розподіленої платформи для свого бізнесу електронної комерції, тому вони розробили Dynamo. Amazon S3 використовує Dynamo як механізм зберігання.
  • Кассандра:Кассандра була створена Facebook з відкритим кодом і є базою даних NoSQL, орієнтованою на стовпці.
  • BigTable: BigTable — це запатентована база даних Google, орієнтована на стовпці. Google дозволяє використовувати BigTable, але лише для Google App Engine.
  • SimpleDB: SimpleDB — це ще одна база даних Amazon. Використовується для Amazon EC2 і S3, він є частиною Amazon Web Services, який стягує комісію залежно від використання.
  • CouchDB:CouchDB поряд з MongoDB є документно-орієнтовані бази даних NoSQL з відкритим вихідним кодом.
  • Neo4J:Neo4j є відкритою базою даних графіків.

Запит NoSQL

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

Багато платформ NoSQL дозволяють використовувати REST-інтерфейси до даних. Інші API запитів пропозиції. Розроблено кілька інструментів запитів, які намагаються запитувати кілька баз даних NoSQL. Ці інструменти зазвичай працюють в одній категорії NoSQL. Одним із прикладів є SPARQL. SPARQL — це специфікація декларативного запиту, розроблена для графічних баз даних. Ось приклад запиту SPARQL, який отримує URL-адресу певного блогера (з люб’язності IBM):

PREFIX foaf: 
SELECT ?url
ВІД
ДЕ {
?співробітник foaf: ім'я "Jon Foobar".
?дописувач foaf: веблог ?url .
}

Майбутнє NoSQL

Організації, які мають значні потреби в зберіганні даних, серйозно дивляться на NoSQL. Очевидно, ця концепція не отримує такого поширення в менших організаціях. Згідно з опитуванням, проведеним Information Week, 44% ІТ-спеціалістів не чули про NoSQL. Крім того, лише 1% респондентів повідомили, що NoSQL є частиною їхнього стратегічного напряму. Очевидно, що NoSQL має своє місце в нашому підключеному світі, але йому доведеться продовжувати розвиватися, щоб отримати масову привабливість, яку, на думку багатьох, вона могла б мати.