Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Guid без четырех байт + int = Уникальный ключ? / 13 сообщений из 13, страница 1 из 1
15.09.2010, 21:44
    #36849070
Guid__
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
Вечер добрый! Есть приложение А, которое в качестве первичных ключей использует GUID’ы. И есть приложение Б, которое в качестве первичных ключей использует int32. Сами по себе эти приложения вполне нормально работали. Но сейчас возникла задача передавать из приложения Б в приложение А данные для хранения и последующей обработки. Есть много нюансов зачем это нужно, а вопрос такой:

Если сгенерировать GUID для каждой из таблиц приложения Б, затем взять от них первые 12 байт и оставшиеся четыре байта дополнить первичным ключом типа int32, что в сумме дает те же 16 байт, то получившееся значение будет обладать свойствами GUID’а (уникальностью)? Или в GUID важна сама последовательность в целом?
...
Рейтинг: 0 / 0
15.09.2010, 22:39
    #36849136
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
Guid__Вечер добрый! Есть приложение А, которое в качестве первичных ключей использует GUID’ы. И есть приложение Б, которое в качестве первичных ключей использует int32. Сами по себе эти приложения вполне нормально работали. Но сейчас возникла задача передавать из приложения Б в приложение А данные для хранения и последующей обработки. Есть много нюансов зачем это нужно, а вопрос такой:

Если сгенерировать GUID для каждой из таблиц приложения Б, затем взять от них первые 12 байт и оставшиеся четыре байта дополнить первичным ключом типа int32, что в сумме дает те же 16 байт, то получившееся значение будет обладать свойствами GUID’а (уникальностью)? Или в GUID важна сама последовательность в целом?Завести поле ГУИД в Б и передавать
Или завести целое поле в А и передавать
...
Рейтинг: 0 / 0
16.09.2010, 07:19
    #36849301
Guid__
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
alexeyvg, я же написал - есть нюансы: гуид в Б создать пока нельзя. Можно ли обойтись таким решением, которое я написал?
...
Рейтинг: 0 / 0
16.09.2010, 08:34
    #36849326
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
Guid__alexeyvg, я же написал - есть нюансы: гуид в Б создать пока нельзя. Можно ли обойтись таким решением, которое я написал?В принципе да, можно.
...
Рейтинг: 0 / 0
16.09.2010, 10:35
    #36849512
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
Более того, в качестве 12 добавочных байт можно взять любую константу, которая наверняка не встретится среди имеющихся и будущих записей, например, все нули.
...
Рейтинг: 0 / 0
16.09.2010, 10:46
    #36849559
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
miksoftБолее того, в качестве 12 добавочных байт можно взять любую константу, которая наверняка не встретится среди имеющихся и будущих записей, например, все нули.На самом деле вероятность того, что встретятся все нули абсолютно такая-же как и для любого набора символов.

Фактически гарантируемая уникальность GUID означает, что какой-бы GUID вы не придумали, он никогда и нигде не встретится :-)

Хотя на практике ктож его знает...
...
Рейтинг: 0 / 0
16.09.2010, 10:49
    #36849568
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
alexeyvgmiksoftБолее того, в качестве 12 добавочных байт можно взять любую константу, которая наверняка не встретится среди имеющихся и будущих записей, например, все нули.На самом деле вероятность того, что встретятся все нули абсолютно такая-же как и для любого набора символов.Если бы GUID-ы были абсолютно случайны - да. Но на практике GUID-ы генерятся по определенным правилам, которые резко снижают вероятность всех нулей. Например, MAC-адреса, которые в ряде случаев используются при генерации GUID-ов, распределены далеко не равномерно.
...
Рейтинг: 0 / 0
16.09.2010, 12:13
    #36849837
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
miksoftalexeyvgmiksoftБолее того, в качестве 12 добавочных байт можно взять любую константу, которая наверняка не встретится среди имеющихся и будущих записей, например, все нули.На самом деле вероятность того, что встретятся все нули абсолютно такая-же как и для любого набора символов.Если бы GUID-ы были абсолютно случайны - да. Но на практике GUID-ы генерятся по определенным правилам, которые резко снижают вероятность всех нулей. Например, MAC-адреса, которые в ряде случаев используются при генерации GUID-ов, распределены далеко не равномерно.Дело в том, что начало GUID не является мак-адресом. GUID - это хэш от каких-то других данных. Ну а хэшу почему бы не начинаться с нулей?

То есть цифры в GUID-е подчиняются математическим правилам, а не административным. Для не-административных правил что 0, что 9 - абсолютно равнозначно, ведь математика не считает байт 0х00 предпочтительнее байта 0хА9
Это человек (вот как вы :-) ) может по каким то причинам для некоего специального значения взять число 0х000000000000 вместо абсолютно равновероятного числа 0х861045235214

ЗЫ. Я как то делал выборку из одной таблицы с GUID-ом с сортировкой по нему - там у первых записей было довольно много нулей, хотя конечно не 12.
...
Рейтинг: 0 / 0
16.09.2010, 12:33
    #36849925
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
alexeyvgGUID - это хэш от каких-то других данных.Не всегда. Существовали алгоритмы генерации GUID, где MAC-адрес тупо конкатенировался с остальными частями GUID-а.

А вообще, попалась мне тут на глаза любопытная ссылка - http://www.gotdotnet.ru/blogs/denish/1965/
Там описывается, что все оно не настолько случайно, как кажется.
...
Рейтинг: 0 / 0
16.09.2010, 13:45
    #36850151
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
miksoftalexeyvgGUID - это хэш от каких-то других данных.Не всегда. Существовали алгоритмы генерации GUID, где MAC-адрес тупо конкатенировался с остальными частями GUID-а.Да, это я знаю; я говорил про современный алгоритм.
...
Рейтинг: 0 / 0
16.09.2010, 13:50
    #36850165
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
alexeyvgДа, это я знаю; я говорил про современный алгоритм.И даже в современных алгоритмах не может быть 12 нулевых байт. См. ссылку.
...
Рейтинг: 0 / 0
16.09.2010, 14:00
    #36850195
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
miksoftalexeyvgДа, это я знаю; я говорил про современный алгоритм.И даже в современных алгоритмах не может быть 12 нулевых байт. См. ссылку.Да, надо-же...
Спасибо.
...
Рейтинг: 0 / 0
16.09.2010, 21:07
    #36851272
Guid__
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Guid без четырех байт + int = Уникальный ключ?
alexeyvg, miksoft, спасибо!
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Guid без четырех байт + int = Уникальный ключ? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]