@unique

Xalet

Well-known member
08.08.2008
410
0
#1
Есть такая функция @Unique. Возвращает по описание произвольное уникальное текстовое значение.

Кто знает, как она на самом деле работает и можно ли ей пользоваться для создания, к примеру, уникальных номеров в системе с 10+ серверами на которох размещена одна база синхронизируемая через реплики... Какой шанс, что значение в поле генерируемое функцией @Unique действительно будет уникальным?

Спасибо.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#2
что-то ты плохо читал...
возвращает список уникальных значений, а не произвольное
т.е., @Unique("мама" : "папа" : "я" : "брат" : "брат" : "брат": "сестра") вернет "мама" : "папа" : "я" : "брат" : "сестра"
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#4
Akupaka
а если просто дать @Unique то видаст PPUP-7UTHXE где PPUP = Petro PUPKIN

xalet

имхо плохое решение. но шанс очень большой например если номер доки PPUP-7UTHXE то повторится он может только -7UTHXE етой частю. а первая часть так и останется уникальной

P.S учтите PPUP ето нетолько Petro PUPKIN но и Pavel PUPKIN ну и никто не отменял двойников:)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#5
оу... что-то я не то читал))) никогда не юзал ее без параметров
 

TIA

:-)
Lotus team
15.05.2009
790
3
#6
xalet
Знаю только что при формировании этого значения используются инициалы из текущей айдишки и что ibm'меры сами её пользуют.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 803
21
#7
вот что нашел тут

The @Unique function, if used with no arguments, will return a unique character string such as this one: MAGN-3WWMRX. You can use @Unique to assign each document in a database an identifier that will always be unique, but which is much shorter, and thus, more manageable than the universal document ID. Many Notes developers store an identifier generated with @Unique in each Notes document. They're more manageable than the universal document ID, and they don't change when a document is cut and re-pasted, or when a replication or save conflict is resolved.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#8
@Unique то видаст PPUP-7UTHXE где PPUP = Petro PUPKIN
первые буквы инициатора + NoteID
как помним NoteID уникально в пределах ОДНОЙ базы
тоесть уникальность в пределах сервера уже не наблюдается
ну а если и серверов много то тогда вообще плохо

но для одной базы этого достаточно
 
O

oshmianski

#10
сам не нарывался и не проверял, но слышал, что при автоматической генерации доков с @unique в качестве уникального ключа, нарывались на одинаковые значения. т.е. документы создаются слишком быстро и @unique возвращает одно и то же значение.
 
R
#11
сам не нарывался и не проверял, но слышал, что при автоматической генерации доков с @unique в качестве уникального ключа, нарывались на одинаковые значения. т.е. документы создаются слишком быстро и @unique возвращает одно и то же значение.
Не могу вспомнить источник, но именно @unique в рамках одной сессии, если "не успевает" то генерирует следующее значение на единицу больше предыдущего.
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#12
oshmianski

враки. я использую @unique в одной базе. там автоматически генирируется 65 доков каждий день. дубликатов нет.
Но ищо раз ета функция как писал ToxaRat толоько для 1 бази. для реплик уже не подойдет имхо......
 

Xalet

Well-known member
08.08.2008
410
0
#13
Но ищо раз ета функция как писал ToxaRat толоько для 1 бази. для реплик уже не подойдет имхо......
т.е. в ситуации, как у меня, лучше не полагаться на такую, а генерировать айди самому?

Тогда делитесь кто как уникальность поддерживает.
Ато в том хозяйстве, что досталось мне по наследству как-то кривовато все. В ини файле хранится идентификатор места, плюс счетчик, плюс еще куча всего... И из этого получается айдишка. Вроде как все нормально и работоспособно, пока не начинается переезд на новый комп или не летит винч с ини файликом... Да и настройка апликухи на рабочем месте порядком усложняется...
 

TIA

:-)
Lotus team
15.05.2009
790
3
#14
Самый надёжный - UNID. Только пользователю им оперировать сложно.
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#15
xalet

ну как я понимаю у вас каждий регион на отдельном серваке да?можно и @unique брать все таки
например есть сервак под конкретний регион регион например "Киев" тогда можно делать регион + @unique тогда уж точно будет сохранятся последовательность и не будет дубликатов.
но здесь и другой вопрос для кого ви делаете нумерацию документов????? для себя? или для налоговой???? если второй вариан тогда етот вариант нумерации сразу одпадает.....
 

Xalet

Well-known member
08.08.2008
410
0
#16
но здесь и другой вопрос для кого ви делаете нумерацию документов?????
Для связи между доками в базе... Пользователи номеров не видят и с ними не работают.

А сеть планируется 10ть серверов в 10ти областях, все это реплицируется через центр, и с каждым из серверов работают через реплики и напрямую Н-ое количество народу.

UNID будет уникальным для всех документов в такой системе?
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#17
Для связи между доками в базе... Пользователи номеров не видят и с ними не работают.
а какая у вас связь между доками?что документ "А" както силается на документ "Б"???? чтото непонятно......
 

TIA

:-)
Lotus team
15.05.2009
790
3
#18
UNID будет уникальным для всех документов в такой системе?
Да, UNID гарантированно уникальный. Если только не изгаляться, например присваиванием значения UNID'у. Но осторожней с cut-paste он присваивает документу новый UNID. Для связи документов, UNID - это то, что надо. Получение связанного документа по Unid на много быстреее чем по ключу по вьюхе.
 

Xalet

Well-known member
08.08.2008
410
0
#19
а какая у вас связь между доками?что документ "А" както силается на документ "Б"???? чтото непонятно......
Да, именно ссылается. И не на один, а на много... Вообще там как бы иерархия их, как в случае с респосами к примеру. Только вот создаваться они могут во всех направлениях...

Для связи документов, UNID - это то, что надо. Получение связанного документа по Unid на много быстреее чем по ключу по вьюхе.
Спасибо. возьму на вооружение.
 

PaVaP

Member
25.06.2009
22
0
#20
Можно в док-те создать поле Computed when composed и в него сохранять юнид.
Для связи док-тов использовать данное поле.
Тогда после копи-паста (или еще чего...) связи между доками не порушатся.