GUID - наскільки унікальний
На тому самому комп'ютері потік подій
1000 за секунду. Для кожного генерується GUID. Чи буде він унікальним, чи ні?
З.И. Тільки не треба зараз розмов починати: "А чому не скористатися звичайним лічильником? А ти впевнений, що у тебе все нормально з архітектурою?" і т.п. :)
Буде унікальним. Бо крім прив'язки до заліза там і зараз задіяно.
ти впевнений, що в тебе все гаразд з архітектурою?
> ти впевнений, що в тебе все нормально з архітектурою?
Не впевнений. :) Але поки що не від мене залежить. :)
1000 за секунду. Для кожного генерується GUID а встигне?
На тому самому комп'ютері .
Чесно кажучи, не очікував такого питання. Начебто це великі істини. GUID унікальний. Проблеми можуть бути тільки якщо він генерується на лівому залозі.
Наскільки унікальний? З яким допуском береться поточний час? Просто в MSSQL, наприклад, хоч вбийся - дискрет 3 мілісекунди.
Єдина проблема задачі GUID-ів може скінчиться :)
:) Потвори. І при цьому вони примудряються проіндексувати унікальними ключами таблиці, що реплікуються.
Все ще залежить від операційної системи. Свого часу під 98-им ми натикалися на колізію двох парних гуїдів.
Взагалі, алгоритм генерації GUID"а треба шукати не в MS"івської документації, а в першоджерелі, стандартах OSF (конкретно - DCE RPC). Щось типу цього: http://www.opengroup.org/onlinepubs/9629399/apdxa.htm#tagcjh_20
Ось що знайшов у стандарті:
- terminating the requester
- reissuing the request until it succeeds
- stalling the UUID generator until the system clock catches up.
GUID унікальний статистично, як кажуть. Тобто. повторення можливі, але настількирідко, що їх можна знехтувати.
> за умови, що 1000 в секундуЩо за маячня.
Може я скажу новину, але унікальність GUID'a ніяк від частоти генерації не залежить. Та й взагалі, GUID НЕ МОЖУ закінчиться. вірніше можуть. до 3400 року. якщо це когось хвилює.
Гумор на тему: http://blogs.byte-force.com/xor/archive/2004/11/15/352.aspx
Гумор в тему. А що швидше, згенерувати GUID, або створити потік?
Якщо всі комп'ютери світу будуть генерувати GUID з якоюсь шаленою швидкістю, то ймовірність повторення за чорти якийсь час (чи за рік, чи за час існування Всесвіту) не перевищує п'яти відсотків. Унікальним він буде.
Ну якщо 1000 в секунду, то имхо, якщо у мене голова з ранку варить, ймовірність повторення буде 1000*кількість секунд/2^128 або приблизно кількість секунд/2^118. Тобто ймовірність повторення на добу – десь 1/2^100, на рік – десь 1/2^90
= 1/10^26. Я дуже сильно округляв, щоби просто показати порядки.
Можливість 1/10^26 на рік - це дуже невелика можливість. Може, я неправильно вважаю.
Чорт, я ж зарікся сюди писати. Сподіваюся, це буде мій останній пост :)
> ймовірність повторення за чорти якийсь час (чи за рік, чи за час існування Всесвіту) не перевищує п'яти . відсотків. Унікальним він буде.якщо ймовірність > 0, отже, гарантій унікальності бути не може може бути тільки відчуття унікальності а при можливій зміні заліза - так і взагалі
> Власне, мене цікавив той мінімальний часовий інтервал, > для якого гарантується унікальність GUID на рівні > алгоритму генерації.Нижня оцінка - дискретність системного таймера. Насправді може ігірше.
При досить високій швидкості закачування даних швидше за все гальма виникнуть саме через генерацію гуїдів. Лічильник таки крутити швидше.
> Лічильник таки крутити швидше.
Та я знаю, що його крутити швидше. Сам фанат сурогатних ключів. Але тут система сильно розподілена виходить. І навіть складовий ключ унікальності не дає, є прецедент, коли таке може виникнути. А коли прецедент є - треба модель міняти.
Я, ось, одного зрозуміти не можу - чому не зрозумілий простий факт з комбінаторики ?
І до чого тут MAC, system time, system slice та інша трібуха? Як би вони не імплантувалися в алгоритм.
З рівним успіхом можна користуватися RND-генератором бажаної довжини. Недостатньо 2^128 - використовуєш 2^1024 і т.п.
> за даним документом MS Word (також що отримує під час створення > свій унікальний GUID) можна було визначити комп'ютер на > якому він був створенийа що, алгоритм реверсивний?
Ця історія про Office 97. Потім MS пішла від вбудовування MAC.
Ні. Так само як і нормальний хеш. Для швидко наступних запитів додатково використовується інкремент.
> Ні. Так само, як і нормальний хеш.так у чому тоді був страх> за GUID визначити комп'ютер, на якому він був створений?
Останній блок в GUID був присвячений MAC. Тобто. був завжди однаковий для одного і того ж інтерфейсу і як би видавав з головою комп'ютер, на якому він був створений.
Обов'язково закінчиться, через 2118 секунд