В защиту MongoDB
Последнее время столкнулся с кучей нападок на набирающую популярность новинку в мире баз даных - MongoDB.
Типа этого ролика например http://www.xtranormal.com/watch/6995033/ ну и вообще в новостях разных.
И поскольку у меня с ней оч положительный опыт - напишу так сказать взгляд с другой стороны. Если суммировать то претензии товарищей сводятся к следущему:
1 как вы можете сравнивать MySQL разрабатываемую в течении десятков лет и какую-то только появившуюся непонятную и нестабильную штуковину.
2 там нет транзакций и гарантии записи.
3 если сервер выключися ваша база похерится (ну, на самом деле не похерится, но допустим что случилось страшное и она похерилась).
4 нахрена она вообще сдалась когда 99 процентам веб проектов мощности MySQL более чем достаточно.
Рассмотрим эти пункты:
1 Перефразирую чуть "как можно сравнивать проверенную и меганадежную Java Enterprise с какими-то непонятными рельсами, написаными одним чуваком за полгода на никому не неизвестном языке".
2, 3 Нет транзакций и база может грохнутся - ну и что? у вас что все проекты - процессинг финансоввых транзакций?
Зато есть возможность запустить реплику с синхронизацийе в почти реальном времени в которой данные сохранятся. Даже если такая хрень и случится и пользователи потеряют свои мегаценные комментарии и посты за последние 5 минут - и что? никто этого не заметит и никто от этого не обанкротится.
4 Потому что она дает преимущества даже в "маломощных" проектах. ActiveRecord - это попытка натянуть концепцию OOP на реляционную схему, и несмотря на то что у DHH это очень классно получилось, есть ряд косяков которые в ORM исправить не удастся никакими ухищрениями, просто потому что это две совершенно разные модели.
Например вы не сделаете с AR номальног насдледования (STI - это не наследование).
Все эти кучи плагинов на все случаи жизни, когда даже такая простейшая хрень как теги требует своего плагина (котрый за счет с метапрорамминга решает эту проблему)
Хаки со всякими :polymorphic котрый работает только в одну сторону но не обратно.
Дикий для OOP модели синтаксис SQL запросов (к счастью сильно облагороженный DHH'ем)
Документная модель MongoDB, в отличии от реляционной позволяет все это сделать.
Типа этого ролика например http://www.xtranormal.com/watch/6995033/ ну и вообще в новостях разных.
И поскольку у меня с ней оч положительный опыт - напишу так сказать взгляд с другой стороны. Если суммировать то претензии товарищей сводятся к следущему:
1 как вы можете сравнивать MySQL разрабатываемую в течении десятков лет и какую-то только появившуюся непонятную и нестабильную штуковину.
2 там нет транзакций и гарантии записи.
3 если сервер выключися ваша база похерится (ну, на самом деле не похерится, но допустим что случилось страшное и она похерилась).
4 нахрена она вообще сдалась когда 99 процентам веб проектов мощности MySQL более чем достаточно.
Рассмотрим эти пункты:
1 Перефразирую чуть "как можно сравнивать проверенную и меганадежную Java Enterprise с какими-то непонятными рельсами, написаными одним чуваком за полгода на никому не неизвестном языке".
2, 3 Нет транзакций и база может грохнутся - ну и что? у вас что все проекты - процессинг финансоввых транзакций?
Зато есть возможность запустить реплику с синхронизацийе в почти реальном времени в которой данные сохранятся. Даже если такая хрень и случится и пользователи потеряют свои мегаценные комментарии и посты за последние 5 минут - и что? никто этого не заметит и никто от этого не обанкротится.
4 Потому что она дает преимущества даже в "маломощных" проектах. ActiveRecord - это попытка натянуть концепцию OOP на реляционную схему, и несмотря на то что у DHH это очень классно получилось, есть ряд косяков которые в ORM исправить не удастся никакими ухищрениями, просто потому что это две совершенно разные модели.
Например вы не сделаете с AR номальног насдледования (STI - это не наследование).
Все эти кучи плагинов на все случаи жизни, когда даже такая простейшая хрень как теги требует своего плагина (котрый за счет с метапрорамминга решает эту проблему)
Хаки со всякими :polymorphic котрый работает только в одну сторону но не обратно.
Дикий для OOP модели синтаксис SQL запросов (к счастью сильно облагороженный DHH'ем)
Документная модель MongoDB, в отличии от реляционной позволяет все это сделать.
