原子一致性

时间:2017-06-09 23:19:50

标签: atomic consistency nosql

我在数据库课程中的讲师我说NoSQL数据库的一个优点是他们支持单个聚合的原子一致性"。我不知道这意味着什么,有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:3)

这意味着通过使用聚合,您可以避免数据库因事务错误而保存不一致数据。

在域驱动设计中,聚合是作为一个单元处理的相关对象的集合。

例如,假设您有一家餐馆,并且您想要保存每个客户的订单。

您可以使用以下两种聚合方式保存数据:

 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数据库可以有许多节点)。
因此,如果您将订单和客户视为两个聚合,则在保存客户时可能会发生错误,但您的订单仍然可以保存,因此您会收到不一致的数据,因为您的订单中没有客户。

但是,通过使用单个聚合,您可以避免这种情况,因为如果发生错误,您将不会有不一致的数据,因为您将相关数据保存在一起。