Регистрация документов

  • Автор темы Автор темы selfar
  • Дата начала Дата начала
S

selfar

Почитал форум, но "сходу" решения не нашел.
Собственно задача вроде бы простая - реализовать регистрацию документов.
Есть счетчик на основании которого присваивается номер и есть несколько простых условий.
1. При одновременном использовании счетчика разными пользователями номер не должен задваиваться.
2. Необходимо сократить (в идеале убрать) время ожидания другими пользователями пока освободиться счетчик.
3. Желательно не использовать серверные блокировки.

Подскажите какие могут быть решения. Спасибо.
 
есть одно могучее решение! регистратор должен быть ОДИН! :)
 
Вот тут немного обсуждали, да и еще где то была тема.

Нет однозначного решения, если есть реплики базы то о сквозной нумерации по запросу(при сохранении документа) стоит забыть, если нет то обычно делают созданием некоторого файла в котором храниться счетчик, и оттуда агентом тягают значения)


selfar
А сколько у вас пользователей? Мб скрип получения номера из счетчика не оптимальный поэтому и повторы)
 
У Домины база нереляционная, т.е. НЕтранзакционная.
А задача сквозной уникальной нумерации в общем случае не разрешима
 
Ну можно попробовать вести два списка номеров. Точнее даже один дополнитеьный... первый - это основной список документов по номерам.
Второй список - это резерв номеров... например давать пользователю возможность резервировать номер при создании документа.
А собственно в момент резервирования проверять последний номер в основном списке и в резервном. тогда можно поробовать реализовать сквозную нумерацию
 
Сквозную нумерацию можно обеспечить только "задним числом", когда ВСЕ (? как в этом убедиться?) док-ты соберутся в одном месте.
Или когда они изначально ВСЕ В ОДНОМ МЕСТЕ (на одном сервере). Не и тут не выйдет... Сквозная, но не последовательная получится
 
Даже в децентрализованом варианте построения системы документооборота должно быть место где есть все документы.
Если речь идет о децентрализированой системе - то лучше заводить "журналы регистрации" в каждом отдельном подразделении...это сократит вероятность ошибки... и там уже реализовывать методы нумерации.
 
че не говорите, а мой метод самый лучший! один регистратор - и нет проблем :(
 
ну не все документы можно назначить одного регистратора :(
И, к сожалению, условия зачастую диктуются бизнесом - а не программистом
 
ну не все документы можно назначить одного регистратора :)
И, к сожалению, условия зачастую диктуются бизнесом - а не программистом
та не выдумывай :rolleyes: никакое бизнес ПО не делает больше чем в нем реализовал программер ;)
на каждый журнал регистрации (грубо говоря документ-счетчик) не более одного регистратора :rolleyes:
 
Спасибо всем за советы и идеи.

После длительного анализа и обсуждения различных вариантов реализации был найден довольно простой, но действенный способ на основании советов от IBM.



Основная идея решения - использование механизма управления конфликтами в своих целях :).
Вообще документ познавательный и содержит много интересных советов. Рекомендую к ознакомлению.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы