История изменений
Исправление
gh0stwizard,
(текущая версия)
:
1. Что именно из ACID не соблюдается, для каких веб-сайтов это не важно, а для каких ACID нужен?
ACI поддерживается на уровне 1 документа в 1 коллекции. В монге нет транзакций, поэтому случай для SQL транзакция-insert-update-delete-стоп в монге невозможен. В ее случае это будет три разных операции, если в момент между insert-update-delete произойдет чтение данных другим процессом, то он увидет, скажем свежий insert, но не увидет update и delete. Эту проблему решили ребята в форке TokuMX, там есть поддержка транзакций.
2. Как жить без джоинов?
Костыли на внутреннем JS. Не следил давно за MongoDB, но в 2.4 это было далеко-далеко от понятия PL/SQL. Т.е. что-то можно делать. На выходе получаем процедуру, которая делает map-reduce (возможно, в из нескольких запросов подряд в разные места) и отдает документы в нужном формате.
3. Почему MongoDB лучше скейлится?
By design. В частности мастер-мастер, реплики, арбитер все сделано из коробки. Минус в том, что эти процессы, как и отсутсвие транзакций приводят к одному и тому же побочному эффекту: все происходит асинхронно и поэтому приложение должно «понимать», когда что-то не так (например, insert в другую коллекцию только производится и надо подождать/отклонить запрос/т.п.
Исходная версия
gh0stwizard,
:
1. Что именно из ACID не соблюдается, для каких веб-сайтов это не важно, а для каких ACID нужен?
ACID поддерживается на уровне 1 документа в 1 коллекции. В монге нет транзакций, поэтому случай для SQL транзакция-insert-update-delete-стоп в монге невозможен. В ее случае это будет три разных операции, если в момент между insert-update-delete произойдет чтение данных другим процессом, то он увидет, скажем свежий insert, но не увидет update и delete. Эту проблему решили ребята в форке TokuMX, там есть поддержка транзакций.
2. Как жить без джоинов?
Костыли на внутреннем JS. Не следил давно за MongoDB, но в 2.4 это было далеко-далеко от понятия PL/SQL. Т.е. что-то можно делать. На выходе получаем процедуру, которая делает map-reduce и отдает документы в нужном формате.
3. Почему MongoDB лучше скейлится?
By design. В частно MM, реплики, арбитер все сделано из коробки. Минус в том, что эти процессы, как и отсутсвие транзакций приводят к одному и тому же побочному эффекту: все происходит асинхронно и поэтому приложение должно «понимать», когда что-то не так (например, insert в другую коллекцию только производится и надо подождать/отклонить запрос/т.п.