Огляд баз даних NoSQL

Огляд баз даних NoSQL

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

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

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

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

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

Що таке NoSQL?

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

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

Категорії NoSQL

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

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

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

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

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

Опитування NoSQL

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

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

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT? Url
FROM <bloggers.rdf>
WHERE {
? Contributor foaf: name ""Jon Foobar"".
? contributor foaf: weblog? url.
}

Майбутнє NoSQL

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