Насколько уникален UUID?

Вам нужно enable_testing активировать тестовое оборудование CMake. Для функции add_test требуется имя теста и команда для запуска, а синтаксис следующий.

Чтобы добавить счетчик, вы можете использовать функцию math(). Следующее позволит вам также исчерпать исходные сборки, указав полный путь к входам.

cmake_minimum_required(VERSION 2.6)
enable_testing()

file(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/fixtures/*.ext")
set(validator ${CMAKE_CURRENT_SOURCE_DIR}/validator)
set(i 0)
foreach(filename ${files})
    add_test(NAME "validate_${i}"
       COMMAND "${validator}" ${filename})
    math(EXPR i "${i} + 1")
endforeach()
379
задан Jason 20 July 2009 в 18:06
поделиться

7 ответов

Очень безопасно:

ежегодный риск удара метеорита по данному человеку оценивается как один шанс на 17 миллиардов, что означает вероятность около 0,00000000006 (6 × 10 −11 ), что эквивалентно вероятности создания нескольких десятков триллионов UUID в год и наличия одного дубликата. Другими словами, только после генерирования 1 миллиарда UUID каждую секунду в течение следующих 100 лет вероятность создания только одного дубликата составит около 50%.

Предостережение:

Однако эти вероятности имеют место только тогда, когда UUID генерируются с использованием достаточной энтропии. В противном случае вероятность дубликатов может быть значительно выше, поскольку статистическая дисперсия может быть ниже. Если для распределенных приложений требуются уникальные идентификаторы, чтобы идентификаторы UUID не конфликтовали даже при объединении данных со многих устройств, случайность начальных чисел и генераторов, используемых на каждом устройстве, должна быть надежной в течение всего срока службы приложения. Там, где это невозможно, RFC4122 рекомендует использовать вместо этого вариант пространства имен.

Источник: Случайная вероятность UUID дубликатов раздел статьи Википедии об универсально уникальных идентификаторах (ссылка ведет к пересмотру с декабря 2016 года, прежде чем редактирование переработало раздел) .

Также см. Текущий раздел на ту же тему по той же статье с универсальным уникальным идентификатором, Столкновения .

369
ответ дан Martijn Pieters 20 July 2009 в 18:06
поделиться

Цитата из Википедии :

Таким образом, любой может создать UUID и использовать его для идентификации чего-либо с достаточной уверенностью в том, что идентификатор никогда не будет непреднамеренно использован кем-либо для чего-либо еще

Далее достаточно подробно объясняется, насколько это безопасно на самом деле. Итак, чтобы ответить на ваш вопрос: да, это достаточно безопасно.

14
ответ дан Dave Vogt 20 July 2009 в 18:06
поделиться

Делали это годами. Никогда не сталкивайтесь с проблемой.

Я обычно настраиваю свои БД на одну таблицу, которая содержит все ключи, даты изменения и тому подобное. Никогда не сталкивался с проблемой дублирования ключей.

Единственный недостаток, который у него есть, это когда вы пишете несколько запросов для быстрого поиска информации, вы много копируете и вставляете ключи. У вас нет коротких, легко запоминающихся идентификаторов.

5
ответ дан Posthuma 20 July 2009 в 18:06
поделиться

Для UUID4 я делаю его, что существует приблизительно столько же идентификаторов, сколько существуют мелкие частицы песка в поле, имеющем форму куба со сторонами 360,000 км длиной. Это - поле со сторонами ~2 1/2 раза дольше, чем диаметр Юпитера.

Работа, таким образом, кто-то может сказать мне, если я испортил единицы:

  • объем мелкой частицы песка 0.00947mm^3 ( Опекун )
  • UUID4 имеет 122 случайных бита-> 5.3e36 возможные значения ( Википедия )
  • объем этого много мелких частиц песка = 5.0191e34 mm^3 или 5.0191e+25m^3
  • длина стороны кубического поля с тем объемом = 3.69E8 м или 369,000 км
  • диаметр Юпитера: 139,820 км (Google)
0
ответ дан 22 November 2019 в 23:30
поделиться

Если под «дано достаточно времени» вы имеете в виду 100 лет, и вы создаете их со скоростью миллиарда в секунду, тогда да, через 100 лет вероятность столкновения составляет 50%.

139
ответ дан 22 November 2019 в 23:30
поделиться

В схемах UUID обычно используется не только псевдослучайный элемент, но также текущее системное время и какой-то часто уникальный идентификатор оборудования, если он доступен, например, сетевой MAC-адрес.

Весь смысл использования UUID в том, что вы доверяете ему лучше справляться с предоставлением уникального идентификатора, чем вы сами. Это то же самое обоснование использования сторонней криптографической библиотеки, а не собственной. Сделать это самому может быть веселее, но, как правило, это менее ответственно.

8
ответ дан 22 November 2019 в 23:30
поделиться

Я не знаю, имеет ли это значение для вас, но имейте в виду, что идентификаторы GUID глобально уникальны, а подстроки GUID - не .

2
ответ дан 22 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: