Дані в наших реляційних СУБД стають великими, настав час перейти на NoSQL?


17

Ми створили додаток у соціальній мережі для цілей eLearning. Це експериментальний проект, який ми досліджуємо в нашій лабораторії. Він деякий час використовується в деяких випадках, і дані в наших реляційних СУБД (SQL Server 2008) набувають значних масштабів. Зараз це кілька гігабайт, і таблиці сильно пов’язані між собою. Продуктивність все ще чудова, але коли ми повинні розглянути інші варіанти? Це питання продуктивності?


3
Для будь-яких соціальних мереж я дуже рекомендую базу даних графіків, таких як Neo4j або OrientDB
Apollo

Відповіді:


14

Кілька гігабайт не дуже « великі ». Це більше схоже на звичайний розмір БД підприємства. Поки ви переходите через ПК під час приєднання до таблиць, це має спрацювати дуже добре, навіть у майбутньому (доки ви не отримуєте даних про туберкульоз на день).

Більшість фахівців, що працюють у середовищі великих даних, вважають > ~ 5 ТБ як початок терміна "великі дані". Але навіть тоді це не завжди найкращий спосіб просто встановити наступну найкращу базу даних nosql. Ви завжди повинні думати про завдання, яке ви хочете архівувати з даними (сукупність, читання, пошук, шахта, ..), щоб знайти найкращі інструменти для вашої проблеми.

тобто, якщо ви здійснюєте багато пошукових запитів у вашій базі даних, можливо, краще буде запустити екземпляр / кластер solr і час від часу денормалізувати ваші дані з такої СУБД, як Postgres або ваш SQL Server, і вводити їх у solr, а не просто переміщувати дані від sql до nosql в умовах стійкості та продуктивності.


10

Щоб відповісти на це запитання, ви повинні відповісти, який компроміс ви можете собі дозволити. RDBM реалізує ACID . Це дорого з точки зору ресурсів. Не існує рішень NoSQL, які є ACID. Дивіться теорему CAP, щоб зануритися в ці ідеї.

Отже, ви повинні зрозуміти кожен компроміс, який дає кожне рішення, і вибрати той, який є найбільш відповідним для вашої проблеми.


8

Big Data насправді не так стосується того, «наскільки він великий».

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

Тоді ви повинні подумати, як ви використовуєте свої дані.

  • Підхід SQL: Кожна інформація є дорогоцінною, добре зібраною та відібраною, а увага приділяється збереженню високоцінних та добре структурованих даних. Це може бути дорогим, все взаємопов’язане, і це добре для добре сформованих системних та функціональних даних.
  • Підхід до великих даних: у великих даних ви зберігаєте практично все, незалежно від значення, яке ви маєте, а потім здійснюєте активний процес аналітики. Речі не пов’язані між собою, вони скопійовані. Наприклад, скажімо, у мене є запис у блозі. У Big Data не буде посилання на її автора, але автор буде вбудований у запис до блогу. Шлях більш масштабований, але вимагає іншого та більш складного підходу.

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


8

Я розмістив досить детальну відповідь на stackoverflow про те, коли доцільно використовувати реляційну vs документну базу даних (або NoSQL), тут:

Мотивації використання реляційної бази даних / ORM або бази даних документів / ODM

Підсумок:

  • Щодо дрібних речей, використовуйте будь-які інструменти, з якими ви знайомі

  • кілька гігабайт, безумовно, невеликі речі: він не стає великим, поки він не надто великий, щоб вміститися в єдиний кластер MySQL з розумною кількістю вузлів (16-32), що означає, можливо, дані 8-16 ТБ і кілька мільйонів транзакцій в секунду (або більш звичайна база даних на жорсткому диску, що містить до 100 TB даних і кілька тисяч транзакцій в секунду).

  • якщо ви застрягли в іншій базі даних (не MySQL Cluster), отримайте більше пробігу з неї, кинувши обладнання FusionIO.

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

  • Кассандра :)


6

Чи час переходу на NoSQL залежить від 2 речей:

  1. Характер / структура ваших даних
  2. Ваш поточний виступ

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

Бази даних NoSQL перевершуються, коли дані неструктуровані за межами пар ключових значень.

Ефективність, ви повинні задати собі одне питання: чи поточне рішення SQL повільне ?

Якщо ні, перейдіть за принципом " IIABDFI ".

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