Недоліки RDBMS або RDBMS vs NoSQL

Викладу моє бачення з яких причин були створені нові технології зберігання і обробки дані відомі як NoSQL і MPP.

Стаття буде корисна особливо початківцям у розробці БД.

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

Перше, SQL і RDBMS

1.1. Необхідно знати мову SQL та основні принципи RDBMS як транзакції, foreign key, таблиці.

Припустимо ви розробник Java, і від вас ще вимагають знати якийсь SQL і особливості RDBMS. Природно ви лінуєтеся, намагаєтеся якось відвернути.

Та й до того-ж принцип ОВП дуже не схожий на модель даних в RDBMS.

1.2. Якщо у вас великий проект, то вам потрібен професійний БД розробник, а це зайвий баласт якщо не буде проектів у майбутньому.

Java програмістам так і хочеться зробити всю бізнес логіку на Java в обхід SQL і RDBMS.

Друге, Ціна

2.1. Неможливо використовувати commodity сервера на великих даних. Якщо у вас 600 Терабайт, то вам з RDBMS підійде тільки Exadata або Teradata.

2.2. Відмовливість. Без технології shared-nothing і no single point failer ви змушені купувати дорогі сервери, з подвійним резервуванням всього,

RAID контролерів, блоків живлення, купувати безперебійник, дорогі зберігачі і так далі.

2.3. Ціна ліцензій. RDBMS з розвиненими можливостями, здатні тримати сотні терабайт не дешево, особливо appliance рішення.

Третє, > = 1 Pb даних

3.1. Якщо у вас більше 1 Петабайт даних, то вам з RDBMS підходить вже тільки Терадата за 20 млн. $

Тоді як зібрати кластер для Hadoop з потрійною надлишковістю на 1 Петабайт даних зараз коштує 367 000 $ (тільки сервера з дисками).

На ось таких ось серверах і 4 дисках в RAID 0

www.ulmart.ru/goods/613438

www.ulmart.ru/goods/690535

Правда на електроенергії розоріться. Для такого дітища потрібна міні електростанція.

Ось власне по цьому і почався цей рух NoSQL, Hadoop, MPP. Для вирішення вищевикладених особливостей, незручностей, недоліків.

Вивід:

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

Вердикт:

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

Купуйте Exadata

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

і ви не любите створювати агрегати, а любите грубу силу full scan то купуйте Терадату

3. Якщо у вас є гроші, але ви вмієте їх рахувати, вам потрібна стабільна, універсальна і проста в розробці БД і даних у вас менше 10 Терабайт, і вас не лякає складність адміністрування, то беріть звичайний Oracle

4. Якщо у вас немає грошей, але даних не більше 1 Тб, але вам як і раніше потрібна хороша платформа для розробки БД зі складною логікою, то беріть PostgreSQL

5. Якщо у вас немає навичок SQL і RDBMS, дані слабо-пов'язані або у вас хороший ETL, який все відловлює. Не складні запити без з'єднання багатьох таблиць. Вся логіка не в БД. То вам цілком підійде NoSQL БД, хоча, як я і сказав, RDBMS універсальні, можуть все що завгодно, якщо ви вмієте ними користуватися.