Генерация удобочитаемого идентификатора в распределенной базе данных, такой как Cassandra - PullRequest
0 голосов
/ 31 мая 2018

Я работаю над проектом, в котором у нас есть распределенная база данных (Cassandra), и мы пытаемся сгенерировать удобочитаемые уникальные идентификаторы (пример: 354AFV35).UUID, сгенерированные Cassandra (пример: 2e81ae02-1905-4def-9f24-baead0d90358) не читаются человеком.

Как можно создать уникальный читаемый идентификатор человека для распределенной базы данных, такой как Cassandra?

1 Ответ

0 голосов
/ 31 мая 2018

Это довольно забавная проблема, но на самом деле сводится к требованиям.Сколько гарантии вам требуется, необходимая скорость, использование памяти и диска, задержка.Временные идентификаторы из Кассандры абсолютно уникальны, если у вас нет постоянной> 10000 идентификаторов, генерируемых в мс на экземпляр (что на самом деле является невозможным томом, поэтому не проблема).Возможно, вы можете просто пойти со случайной комбинацией некоторой суммы, что вероятность столкновения в порядке.Вы также всегда можете использовать LWT, чтобы обеспечить это, но чтение перед записью происходит медленно и является шаблоном, которого следует избегать, если это возможно.Но если ваш показатель новых идентификаторов достаточно низок, проверка LWT IF EXISTS является прямой и удобной.

У вас может быть несколько частей, например, все прилагательные / глаголы из общего словаря.но дайте каждому серверу приложений собственный словарь существительных, уникальных для него (сложность работы).Тогда серверу просто нужно беспокоиться об уникальности с его собственным набором существительных в сочетании с обычными.Существует множество умных / эффективных способов, которыми приложение может отслеживать свои используемые идентификаторы, фактически не сохраняя гигантский список строк, такой как большой фильтр Блума (можно просто пропустить повторное использование возможных коллизий при ложных срабатываниях) или назначая целочисленные значения слов ихранение дельта-последовательностей или в btree действительно зависит от требований к пространству и времени.

...