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