База даних документа проти реляційної бази даних: як вибрати?


16

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

Я читав деякі статті, але вони були занадто теоретичними. Мені хотілося б два реальні випадки:

  1. коли перехід від реляційної - до бази даних документів покращив
  2. коли перехід з документа на реляційну базу даних покращився

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


8
Неправильний підхід. Йдеться не про "продуктивність" чи "масштабованість". Йдеться про те, яка модель відповідає проблемі, яку ви намагаєтеся вирішити. Можливо, ви хочете оновити своє запитання, щоб уникнути думки, що, можливо, реляційна база даних не підходить для численних проблем.
S.Lott

2
@ S.Lott, вибір часто є дуже ефективним. врахуйте, що будь-яка реляційна БД може бути використана як простий БД документа - лише продуктивність буде відмінною характеристикою.
edA-qa mort-ora-y

Я переформулював своє запитання, щоб воно ні в якому разі не завантажувалося.
Йохан Бурет

2
@ edA-qa mort-ora-y: "будь-яка реляційна БД може використовуватися як простий БД документа". Це повинно бути помилковим, або люди не придумали б альтернативи. "тільки виступ буде відмінною характеристикою". Вірно лише, якщо припустити, що реляційна модель робить все однаково добре. Якби це все робило, альтернативи не було б. І все-таки. У нас є альтернативи. Є багато проблем (як ієрархії), які не відповідають ідеально реляційній моделі і вимагають хитромудрих хитрощів. Або альтернативна модель даних.
S.Lott

"прочитати деякі статті"? Будь ласка, вкажіть декілька посилань чи назв, посилань чи цитат Ми не знаємо, що для вас означає "занадто теоретичний".
S.Lott

Відповіді:


15

Основною причиною вибору бази даних NoSQL в останні роки була наявність . Для таких компаній, як Amazon, Google і Facebook, час простою або близько того неприйнятний. Щоб досягти високої доступності, вам потрібно зменшити точку відмови, що означає, що вам потрібно використовувати розподілену систему з декількома комп'ютерами на випадок збою комп'ютера, сервіс все ще доступний.

Традиційні бази даних Relatione не дуже зручні в розподіленій множинній програмі. Ось чому NoSQL користується такою популярністю останнім часом. Тож якщо вам потрібна висока доступність, ви можете вибрати базу даних NoSQL, наприклад Riak, Cassandra, HBase, S3 або BigTable.

Існує хороша публікація в блозі про динамо Amazon, що є хорошим вступом до розподілених баз даних NoSQL.

Тепер термін NoSQL дуже широкий, тому існує безліч баз даних NoSQL, які не розповсюджуються. Але вони вирішують інші проблеми. Наприклад, Neo4j - база даних графіків є хорошою для типу запитів, для яких традиційні RDBMS не оптимізовані. Або, як у вашому випадку, база даних документів, де вам не потрібно змінювати схему, якщо ви хочете додати деякі поля для деяких документів. Іншими словами, база даних документів є хорошою, коли більшість постів (документів) має різні поля, тому реляційна таблиця з попередньо визначеними стовпцями не є корисною.

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


+1, погоджено, гнучкість - це величезна ціна, яку потрібно платити, якщо цього не потрібно.
maple_shaft

12

У мене простий підхід до визначення бази даних, яка найкраще відповідає даним.

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

Коли відповідь - «Електронна таблиця», це явна ознака того, що реляційна модель і традиційна RDBMS найкраще відповідають завданням. Якщо дані дійсно прості, наприклад, лише пари ключових значень або прості таблиці та цілісність референції - це не тема, то база даних NoSQL, мабуть, найкраще підходить для виконання завдання та може значно підвищити продуктивність!

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

Коли дані є більш схожими на документи, наприклад, ієрархічно структуровані текстові дані без чітких зв’язків, то я негайно думаю про XML-базу даних, яка дозволяє легко зберігати ієрархічні структуровані документи. Іноді найкраще використовувати програмне забезпечення для управління документами.

Отже, щоб дати конкретну та просту відповідь на обидва ваші запитання: Це залежить від даних.

коли перехід від реляційної - до бази даних документів покращив

Коли вам потрібно зберегти ієрархічно структуровані текстові дані, Xml-база даних може бути великим поліпшенням у плані ремонтопридатності та, ймовірно, також масштабованості.

коли перехід з документа на реляційну базу даних покращився

Ну, наприклад, коли дані здебільшого мають табличну форму з чіткими співвідношеннями і вам потрібно гарантувати цілісність.


2
+1 за таблицю проти аналогії документів - величезна допомога - спасибі.
HDave

10

Нам довелося відмовитися від реляційної моделі, тому що отримані нами дані не мали простої, очевидної, фіксованої статичної схеми.

Користувачі - і історії користувачів - не мали фіксованої статичної схеми.

Ми намагалися нав'язати фіксовану, статичну схему RDBMS, але це була помилка.

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

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

Неправильно визначена колекція елементів даних - це те, що фактично потрібно користувачам для їх використання.

Фіксована статична схема реляційної моделі не відповідала нашим випадкам використання.


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