Arhn - архитектура программирования

Есть ли вероятность того, что все GUID будут израсходованы?

Учитывая, что каждый GUID представлен 16 байтами. Таким образом, в лучшем случае существует 2^128 возможностей = 3,4028237e+38 возможных GUID.

Возможно ли, что все это будет израсходовано?

16.04.2015

  • Абсолютно. Даже если в секунду будет генерироваться только один GUID, нам хватит 9 квинтиллионов лет. Это задолго до тепловой смерти Вселенной. 16.04.2015
  • Вопрос правильный, но более важный вопрос: нужно ли мне защищать себя от случайных дубликатов? На что ответ 100% нет. 16.04.2015
  • @usr Предполагая, что идентификаторы GUID генерируются совершенно случайным образом. 16.04.2015
  • так же, как люди думали, что IPv4 было достаточно, теперь нам нужен IPv6. хаха просто интересно. может быть, какая-то радикальная прорывная технология может изменить то, как мы отслеживаем данные? например квантовые вычисления? Интернет вещей? количественное самоощущение? А что, если через 10 лет мы будем жить в мире, где миллиарды точек данных (каждая с указанием) генерируются на человека в секунду. :П 16.04.2015
  • и может быть каким-то образом соотношение машины и человека станет невероятно огромным. 16.04.2015

Ответы:


1

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

16.04.2015
  • думал, что если когда-нибудь у 7 миллиардов человек будет по 10 устройств (носимых + компьютеры), каждое из которых будет генерировать 100 точек данных в секунду. Чтобы поглотить все, потребуется 1,54e+18 лет. Может быть, мне следует перефразировать вопрос так: возможно ли, что у нас есть устройства 1.54e+16, которые генерируют несколько идентификаторов в секунду и в конечном итоге потребляют все идентификаторы... 16.04.2015
  • ну, я думаю, тогда мы можем использовать 32 байта для хранения гидов... ха-ха 16.04.2015
  • @ChrisYeung: Я думаю, что классический ответ на огромные числа постулирует экспоненциальный рост. Человечество колонизирует космос или создает машины, использующие GUID, которые делают это и размножаются с экспоненциальной скоростью. Но подробности этого относятся к области научной фантастики, а не переполнения стека. 16.04.2015

  • 2

    Чтобы показать вам, насколько велики 2 ^ 128 GUID:

    1 GUID = 16 bytes.

    Следовательно, для хранения 2^128 GUID потребуется 2^4 * 2^128 bytes.

    2^4 * 2^128 = 2^132 bytes

    Используя Python, я подсчитал, что это займет:
    4,951,760,157,141,521,099,596,496,896 терабайт.

    Итак, сначала вам нужно будет побеспокоиться о возможности хранить такое количество GUID, прежде чем вы даже сможете подумать об их исчерпании.

    В принципе: вы не можете убежать.


    Столкновения

    Просто потому, что я много раз слышал, как люди беспокоятся о столкновении, я расширим свой ответ, включив в него анализ возможностей столкновений.

    average количество UUID, которое вам понадобится, пока не возникнет коллизия:

    2^128 / 2 = 2^127
    

    Это означает, что существует 50% шанс, что к тому времени, когда вы сгенерируете 2^127 GUID, вы получите коллизию. Количество GUID, которое вам нужно для этого:

    170141183460469231731687303715884105728 GUIDs
    

    Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь, но: это означает, что вероятность возникновения коллизии настолько мала, что даже не стоит проверять, существует ли только что сгенерированный UUID в вашей базе данных.

    Примечание. Все это предполагает, что UUID генерируются с использованием хорошего алгоритма случайности и хорошего источника энтропии.

    16.04.2015
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..