У меня есть сценарий, в котором список из 1000 сотрудников (пример ниже), где их баланс обновляется на каждом конце месяца, где баланс каждого сотрудника может быть другим.Весенние данные MongoDB, поддерживающие целостность данных в массовом обновлении
{
_id:1
name:"John"
balance:40
},
Теперь, что было бы лучше всего практиковать. Выполнение его один на один
for (Employee employee : employeeList) {
employee.update();
}
или
dropAll employees where id in (All employees ids)
mongoOperations.insert(employeeList, Employee.class);
или третьего захода на посадку может быть
Load all employee records.
Insert employee records to a new collection say employee_temp.
Drop old collection (employee).
Rename newly inserted collection as old one (employee).
или их любым другим способом, который может гарантировать максимальные шансы успеха целостности данных базы данных, а также хорошо с точки зрения производительности.
Я согласился с вашим вторым моментом относительно масштабируемости. Проблема с первым подходом заключается в том, что атомарные обновления гарантируют обновление только для одного документа или все равно будут работать нормально, если мне нужно обновить одинаковое значение баланса для нескольких объектов, однако, если разные сотрудники имеют разный баланс, мы не можем указывать их в одном запросе, приводит к выполнению нескольких запросов, тем самым отменяя гарантию атомарности. – tarunkumar