NoSql vs реляційна база даних


Відповіді:


123

Не всі дані є реляційними. У таких ситуаціях NoSQL може бути корисним.

З урахуванням сказаного, NoSQL означає "Не тільки SQL". Він не призначений для того, щоб збити SQL або замінити його.

У SQL є кілька дуже великих переваг:

  1. Сильна математична основа.
  2. Декларативний синтаксис.
  3. Відома мова в структурованій мові запитів (SQL).

Ті не пішли.

Помилково розглядати це як аргумент або. NoSQL - це альтернатива, яку люди повинні розглянути, коли це підходить, ось і все.

Документи можуть зберігатися в нереляційних базах даних, як CouchDB.

Можливо, читання цього допоможе.


10
Чи можете ви навести кілька прикладів нереляційних даних?
user496949

7
Документи та зображення також можна зберігати всередині RDBMS, як SQL Server та Oracle? Тоді чому NoSQL?
user496949

2
Напівструктуровані дані є одним з таких класів. Він містить XML, електронні листи, JSON тощо. Дивіться сторінку вікіпедії на ньому. Загальне правило полягає в тому, що структура існує, але вона є чітко визначеною і динамічно розширюваною (останні прагнуть класифікуватися за реляційною моделлю - і хоча моделювати її неможливо, вона, безумовно, громіздка). Ще один клас - "природні дані": роман, зображення, обидва без доданих метаданих.
Я даю відповіді на решти

2
Ну, ти не можеш цього зробити SELECT blob FROM images WHERE blob CONTAINS('red car'). Таким чином, хоча ви можете зберігати дані в сировині в базі даних, ви не можете їх шукати, не додаючи метадані. Повнотекстові пошукові модулі в системах RDBMS усувають частину напівструктурної прогалини.
Я даю відповіді на решти

1
@duffymo: Документи не є "нереляційними". Документи часто зберігаються в SQL СУБД, і для цього вам не потрібні СУБД NOSQL. Насправді в базах даних NOSQL часто використовуються моделі даних, які менш загальні та обмежені в застосуванні, ніж реляційна модель. Наприклад, бази даних графіків. Тип даних, що зберігаються, не пояснює жодної переваги NOSQL.
nvogel

98

Історія, схоже, виглядає так:

  1. Google потребує рівня зберігання для їх перевернутого індексу пошуку. Вони вважають, що традиційна RDBMS не збирається її скорочувати. Тому вони реалізують сховище даних NoSQL, BigTable поверх своєї файлової системи GFS. Основна частина полягає в тому, що тисячі дешевих товарних апаратних машин забезпечують швидкість і надмірність.

  2. Всі інші розуміють, що саме зробив Google.

  3. Теорема CAP пивоварів доведена. Всі системи RDBMS, які використовуються, є системами CA. Люди також починають грати із системами CP та AP. Магазини K / V значно простіші, тому вони є основним засобом для дослідження.

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

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

C - Консистенція
A - Доступність
P - Допуск розділів
K / V - Ключ / Значення


10
Що таке CAP, CP, AP, K / V?
knownasilya

3
Знайдіть теорему CAP у Вікіпедії. CA і CP випливає звідти. K / V - короткий для Key / Value, (розподілене) кінцеве відображення від клавіш до значень.
Я ПОДАЮ ВІДПОВІДІ КРАПУ

" Всі інші розуміють, що Google тільки що зробив. " Lol Мені здається, що мені відповідь шотландця (він же НЕ ТРЕБА).
ruffin

38

NoSQL кращий за RDBMS через наступні причини / властивості NoSQL

  1. Він підтримує напівструктуровані дані та непостійні дані
  2. У ньому немає схеми
  3. Пропускна здатність читання / запису дуже висока
  4. Горизонтальну масштабованість можна досягти легко
  5. Підтримує Bigdata в томах Terra Bytes & Peta Bytes
  6. Забезпечує хорошу підтримку аналітичних інструментів поверх Bigdata
  7. Можна розмістити на дешевших апаратних машинах
  8. Для збільшення продуктивності запитів доступний варіант кешування в пам'яті
  9. Швидші життєві цикли для розробників

Редагувати:

Щоб відповісти "чому RDBMS не може масштабувати", погляньте на RDBMS Накладні файли pdf, написані Ставросом Харізопулосом, Даніелем Дж. Абаді, Самуелем Мадденом та Майклом Стоунбракером

RDBMS має проблеми з обробкою величезних обсягів даних Terabytes & Peta bytes . Навіть якщо у вас є надлишковий масив незалежних / недорогих дисків (RAID) та подрібнення даних, він не забезпечує масштабування для величезного обсягу даних. Вам потрібно дуже дороге обладнання.

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

Блокування : традиційне двофазне блокування створює значні накладні витрати, оскільки всі звернення до структур бази даних регулюються окремим об'єктом, менеджером блокування.

Фіксація : У багатопотоковій базі даних багато структур даних повинні бути зафіксовані, перш ніж отримати доступ до них. Видалення цієї функції та перехід до однопотокового підходу має помітний вплив на продуктивність.

Управління буфером : Основна система бази даних пам'яті не потребує доступу до сторінок через буферний пул, виключаючи рівень непрямості при кожному доступі до запису.

Це не означає, що нам доводиться використовувати NoSQL над SQL.

Тим не менш, RDBMS є кращою за NoSQL з наступних причин / властивостей RDBMS

  1. Операції з ACID властивостями - атомарность, узгодженість, ізоляція і довговічність
  2. Дотримання сильної схеми даних, що записуються / читаються
  3. Управління запитами в режимі реального часу (у випадку розміру даних <10 байт Тера)
  4. Виконання складних запитів, що включають приєднання & групування за допомогою пунктів

Ми повинні використовувати RDBMS (SQL) і NoSQL (не тільки SQL) залежно від ділового випадку та вимог


2
Варто зазначити, що деякі бази даних NoSQL підтримують транзакції ACID.
Дейв Кассель

15

NOSQL не має особливих переваг перед реляційною моделлю баз даних. NOSQL вирішує певні обмеження поточних СУБД, але це не передбачає принципово нових можливостей у порівнянні з попередніми моделями даних.

NOSQL означає лише відсутність SQL (або "не тільки SQL"), але це не означає те саме, що немає реляційних . Реляційна база даних в принципі зробила б дуже хороше рішення NOSQL - це просто те, що жоден із поточного набору продуктів NOSQL не використовує реляційну модель.


4
Схоже, що на нещодавній конференції прошарків О'Рейлі Марк Мадсен виклав нову інтерпретацію "NoSQL" у своїй історії баз даних, коли він замінив "Не тільки SQL". Зараз: "Ні, SQL" ;-)
Лукас Едер

4

RDBMS зосереджуються більше на взаєминах, а NoSQL - на пам’яті.

Ви можете розглянути можливість використання NoSQL, коли ваші RDBMS досягають вузьких місць. NoSQL робить RDBMS більш гнучким.


4

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


3

Якщо вам потрібно обробити величезну кількість даних з високою продуктивністю

АБО

Якщо модель даних не визначена заздалегідь

тоді

База даних NoSQL - кращий вибір.


2

Просто додавання до всієї інформації, наведеної вище

Переваги NoSql:

1) NoSQL добре, якщо ви хочете бути готовими до виробництва, завдяки його підтримці без схем і об'єктно-орієнтованої архітектури.

2) Контрольовані файли NoSql зрештою несуперечливі, що простою мовою означає, що вони не забезпечать блокування даних (документів), як це стосується RDBMS, і що це означає, що останній знімок даних завжди доступний і тим самим збільшує затримку вашої програми .

3) Він використовує стратегію MVCC (Multi view concurrency control) для підтримки та створення знімків даних (документів).

4) Якщо ви хочете мати індексовані дані, ви можете створити перегляд, який автоматично індексує дані за поданим вами визначенням перегляду.

Недоліки NoSql:

1) Його напевно не підходить для великих важких транзакційних застосувань, оскільки він врешті-решт є стійким і не підтримує властивості кислотних кислот.

2) Крім того, він створює декілька знімків (ревізій) ваших даних (документів), оскільки використовує методологію MVCC для контролю сумісності, в результаті чого простір витрачається швидше, ніж раніше, що робить ущільнення і, отже, повторне деіндексації частішим, і це сповільнить ваш відповідь програми, коли дані та транзакції у вашій програмі зростають. Щоб протистояти тому, що ви можете горизонтально масштабувати вузли, але знову ж таки, це буде дорожчою порівняно з базою даних sql.


1

З сайту mongodb.com :

Бази даних NoSQL відрізняються від старих реляційних технологій у чотирьох основних сферах:

Моделі даних : База даних NoSQL дозволяє створювати додаток без необхідності спочатку визначати схему на відміну від реляційних баз даних, які змушують вас визначити схему, перш ніж ви зможете додати будь-які дані до системи. Жодна заздалегідь визначена схема не дозволяє значно оновлювати бази даних NoSQL, оскільки змінюються ваші дані та вимоги.

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.