В моей работе у меня много пользователей, и у каждого пользователя есть набор файлов в домашних каталогах. Из-за некоторых предварительно определенных правил я дал каждому файлу UID (уникальная идентификация) на основе содержимого пользовательского файла и времени его создания. Но теперь я узнал, что количество файлов в учетной записи пользователя не может превышать 1 миллион. Текущий UID имеет длину около 32 символов. Есть ли способ, с помощью которого я могу свести свой UID примерно до 6 (идеальное состояние) до 10-12 символов, так как текущий uidl использует много места в моей базе данных NoSQL.Уникальный ключ для создания/сжатия
Текущий UIDL выглядит timestamp.prrocess_whichcreated_it.size
EDIT Позвольте мне перефразировать проблему. Мне действительно нужен компрессионный алгоритм: .
У меня есть список из 1000 000 строк (каждый уникальный) и каждый 32 символа. Мне нужна функция сжатия f, такая, что F (string) = s2, где S2 имеет длину 10 символов и все строки S2 однозначно отображаются
Вы ищете хеш-функцию, которая будет запускаться каждый раз, когда вы ищете UID или способ изменить эти UID на меньший новый диапазон? – amit
@amit: Я просто хочу сжать свой предыдущий UID, будет хорошо, если я смогу использовать текущий UID для своей задачи, но также будет хорошо, если я могу вычислить новый. В идеале H (C.UIDL) = newuidl –
Тогда почему бы просто не сортировать и не заменять? сортировать все UID и заменять старый UID новым UID, указывающим индекс старого UID в отсортированном списке. Он будет уникальным и оптимальным. Или я пропускаю то, что вы на самом деле имеете в виду? : | – amit