原子一致性
Atomic consistency
我正在上的数据库课程的讲师说 NoSQL 数据库的优势在于它们 "support atomic consistency of a single aggregate"。我不知道这是什么意思,有人可以给我解释一下吗?
这意味着通过使用聚合,您可以避免您的数据库因事务错误而保存不一致的数据。
在领域驱动设计中,聚合是被视为一个单元的相关对象的集合。
例如,假设您有一家餐厅,您想要保存每位顾客的订单。
您可以使用如下两个聚合来保存数据:
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 数据库可以有很多节点)。
因此,如果您将订单和客户视为两个聚合,则在保存客户时可能会发生错误,但您的订单仍然可以保存,因此您会有不一致的数据,因为您的订单没有客户。
然而,通过使用单个聚合,您可以避免这种情况,因为如果发生错误,您不会有不一致的数据,因为您将相关数据保存在一起。
我正在上的数据库课程的讲师说 NoSQL 数据库的优势在于它们 "support atomic consistency of a single aggregate"。我不知道这是什么意思,有人可以给我解释一下吗?
这意味着通过使用聚合,您可以避免您的数据库因事务错误而保存不一致的数据。
在领域驱动设计中,聚合是被视为一个单元的相关对象的集合。
例如,假设您有一家餐厅,您想要保存每位顾客的订单。
您可以使用如下两个聚合来保存数据:
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 数据库可以有很多节点)。
因此,如果您将订单和客户视为两个聚合,则在保存客户时可能会发生错误,但您的订单仍然可以保存,因此您会有不一致的数据,因为您的订单没有客户。
然而,通过使用单个聚合,您可以避免这种情况,因为如果发生错误,您不会有不一致的数据,因为您将相关数据保存在一起。