|
|
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть сл. задача, необходимо ваше мнение. Дано: Веб-приложение. Серверная часть на Java. Клиенты подключаются с помощью стандартного браузера и производят операции над данными. Число клиентов – до 5000. Операции – просмотр (поиск, сортировка, фильтрация), создание, удаление, изменение записей. Данные находятся в реляционной БД. Возможны ситуации, когда более чем один пользователь вносит изменения в один объект модели данных. Эти изменения могут быть не конфликтующими (пользователи изменяют разные поля и это не нарушает целостность данных) и конфликтующими (пользователи изменяют одно и то же поле(поля) или же разные поля с нарушением целостности данных или связанные поля разных объектов так же с нарушением целостности). Задача: Реализовать подсистему обнаружения и разрешения коллизий в веб-приложении с высокой эффективностью, минимальными затратами на передачу данных между клиентом и сервером и минимальным эффектом на производительности клиентской и серверной части. Вопросы: 1. Стандартные / распространённые / общепринятые способы разрешения таких коллизий в веб-приложениях 2. Существующие реализации этих способов в продуктах / фреймворках / библиотеках и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 11:24 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Это вопрос не по Java. Ищи по ключевым словам SQL, DBMS, Optimistic/Pessimistic locking. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 11:26 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21, Перенести разруливание коллизий и апдейт вообще в память Java. Там на много проще и быстрее разрулить многопоточность. В БД сбрасывать изменения синхронно, например, через очередь чтобы устранить коллизии вообще. Опять же, надо понять какого типа блокировки требует бизнес-логика. Число клиентов до 5000 это не о чем. Важно количество запросов в пиковый период времени. В идеале, избавиться от коллизий вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 11:30 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спасибо. Скажите, а есть готовые примеры, которые необходимо допилить? и какие есть методы самые распространенные или все очень индивидуально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 11:40 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21, Да в любых приложениях. Либо пессимистическая блокировка - либо оптимистическая. Пессимистическая - переход в редактирование чего-то, только через блокировку на сервере. Оптимистическая - вместе с объектом (в вашем случае полем или набором согласованный полей) хранится его номер версии и выдается на клиента (но не показывается). При обновлении на сервере блокировка, проверяете совпадение номеров - если да меняете и новый номер, если нет - тут в зависимости от задачи. Можно еще и очереди рассылки отгородить, чтоб оповещать клиента, что данные изменились и надо перечитать (подсветить, что кто-то правит). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 11:44 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21, Да, так сложно сказать, потому что постановка задачи на пальцах. Есть ведь разные системы. Например игры - там все дружно вносят изменения в одну и ту же модель. Или ERP - там отдельные документы и оптимистичным локом разруливаются почти все проблемы. Мы писали ERP, где около сотни серверов сливали апдейты на центральный сервер. Всё тоже на очередях, но нужно было писать отдельную логику резолва конфликтов, так как апдейты уже зафиксированы на локальных серверах и откатывать их нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 11:46 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Совершенно верно. Автору стоит разобраться с тем блокировками и очередями, где и для чего применять. И тогда, скорее всего, решение станет более понятным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 11:47 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Система реализует поддержку большого количества бизнес-процессов. В ходе этих процессов создаются/удаляются/изменяются объекты, представленные в виде записей в БД. Данные и их целостность критичны для бизнеса. Вообще если говорить просто, то меня интересуют методы которые обычно используют, но на этот вопрос видимо ответил Сергей Арсеньев, а вот какие готовые библиотеки или фреймворки есть, я так и не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:30 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21, странный у вас вопрос. То у вас записи, то вдруг объекты появляются simonov21в один объект модели данных Вы про ОРМ слышали? Он решает все ваши вопросы. Не на 5-ку конечно, но вам хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:30 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21, вы интервью берёте? Похоже вы не программист. Или флейм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:31 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21готовые библиотекихибер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:32 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Petro123, нет, я интервью не беру, а хочу узнать какой метод решения оптимальный и какие библиотеки или фреймы, лучше использовать для данной задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:47 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Petro123, Код: plaintext 1. Бизнес-объект может быть представлен несколькими записями в разных таблицах БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:48 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21, ты конечно мой пост проигнорировал. Продолжай дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:53 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
mayton, спасибо, я видел твой пост ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:56 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21Бизнес-объект может быть представлен несколькими записями в разных таблицах БД. глубокая мысль. Ты свои мысли высказывай) раз не интервью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 13:07 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21нет, я интервью не беру, а хочу узнать какой метод решения оптимальный и какие библиотеки или фреймы, лучше использовать для данной задачи. а у журналиста разве не такая задача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 13:09 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Petro123, Мы будем разводить полемику по задачам журналиста? Код: plaintext Мысли были четко сформированы в начале топика. Если есть, что сказать по делу, то говори, если нет то........и сам понимаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 13:13 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21, а может ты svenom)))) LOL - у тебя конкр.вопросы - Программист? Хибер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 13:18 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
Petro123, Библиотеку уже смотрю, спасибо. да программист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 13:33 |
|
||
|
Разрешение коллизий
|
|||
|---|---|---|---|
|
#18+
simonov21, тут библиотеки дело вторичное, это вопрос скорее относится к административной области. чьё исправление (от какого клиента) должно быть сохранено не решит ни одна библиотека, должно быть административное решение - что важнее, статус клиента или время внесения изменения (это как пример). только при таких уточнениях правил можно что-то программное использовать. как вариант технического решения сейчас можно при редактировании выбранной записи несколькими клиентами индицировать у каждого кто ещё редактирует данную запись(до внесения/отправки данных на сервер) - тут ни каких библиотек не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2015, 17:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39123153&tid=2124574]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 501ms |

| 0 / 0 |
