Обеспечить непротиворечивость одновременно редактируемых данных, бочок, 24-Апр-22, 01:37 [смотреть все]Привет. Какие есть техники обеспечения непротиворечивости данных, которые могут редактировать одновременно много пользователей? В частности, интересуют подходы к обработке параллельного добавления противоречащих бизнес-логике данных. Например, пользователь не должен состоять во враждующих сообществах "линуксоиды" и "виндузятники" единовременно, но в других - без ограничений; как без полной блокировки таблицы обработать ситуацию, когда запросы, добавляющие пользователя в оба из них, приходят одновременно.
|
- Обеспечить непротиворечивость одновременно редактируемых данных, ыы, 11:20 , 24-Апр-22 (1)
> Привет. > Какие есть техники обеспечения непротиворечивости данных, которые могут редактировать > одновременно много пользователей? В частности, интересуют подходы к обработке параллельного Через блокировку. > добавления противоречащих бизнес-логике данных. Например, пользователь не должен состоять > во враждующих сообществах "линуксоиды" и "виндузятники" единовременно, но в других - > без ограничений; как без полной блокировки таблицы обработать ситуацию, когда запросы, > добавляющие пользователя в оба из них, приходят одновременно. Посмотрите как эта проблема решается в git.
- Обеспечить непротиворечивость одновременно редактируемых данных, бочок, 11:52 , 25-Апр-22 (2)
> Через блокировку.Блокировку чего именно? Если всей таблицы, то это как-то слишком грустно. Для ясности могу сказать, что юзаю MySQL/InnoDB. > Посмотрите как эта проблема решается в git. А где именно она встречается в гите? И как вообще называется эта проблема, а то я даже хз, какие формулировки гуглить..
- Обеспечить непротиворечивость одновременно редактируемых данных, Аноним, 17:42 , 26-Апр-22 (3)
>> Через блокировку. > Блокировку чего именно? Если всей таблицы, то это как-то слишком грустно. Для > ясности могу сказать, что юзаю MySQL/InnoDB. >> Посмотрите как эта проблема решается в git. > А где именно она встречается в гите? И как вообще называется эта > проблема, а то я даже хз, какие формулировки гуглить..По идее, кооперативное редактирование или типа того. Я бы на вашем месте сделал просто. При открытии для редактирования загружается время последнего изменения. При сохранении вы его шлете в форме. Если на сервере уже сохранена более новая версия, пользователю выдается ошибка. Пользователь как-нибудь разруливает и сохраняет новую версию.
- Обеспечить непротиворечивость одновременно редактируемых данных, ыы, 12:40 , 27-Апр-22 (4)
>[оверквотинг удален] >> Блокировку чего именно? Если всей таблицы, то это как-то слишком грустно. Для >> ясности могу сказать, что юзаю MySQL/InnoDB. >>> Посмотрите как эта проблема решается в git. >> А где именно она встречается в гите? И как вообще называется эта >> проблема, а то я даже хз, какие формулировки гуглить.. > По идее, кооперативное редактирование или типа того. > Я бы на вашем месте сделал просто. При открытии для редактирования загружается > время последнего изменения. При сохранении вы его шлете в форме. Если > на сервере уже сохранена более новая версия, пользователю выдается ошибка. Пользователь > как-нибудь разруливает и сохраняет новую версию.1. имеем проблему. 2. "как-нибудь разруливает" 3. ПРОФИТ!!! : )
- Обеспечить непротиворечивость одновременно редактируемых данных, бочок, 03:00 , 02-Май-22 (7)
> Через блокировку.В принципе, да, через блокировку такое разруливать можно, но это выглядит слабопереносимо между разными СУБД/движками и требует очень вдумчиво составлять схему и способы блокировок. Кроме того, JPA очень странно с этим работает, такое ощущение, что есть более лучший путь. Феномен(тм), который я "изобрёл", давно известен под именем read skew/write skew. Читать полезно.
- Обеспечить непротиворечивость одновременно редактируемых данных, ACCA, 06:45 , 01-Май-22 (5)
Техники очень простые.1. MQ с запросамии на уровне приложения (7!) 2. Анализируешь на непротиворечивость всю очередь, прежде чем позволить параллельную обработку Не тащи бардак в базу данных, там уже гарантированно не разберёшься.
- Обеспечить непротиворечивость одновременно редактируемых данных, qwerty, 15:34 , 05-Май-22 (8)
CONSTRAINT constraint_name CHECK ( expression )
|