|
Как формируется GUID? (Уникальность его в пределах разных баз) | ☑ | ||
---|---|---|---|---|
0
Mendel_UA
30.10.10
✎
18:21
|
GUID сериализуется при обмене как довольно длинной строкой, но все-таки существуют опасения, как бы при обмене двух и более независимых баз не возникла ситуация когда в разных базах существуют РАЗНЫЕ элементы с одинаковым GUID.
В данный момент рассматриваю ситуацию в которой одна база обменивается с 29 других баз которые никак между собой не связаны (в смысле это не РИБ и никто не является ни для кого родительским узлом). |
5 12 |
||
1
est
30.10.10
✎
18:23
|
опасения имеют основания
|
|||
2
Aleksey_3
30.10.10
✎
19:40
|
Опасность есть, но главное чтобы гуид был уникален в разрезе типа и вида. Т.е. если элемент справочника номенклатура и контрагент имеют одинаковый гуид - то ничего страшного в этом нет
|
|||
3
Aleksey_3
30.10.10
✎
19:40
|
||||
4
sda553
30.10.10
✎
20:42
|
Говорят что и метеорит может на голову упасть. На практике его неуникальнность за всю мою рабочую деятельность не встречалась.
Если у вас возникли проблемы с обменом, то для программиста это слабая отмазка, ищите проблему в другом месте |
7 |
||
5
sda553
30.10.10
✎
20:45
|
(0) Скорее всего работает обмен, который синхронизирует по ГУИД и еще какой то механизм загрузки данных (загрузка из 7.7 например) с синхронизацией по коду/наименованию или еще чему то. Вот и возникает такой конфликт, обмен создает элемент и поначалу они одинаковые с одинаковым ГУИД, потом какая то загрузка по коду переписывает эти элементы на свои другие, получается что ГУИД один а элементы разные
|
|||
6
pectopatop
30.10.10
✎
21:27
|
Вероятность очень мала, настолько что ей можно пренебречь.
В алгоритме формирования ГУИДа участвуют в том числе и MAC-адрес компа, и текущее сист.время, и счетчик тактов процессора. Выпадающие ГУИДы РАВНОМЕРНО заполняют пространство параметров. |
|||
7
Mendel_UA
30.10.10
✎
22:47
|
(4) Проблем пока нет, стараюсь такие проблемы оставлять на этапе проектирования :)
В данный момент это 29 независимых РИБ из которых в главке информацию достают раздельно, распечатывают/сохраняют, и потом сбивают вручную в единые отчеты. Но каждая из этих 29 баз сама по себе не маленькая. У меня например это 65 узлов, все в ФАЙЛОВОМ режиме :) На некоторых узлах по 15 человек одновременно. Конечно у меня самая большая база из этих 29, но тем не менее утешение это слабое. Часть проблем я уже решил, (к примеру автообмен у меня значительно интелектуальнее типового), часть примерно знаю как решать, но пока не имею полномочий... но наверняка есть и такие о которых я еще не знаю :) Вот их бы хотелось сократить до минимума... ПЫСЫ: Я знаю, что файловый режим да еще и на 8.0 это мазохизм в моей ситуации, но пока еще этот вопрос не в моей компетенции... :) |
|||
8
PVasili
31.10.10
✎
00:45
|
топик стартер: оцените степень числа в GUID?
Посчитайте вероятность от: 340 282 366 920 938 463 463 374 607 431 768 211 455 возможных вариантов. Надеюсь вопрос отпадет сам собой :) |
9 |
||
9
Aleksey_3
31.10.10
✎
00:58
|
(8) Все бы хорошо, если не 1С
"GUID 1С формирует не по правилам Microsoft, а инкрементно. В начале сеанса формируется стартовый GUID, r примеру 6F9619FF-8B86-D011-B42D-00CF4FC964F0 " |
|||
10
PVasili
31.10.10
✎
01:11
|
GUID и в Африке GUID. 1С тут не при чем.
Скорее всего указанные используется для чего-то другого, а не для данных. Посмотрите сколько в реестре Win GUID ключей. 38 степень покроет всё, что может вам в голову придуматься в любых количествах :) |
11 |
||
11
Mendel_UA
31.10.10
✎
02:33
|
(10) именно причем. сделал четыре новых документа подряд, получил следующие номера:
b6dc1ccc-e472-11df-922d-001e33069798 b6dc1ccd-e472-11df-922d-001e33069798 b6dc1cce-e472-11df-922d-001e33069798 b6dc1ccf-e472-11df-922d-001e33069798 Хотя если честно это не сильно влияет на надежность метода, но факт остается фактом. Ну и расчет "Посмотрите сколько в реестре Win GUID ключей" несколько неверен, ибо количество возможных комбинаций и вероятность коллизий это совсем различные понятия. Для краха данных достаточно одной малюсенькой коллизии :) Однако это все теория. На практике вероятность коллизии все равно очень мала, и в 1С без того хватает причин для краха данных :) Хотя если бы 1С предусмотрела в обмене флаг "новый/измененный", то проблемы бы совсем не стоило бояться -просто при создании объекта который уже существует, надо было бы вызывать исключение и звать админа искать проблему. ПЫСЫ: Кстати реально существует возможность образования разных данных с одинаковыми идентификаторами. При не очень толковых выгрузках/загрузках с помощью устаревших обработок можно поймать такие глюки. У меня такие реально есть в базе. Пока не придумал как лечить. Жду конца года, когда буду делать "Матрица перезагрузка". |
|||
12
Собеседник
31.10.10
✎
08:27
|
(0)
простой пример "неуникальности" GUID : 28 база делалась ...когда-то давно... методом копирования 27-ой :). Удалили "лишние" и переименования "нужные" справочники, удалили все документы. вот тебе и "счастье" |
|||
13
Живой Ископаемый
31.10.10
✎
15:05
|
проблема не стоит выеденного ийца. потому что если вдруг даже что-то такое случится, то во-первых - при загрузке в центр, где уже есть объект с таким уидом произойдет ошибка - и ты сразу эту проблему локализуешь (а если уид назначится объекту другого типа/вида - то вообще не проблема)
во-вторых понятно что в этом случае делать, как исправлять. Поэтому тема не относится к разделу в8 а относится к разделу "как страшно жить" или "посоветуйте надежного и недорого психолога". |
|||
14
Aleksey_3
31.10.10
✎
16:26
|
Ну ошибку он не получит, у него просто обновятся данные
|
|||
15
Живой Ископаемый
31.10.10
✎
16:39
|
Если у него используется дата запрета редактирования, и документ с таким же УИДом был в прошлом, то по крайней мере получит сообщение что редактирование данных того периода запрещено. Если конечно не настолько интеллектуализировал обмен, что он не будет проверять дату запрета.
|
16 |
||
16
Mendel_UA
31.10.10
✎
21:01
|
(15) "если" это плохое слово :)
А если не используется, тогда что? :) А если проблемы со справочником, тогда дата запрета сильно поможет? А если перезаписываемый документ недавно создан и его еще можно изменять? Ну а вообще вопрос конечно не особо критичный для большинства приложений. Ну потерялся справочник-документ, ну бывает... раз в десять лет. |
|||
17
Sammo
01.11.10
✎
06:36
|
+ рекомендую учесть возможность ввода гуида руками
|
|||
18
Маленький Вопросик
01.11.10
✎
06:37
|
при подобных обменах обычно используются префиксы документов.
|
19 |
||
19
Mendel_UA
01.11.10
✎
10:02
|
(18)Префиксы к номеру относятся - это для людей. А сам 1С пользуется GUID. У GUID префиксов нет.
|
|||
20
skunk
01.11.10
✎
10:06
|
сегодня попробовал универсальным обменом выгрузить два элемента справочника пользователей ... лень было руками в другой базе настраивать ... получил уникальность гуида
|
|||
21
Живой Ископаемый
01.11.10
✎
10:43
|
так я и думал... короче, вот вам рецепт.. он не вылечит паранойю, но существенно ее купирует.
Заводите независимый РС с единственным измерением типа строка с длиной достаточной чтобы принять строку гуида. При начале работы системы берете какой-нить справочник и получеате ссылку нового для него получаете строку типа b6dc1ccc-e472-11df-922d-001e33069798 заменяете два последних символа в первой группе на "_" получаете "b6dc1c__-e472-11df-922d-001e33069798" ищите запись в этом РС подобную последней строке. Если находите - завершаете работу системы Само собой РС должен ходить по всем 29 базам. |
|||
22
Живой Ископаемый
01.11.10
✎
11:10
|
Ну тем самым мы предполагаем что в рамках одного сеанса может быть заведено 256 объектов :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |