
Недоліки 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 універсальні, можуть все що завгодно, якщо ви вмієте ними користуватися.