Недавно мы решили, что нам было бы полезно, если бы идентификаторы наших сущностей в хранилище данных были слишком большими. Основная причина в том, что мы используем эти идентификаторы в URL-адресах, которые мы хотели бы сохранить краткими и короткими.
В настоящее время, например, идентификаторы наших организаций растут следующим образом:
id=2
id=2003
id=2004
id=2027
id=2028
id=5002
id=5204
id=6001
id=7534
id=8001
id=10192
id=11306
id=14306
id=16330
id=18306
id=20321
id=41312
id=79306
id=113308
id=113311
etc.
Как видите, иногда увеличение исчисляется десятками тысяч.
Теперь, мы могли бы справиться со всеми этими трудностями, создав достаточно большой счетчик для подсчета количества сущностей для нас и затем назначив идентификаторы сами, но мне все равно было бы лучше, если бы хранилище данных назначило нам ключи .
Есть ли какой-нибудь способ сообщить хранилищу данных о пересчете доступных идентификаторов, чтобы в следующий раз, когда я сохранял сущность, он получал наименьший доступный идентификатор? Они не должны быть последовательными в нашем случае.
UPDATE:
Как и предполагалось @ Amber , мы могли бы закодировать цифры в base62, чтобы сделать их короче (максимум 11 цифр для 64-разрядных беззнаковых int
с).
Хотя этот подход не так уж и плох, у него есть несколько недостатков. Во-первых, я не уверен, насколько хорош UX. Во-вторых, некоторые цифры будут конфликтовать с другими строками, которые мы в настоящее время используем в URL.
Как пример:
/books/(\d+)(/book-name)?
/books/selection
Книга с идентификатором 26086738530
будет иметь URL-адреса '/ books / selection / book-name' и '/ books / selection', конфликтующие с другой нашей страницей.