|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Как правильно организовать приложение, чтобы оно позволяло осуществлять сквозную нумерацию документов при условии, что документы возникают в разных местах. т.е. пользователи могут одновременно создавать карточки с разных клиентских мест, но нумерация должна быть сквозной и правильной. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2005, 09:13 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Очень многим решения этого вопроса не избежать, тоже иногда размышляю на эту тему. Мне кажется, что решение лежит больше в организационной плоскости, пока ничего лучше, чем уже есть не придумал, я имею ввиду регистрацию пользователей в системах типа ICQ, т.е. этот УИН и должен быть префиксом (не обязательно видимым) ко всем документам, и не только документам. Эта схема позволяет не различать, со своего компьютера вошел пользователь или с чужого, главное, он должен правильно залогиниться. УИН-ы должны иметь сквозную уникальность, выдаваться конкретному пользователи и при удалении, больше никому не назначаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2005, 09:25 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
kanalexКак правильно организовать приложение, чтобы оно позволяло осуществлять сквозную нумерацию документов при условии, что документы возникают в разных местах. т.е. пользователи могут одновременно создавать карточки с разных клиентских мест, но нумерация должна быть сквозной и правильной. Здесь, я думаю, поможет схема разрешения коллизий, реализованная, например, в схеме закрытого хеширования. Я думаю, что должно быть так: Хранить в таблице последний "занятый" номер. Когда пользователь обратится за номером: - заблокировать доступ к данной записи / таблице; - расчитать следующий номер; - записать его в таблицу; - разблокировать запись / таблицу; - вернуть номер тому пользователю, который его запрашивал... Блокировка нужна для того, чтобы исключить коллизию, когда один и тот же номер будет присвоен двум разным документам... Без блокирования таблицы можно это оформить следующим образом: - сохранить значение "занятого" номера в локальной переменной; - расчитать новый номер; - при записи в таблицу вычисленного "занятого" номера проверить текущее значение "занятого" номера в таблице; - если оно изменилось, то повторить расчет номера и попытку его сохранения; - если оно не изменилось - записать новое значение и возвратить номер пользователю... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2005, 09:35 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Programmer_OrtodoxОчень многим решения этого вопроса не избежать, тоже иногда размышляю на эту тему. Мне кажется, что решение лежит больше в организационной плоскости, пока ничего лучше, чем уже есть не придумал, я имею ввиду регистрацию пользователей в системах типа ICQ, т.е. этот УИН и должен быть префиксом (не обязательно видимым) ко всем документам, и не только документам. Эта схема позволяет не различать, со своего компьютера вошел пользователь или с чужого, главное, он должен правильно залогиниться. УИН-ы должны иметь сквозную уникальность, выдаваться конкретному пользователи и при удалении, больше никому не назначаться. Это Вы немного о другом. Так мы получим уникальные идентификаторы, а нужно получить сквозную нумерацию определенного вида документов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2005, 09:41 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2005, 09:55 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
kanalexКак правильно организовать приложение, чтобы оно позволяло осуществлять сквозную нумерацию документов при условии, что документы возникают в разных местах. т.е. пользователи могут одновременно создавать карточки с разных клиентских мест, но нумерация должна быть сквозной и правильной. регистрировать документы под сквозными номерами централизовано документы могут возникать в разных местах, регистрироваться должны в одном месте и получать порядковый номер централизовано... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2005, 09:56 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
kanalexКак правильно организовать приложение, чтобы оно позволяло осуществлять сквозную нумерацию документов при условии, что документы возникают в разных местах. т.е. пользователи могут одновременно создавать карточки с разных клиентских мест, но нумерация должна быть сквозной и правильной. В разных местах создаются документы, но порядковая нумерация у всех единая и растет в соответствии с датами создания документов? 1. Подумать, зачем это нужно, и организационно избежать подобного документооборота. 2. Регистрировать под временными номерами, потом на центральном узле перенумеровывать их и отправлять скорректированный документ обратно. Двунаправленная синхронизация - веселая жизнь вам обеспечена. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2005, 16:34 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
2 templar Так может только клиенты далеко, а база одна и под ORACLE. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2005, 17:08 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
ModelR2 templar Так может только клиенты далеко, а база одна и под ORACLE. Тогда и проблемы нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2005, 13:40 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Сахават Юсифов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Так делать не советую. Будут дублированные номера. Если в прогаммах Сахавата принята такая идеология, то достоверность данных в многопользовательской среде они не обеспечат ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 12:31 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Что плохо и как исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 12:38 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
kanalexКак правильно организовать приложение, чтобы оно позволяло осуществлять сквозную нумерацию документов при условии, что документы возникают в разных местах. т.е. пользователи могут одновременно создавать карточки с разных клиентских мест, но нумерация должна быть сквозной и правильной. Здесь очень важно договориться о терминологии. Сквозная нумерация - очень расплывчатый термин Есть подходящие понятия: - Непрерывная нумерация. Все номера использованы. Дыр в номерах нет. Но возможны аномалии в хронологии. - Монотонно возрастающая нумерация. Если документ2 хрнологически создан позже документа1, то номер документа2 больше, чем номер документа1. Но возможны дыры Сделать одновременно и монотонно возрастающую и непрерывную нумерацию можно. Но придется слишком много ограничений на пользователя накладывать. Например, нельзя отменить создание документа, после того, как пользователь нажал кнопку Создать, заполнение документа обязательно должно быть доведено до конца, до записи. Или, например, номер генерируется не при создании, а при записи (это значит, что до момента записи документа у него нет номера) Непрерывная же нумерация потребует хранения неиспользованных номеров. Например, пользователь начал создавать документ, номер сгенерировался. Пользователь передумал, нажал ESC, номер освободился и перешел в таблицу неиспользованных номеров. Естественно, при создании документа сначала рассматривается таблица неиспользованных номеров. Если там что-нибудь есть - номер берется оттуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 12:43 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
mazzy Непрерывная же нумерация потребует хранения неиспользованных номеров. Например, пользователь начал создавать документ, номер сгенерировался. Пользователь передумал, нажал ESC, номер освободился и перешел в таблицу неиспользованных номеров. Естественно, при создании документа сначала рассматривается таблица неиспользованных номеров. Если там что-нибудь есть - номер берется оттуда. Так я делал в ДОСе для генерации позиционных кодов.(материалы и т.д.) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 12:50 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Сахават ЮсифовТак я делал в ДОСе для генерации позиционных кодов.(материалы и т.д.) Ура! Сахават, вы молодец (если вы это сказали только для похвальбы) А по делу есть что сказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 12:52 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
2 автор А предметно, где это нужно? Как правило, нужна всего лишь монотонная нумерация. Не забывайте, пользователь всегда имеет право удалить запись и получится дырка, как бы Вы не старались. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:01 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
michael_Как правило, нужна всего лишь монотонная нумерация. Мало того, рискну утверждать, что как правило достаточно генерировать уникальные номера. Последовательность не обязательно должна быть монотонной. Причем часто требование можно сделать еще менее сильным: как правило достаточно повторяющихся с очень малой вероятностью номеров (пример таких номеров - GUID) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:08 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
генерации позиционных кодов Это и есть дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:13 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Сергей! Как Аксапта генерирует коды при создании спецификации для полной модификации на на основании базовой спецификации? (например: изделие отличается только линейными размерами) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:23 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Сахават, вообще говоря, здесь спрашивали про другое. Может лучше новую тему открыть. Кратко: как укажет консультант в нумераторе. Либо ручная нумерация, либо монотонная, либо непрерывная. Но номер не зависит от характеристик. Может все таки новую тему? Вернемся к нумераторам? итак позиционная нумерация. Расскажите, подробнее, пожалуйста. Думаю, будет интересно. Кроме того, расскажите - парсите ли вы номер или он используется как атомарное значение, а значения позиций хранятся в отдельных полях таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:28 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Давайте вот с чем определимся: есть номер (например номер документа) и есть PK так вот номер не обязательно должен быть уникален в сквозном варианте. Он может быть например уникален в пределах года или месяца, причем это может зависеть от текущего законодательства. И не нужно номер использовать для идентификации записи как PK. Для PK есть GUID или identity. Другой дело, что нумерация без дыр хоть и в пределах года все так и вещь необходимая. Тут выделяют пул свободных номеров. При создании документа номер из пула блокируется, при сохранении - удаляется из пула. Для ситуаций обрыва связи и прочих внештатных работает JOB, который освобождает блокировки номеров из пула, например, по тайм ауту и возвращает номер в пул. Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:30 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Роман Дынник так вот номер не обязательно должен быть уникален в сквозном варианте. Он может быть например уникален в пределах года или месяца, причем это может зависеть от текущего законодательства. :) Уникален. Просто у вас номер - составной. Состоит из нескольких полей. Роман Дынник И не нужно номер использовать для идентификации записи как PK. Для PK есть GUID или identity. Ой. Это вопрос не нумерации. Это вопрос искусственных и естественных ключей. Тут столько битв на эту тему было. http://www.sql.ru/forum/actualthread.aspx?tid=104535 Может не надо, а? Нет, Роман, вы не решили проблему. Вы просто замели ее под коврик. GUID или identity - это и есть номера. Просто вы решили использовать стандартные средства для генерации номеров. Но решения у вас нет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:36 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Ой, поторопился. Про генерацию номеров... Роман Дынник Тут выделяют пул свободных номеров. При создании документа номер из пула блокируется, при сохранении - удаляется из пула. Для ситуаций обрыва связи и прочих внештатных работает JOB, который освобождает блокировки номеров из пула, например, по тайм ауту и возвращает номер в пул. Или так. Это одна из реализаций для хранения неиспользованных номеров. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:40 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
Роман Дынник Другой дело, что нумерация без дыр хоть и в пределах года все так и вещь необходимая. На практике где помешает дырка? В платежках - нет, в счетах-фактурах тоже никто ничего не запрещал, номера могут быть в России и составными. В справочнике товаров - вообще бред. Вопрос не КАК НАДО, а ГДЕ НАДО? Ну добъетесь Вы ввода без дырок, а пользователь удалит запись из середины списка и что дальше? Достаточно уникального номера, в некоторых случаях монотонно возростающего. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:43 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
michael_Ну добъетесь Вы ввода без дырок, а пользователь удалит запись из середины списка и что дальше? Если речь идет о непрерывных, то номер удаленной записи: 1. попадает в список неиспользуемых номеров и 2. выдается следующей новой записи michael_Достаточно уникального номера, в некоторых случаях монотонно возростающего. А вот с этим согласен. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:46 |
|
Сквозная нумерация в многопользовательском режиме.
|
|||
---|---|---|---|
#18+
:) Уникален. Просто у вас номер - составной. Состоит из нескольких полей. В терминах БД не уникален, уникальным был бы альтернативный уникальный ключ по двум полям: номер, год Ой. Это вопрос не нумерации. Это вопрос искусственных и естественных ключей. Тут столько битв на эту тему было. Может не надо, а? Не надо, все для себя уже давно все решили. Лично я выбрал guid и не мучаюсь. А вот в этом топике мы видимо не определились номер - он только для нумерации или еще как PK? Нет, Роман, вы не решили проблему. Вы просто замели ее под коврик. GUID или identity - это и есть номера. Просто вы решили использовать стандартные средства для генерации номеров. Но решения у вас нет :) Решение у меня давно есть и хорошо работает. GUID и identity - это не номера, это уникальные PK-ключи и смысла делать для них нумерацию без дыр никакого нет. А Номер есть номер, это атрибут документа. Хотите для его создания используйте стандартные средства, хотите - свои. Но не надо смешивать номер с PK. Если продолжить обсуждение на этом поприще то все выльется в тоже "естественные против искуственных". Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2005, 13:51 |
|
|
start [/forum/topic.php?fid=33&msg=33121769&tid=1549607]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 157ms |
0 / 0 |