LINUX.ORG.RU

История изменений

Исправление k0valenk0_igor, (текущая версия) :

На минуточку в PostgreSQL блокировка per-row.

Вы не учитываете, что при наложенной блокировке «на строку», хранилище JSONB все равно будет блокировано эксклюзивно, поскольку физически оно есть поле строки в таблице. То есть мы все равно получим лок на процесс вздумавший изменить что-то в коллекции документов, которая суть поле JSONB. Ну и чем же это лучше подхода Mongo?

Альтернативой для Postgre могло бы быть введение новых типов блокировок на часть (!) поля. Но честно сказать, я с трудом представляю как это возможно чисто архитектурно без существенной потери быстродействия.

Но даже если представить, что это получилось, то все равно у Postgre будет огромная проблема при блокировании данных находящихся в разных полях JSONB (а тем более в разных таблицах, не говоря уж на разных нодах).

А у Mongo проблем с этим нет. Mongo именно из-за отказа от ACID легко и непринужденно справляется с такими задачами и выигрывает на этом.

Есть еще интересная базка - OrientDB. Она вроде как документо-ориентированная, но умеет транзакции и вообще гарантирует ACID. Гарантирует-то гарантирует, но только в пределах нода. То есть как только речь заходит о шардинге - гарантии отменяются.

Исходная версия k0valenk0_igor, :

На минуточку в PostgreSQL блокировка per-row.

Вы не учитываете, что при наложенной блокировке «на строку», хранилище JSONB все равно будет блокировано эксклюзивно, поскольку физически оно есть поле строки в таблице. То есть мы все равно получим лок на процесс вздумавший изменить что-то в коллекции документов, которая суть поле JSONB. Ну и чем же это лучше подхода Mongo?

Альтернативой для Postgre могло бы быть введение новых типов блокировок на часть (!) поля. Но честно сказать, я с трудом представляю как это возможно чисто архитектурно без существенной потери быстродействия.

Но даже если представить, что это получилось, то все равно у Постгри будет огромная проблема при блокировании данных находящихся в разных полях JSONB (а тем более в разных таблицах, не говоря уж на разных нодах).

А у Mongo проблем с этим нет. Mongo именно из-за отказа от ACID легко и непринужденно справляется с такими задачами и выигрывает на этом.

Есть еще интересная базка - OrientDB. Она вроде как документо-ориентированная, но умеет транзакции и вообще гарантирует ACID. Гарантирует-то гарантирует, но только в пределах нода. То есть как только речь заходит о шардинге - гарантии отменяются.