The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Обеспечить непротиворечивость одновременно редактируемых данных, !*! бочок, 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 )




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру