【问题标题】:Atomic consistency原子一致性
【发布时间】:2017-06-09 23:19:50
【问题描述】:

我在数据库课程中的讲师说 NoSQL 数据库的一个优势是它们“支持单个聚合的原子一致性”。我不知道这是什么意思,谁能给我解释一下?

【问题讨论】:

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

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

    【讨论】:

    • 谢谢,有道理。
    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多