Атомарная согласованность

Мой преподаватель курса баз данных, который я использую, сказал, что преимущество баз данных NoSQL состоит в том, что они «поддерживают атомарную согласованность единого агрегата». Я понятия не имею, что это значит, может кто-нибудь объяснить мне это?


person Community    schedule 09.06.2017    source источник


Ответы (1)


Это означает, что, используя агрегаты, вы можете избежать того, чтобы ваша база данных сохраняла данные несогласованности из-за ошибки транзакции.

В доменно-ориентированном дизайне агрегат - это набор связанных объектов, которые рассматриваются как единое целое.

Например, допустим, у вас есть ресторан, и вы хотите сохранить заказы каждого клиента.

Вы можете сохранить свои данные с помощью двух агрегатов, как показано ниже:

 var customerIdGenerated = newGuid();
 var customer = { id: customerIdGenerated , name: 'Mateus Forgiarini'};

 var orders = {
     id: 1,
     customerId: customerIdGenerated ,
     orderedFoods: [{
        name: 'Sushi',
        price: 50
     },
     {
        name: 'Tacos',
        price: 12
   }]
   };

Или вы можете угрожать заказам и клиентам как единому целому:

var customerIdGenerated = newGuid();
var customerAndOrders = { 
     customerId: customerIdGenerated ,
     name: 'Mateus Forgiarini',
     orderId: 1,
     orderedFoods: [{
        name: 'Sushi',
        price: 50
     },
     {
        name: 'Tacos',
        price: 12
   }]
   };

Устанавливая свои заказы и клиента как единое целое, вы избегаете ошибки транзакции. В мире NoSQL может возникнуть ошибка транзакции, когда вам нужно записать связанные данные на многих узлах (узел - это место, где вы храните свои данные, базы данных NoSQL, которые работают на кластерах, могут иметь много узлов).
Итак, если вы Если вы обрабатываете заказы и клиентов как два агрегата, при сохранении клиента может возникнуть ошибка, но ваши заказы все еще могут быть сохранены, поэтому у вас будут несогласованные данные, потому что у вас будут заказы без клиента.

Однако, используя единый агрегат, вы можете избежать этого, потому что в случае возникновения ошибки у вас не будет данных о несогласованности, поскольку вы сохраняете связанные данные вместе.

person Mateus Forgiarini da Silva    schedule 04.01.2018
comment
Спасибо, в этом есть смысл. - person ; 04.01.2018