Останнім часом NoSQL набув величезної популярності.
Які переваги NoSQL перед традиційними RDBMS ?
Останнім часом NoSQL набув величезної популярності.
Які переваги NoSQL перед традиційними RDBMS ?
Відповіді:
Не всі дані є реляційними. У таких ситуаціях NoSQL може бути корисним.
З урахуванням сказаного, NoSQL означає "Не тільки SQL". Він не призначений для того, щоб збити SQL або замінити його.
У SQL є кілька дуже великих переваг:
Ті не пішли.
Помилково розглядати це як аргумент або. NoSQL - це альтернатива, яку люди повинні розглянути, коли це підходить, ось і все.
Документи можуть зберігатися в нереляційних базах даних, як CouchDB.
Можливо, читання цього допоможе.
SELECT blob FROM images WHERE blob CONTAINS('red car')
. Таким чином, хоча ви можете зберігати дані в сировині в базі даних, ви не можете їх шукати, не додаючи метадані. Повнотекстові пошукові модулі в системах RDBMS усувають частину напівструктурної прогалини.
Історія, схоже, виглядає так:
Google потребує рівня зберігання для їх перевернутого індексу пошуку. Вони вважають, що традиційна RDBMS не збирається її скорочувати. Тому вони реалізують сховище даних NoSQL, BigTable поверх своєї файлової системи GFS. Основна частина полягає в тому, що тисячі дешевих товарних апаратних машин забезпечують швидкість і надмірність.
Всі інші розуміють, що саме зробив Google.
Теорема CAP пивоварів доведена. Всі системи RDBMS, які використовуються, є системами CA. Люди також починають грати із системами CP та AP. Магазини K / V значно простіші, тому вони є основним засобом для дослідження.
Системи програмного забезпечення як послуга взагалі не забезпечують схожий на SQL сховище. Отже, людей все більше цікавить магазини типу NoSQL.
Я думаю, що значна частина зльоту може бути пов'язана з цією історією. Масштабування Google взяло нові ідеї в Google, і всі інші підходять, тому що це єдине рішення, яке вони знають зараз щодо проблеми масштабування. Отже, ви готові переробити все навколо ідеї Google про розподілену базу даних, оскільки це єдиний спосіб масштабування понад певний розмір.
C - Консистенція
A - Доступність
P - Допуск розділів
K / V - Ключ / Значення
NoSQL кращий за RDBMS через наступні причини / властивості NoSQL
Редагувати:
Щоб відповісти "чому RDBMS не може масштабувати", погляньте на RDBMS Накладні файли pdf, написані Ставросом Харізопулосом, Даніелем Дж. Абаді, Самуелем Мадденом та Майклом Стоунбракером
RDBMS має проблеми з обробкою величезних обсягів даних Terabytes & Peta bytes . Навіть якщо у вас є надлишковий масив незалежних / недорогих дисків (RAID) та подрібнення даних, він не забезпечує масштабування для величезного обсягу даних. Вам потрібно дуже дороге обладнання.
Ведення журналу : збирання записів журналу та відстеження всіх змін у структурах баз даних уповільнює продуктивність. Ведення журналу може не бути необхідним, якщо відновлення не є вимогою або якщо відновлення забезпечується іншими засобами (наприклад, іншими сайтами в мережі).
Блокування : традиційне двофазне блокування створює значні накладні витрати, оскільки всі звернення до структур бази даних регулюються окремим об'єктом, менеджером блокування.
Фіксація : У багатопотоковій базі даних багато структур даних повинні бути зафіксовані, перш ніж отримати доступ до них. Видалення цієї функції та перехід до однопотокового підходу має помітний вплив на продуктивність.
Управління буфером : Основна система бази даних пам'яті не потребує доступу до сторінок через буферний пул, виключаючи рівень непрямості при кожному доступі до запису.
Це не означає, що нам доводиться використовувати NoSQL над SQL.
Тим не менш, RDBMS є кращою за NoSQL з наступних причин / властивостей RDBMS
Ми повинні використовувати RDBMS (SQL) і NoSQL (не тільки SQL) залежно від ділового випадку та вимог
NOSQL не має особливих переваг перед реляційною моделлю баз даних. NOSQL вирішує певні обмеження поточних СУБД, але це не передбачає принципово нових можливостей у порівнянні з попередніми моделями даних.
NOSQL означає лише відсутність SQL (або "не тільки SQL"), але це не означає те саме, що немає реляційних . Реляційна база даних в принципі зробила б дуже хороше рішення NOSQL - це просто те, що жоден із поточного набору продуктів NOSQL не використовує реляційну модель.
RDBMS зосереджуються більше на взаєминах, а NoSQL - на пам’яті.
Ви можете розглянути можливість використання NoSQL, коли ваші RDBMS досягають вузьких місць. NoSQL робить RDBMS більш гнучким.
Найбільшою перевагою NoSQL перед RDBMS є масштабованість .
Бази даних NoSQL легко розширюють масштаб до багатьох вузлів, але для RDBMS це дуже важко.
Масштабованість забезпечує не тільки більше місця на зберігання, але й набагато вищу продуктивність, оскільки багато хостів працюють одночасно.
Просто додавання до всієї інформації, наведеної вище
Переваги NoSql:
1) NoSQL добре, якщо ви хочете бути готовими до виробництва, завдяки його підтримці без схем і об'єктно-орієнтованої архітектури.
2) Контрольовані файли NoSql зрештою несуперечливі, що простою мовою означає, що вони не забезпечать блокування даних (документів), як це стосується RDBMS, і що це означає, що останній знімок даних завжди доступний і тим самим збільшує затримку вашої програми .
3) Він використовує стратегію MVCC (Multi view concurrency control) для підтримки та створення знімків даних (документів).
4) Якщо ви хочете мати індексовані дані, ви можете створити перегляд, який автоматично індексує дані за поданим вами визначенням перегляду.
Недоліки NoSql:
1) Його напевно не підходить для великих важких транзакційних застосувань, оскільки він врешті-решт є стійким і не підтримує властивості кислотних кислот.
2) Крім того, він створює декілька знімків (ревізій) ваших даних (документів), оскільки використовує методологію MVCC для контролю сумісності, в результаті чого простір витрачається швидше, ніж раніше, що робить ущільнення і, отже, повторне деіндексації частішим, і це сповільнить ваш відповідь програми, коли дані та транзакції у вашій програмі зростають. Щоб протистояти тому, що ви можете горизонтально масштабувати вузли, але знову ж таки, це буде дорожчою порівняно з базою даних sql.
З сайту mongodb.com :
Бази даних NoSQL відрізняються від старих реляційних технологій у чотирьох основних сферах:
Моделі даних : База даних NoSQL дозволяє створювати додаток без необхідності спочатку визначати схему на відміну від реляційних баз даних, які змушують вас визначити схему, перш ніж ви зможете додати будь-які дані до системи. Жодна заздалегідь визначена схема не дозволяє значно оновлювати бази даних NoSQL, оскільки змінюються ваші дані та вимоги.
Структура даних : Реляційні бази даних були побудовані в епоху, коли дані були досить структуровані та чітко визначені своїми взаємозв'язками. Бази даних NoSQL розроблені для обробки неструктурованих даних (наприклад, текстів, публікацій у соціальних мережах, відео, електронної пошти), що складає більшу частину даних, що існують сьогодні.
Масштабування : Набагато дешевше масштабувати базу даних NoSQL, ніж реляційну базу даних, оскільки ви можете додати потужність, масштабуючи масштаб на дешевих товарних серверах. Для реляційних баз даних, з іншого боку, потрібен єдиний сервер для розміщення всієї вашої бази даних. Для масштабування вам потрібно придбати більший, дорожчий сервер.
Модель розробки : Бази даних NoSQL є відкритим кодом, тоді як реляційні бази даних, як правило, є закритим джерелом, а ліцензійні збори сплачуються за використання їх програмного забезпечення. З NoSQL ви можете розпочати проект без великих інвестицій у плату за програмне забезпечення.