- Какова вероятность дублирования UUID в JVM.
Это возможно, но вероятность исчезающе мала. На странице Википедии о проблеме дня рождения есть таблица вероятностей , которую можно использовать для оценки вероятности столкновения.
Например, со 128-битными случайными UUID (и случайным числом высокого качества генератор) в таблице указано, что вам нужно будет сгенерировать 2,6 x 10 10 UUID, чтобы вероятность столкновения достигла 1 из 10 18 .
Ранее в в статье вы найдете математику по вычислению ... и оценке ... вероятностей.
Должны ли мы добавить лог c в код для проверки столкновения перед сохранением его в БД?
Это действительно зависит от количества UUID, которое вы, вероятно, создадите и сохраните, и от вероятности конфликта, которую вы готовы принять.
Однако, если вас беспокоит возможность коллизии, вы можете просто сделать столбцы UUID уникальными ключами в соответствующих таблицах базы данных. Более вероятно, что транзакция завершится неудачно из-за аппаратной ошибки, чем вы получите коллизию, ведущую к сбою ограничения уникальности!
Дополнительные вопросы:
Я не уверен, относится ли эта вероятность к одному или нескольким генераторам?
Количество генераторов не имеет значения, при условии, что они > независимые <генераторы случайных чисел. </p>
Как мы видели несколько сотен раз столкновения с 1 миллионом TXN.
Математика не делает l ie. Если вы видели коллизию несколько сотен раз с 1 миллионом транзакций, то что-то еще неверно. Предположения неверны.
Например:
- Возможно, вы используете слабый ГПСЧ.
- Возможно, вы используете фиксированное начальное число или плохой источник энтропия при заполнении PRNG.
- Возможно, вы модифицируете (например, сокращаете) UUID таким образом, чтобы резко уменьшить их эффективное количество бит.
- Возможно, что-то в вашей методологии генерации UUID заставляет UUID выдаваться дважды подряд ... иногда.
- Возможно, объекты дублируются, хотя их не должно быть ... и вы получаете две копии объекта с одинаковым UUID.
- Возможно, кто-то / что-то подделывает UUID.
Есть много вещей, которые вам нужно проверить, прежде чем вы начнете сомневаться в математике.
Мои сомнения - это все 4 службы используют один и тот же алгоритм, вероятность возрастет.
Как я уже сказал, количество генераторов не влияет на математику.