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

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

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

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

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

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

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

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


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