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

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

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, работающие на кластерах, могут иметь много узлов).
Поэтому, если вы рассматриваете заказы и клиентов как две совокупности, при сохранении клиента может произойти ошибка, но ваши заказы все еще могут быть сохранены, поэтому у вас будут данные о несоответствии, потому что у вас будут заказы без клиентов.

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

Другие вопросы по тегам