Какой у вас формат URL?
Если какой-либо URL-адрес совместно использует один или несколько доменов, и вам достаточно около 2 миллиардов доменных имен, вы можете создать пул для доменных имен. И если у вас есть общие относительные пути, вы можете объединить их.
Для каждого URL в вашей базе данных, разделите каждый URL на три части. схема и домен, например http://mydomain.com действительный URL / my / path /, а затем остальные mypage.html? Id = 4 (если у вас есть параметры строки запроса)
Таким образом, вы должны сократить накладные расходы каждого домена и относительного пути примерно до 8 байтов. Это должно быть лучше и быстрее, если вы хотите искать части URL.
Примечание: только сама строка схемы "http" составляет 4 байта, вы сохраните все, что выше, в каждой записи домена. Если каждый URL начинается с "http://www.", вы будете сохранять": // www. "Каждый раз по 7 байт.
Поэкспериментируйте немного о том, как разделить и структурировать URL, держу пари, что вы найдете сжатие. Теперь, оставшаяся строка, которая не является общим доменом или относительным путем, что вы могли бы сделать с этим?
Сжатие URL
Сжатие общего назначения, такие методы получены из арифметического кодирования. Шеннон, отец теории информации, написал статью об этом в 60-х годах. Некоторое время я работал со сжатием, и единственное, что я всегда находил, это то, что сжатие общего назначения никогда не решает реальную проблему.
Вам повезло, потому что URL-адреса имеют структуру и структуру, которую вы должны использовать, чтобы лучше хранить свои URL-адреса.
Если вы хотите применить алгоритм сжатия (я думаю, что тему следует изменить, чтобы отразить сжатие URL-адресов, поскольку оно зависит от домена), вам придется проверить энтропию ваших данных. Потому что он расскажет вам кое-что о выходе хранилища. URL-адреса являются символами ASCII, любой символ, не входящий в диапазон ASCII 0x20-0x7E, не будет возникать и отбрасывать чувствительность к регистру, вы просто в 63 различных состояниях. ! "#% & '() * +, -. / 0123456789:; <=>? @ Abcdefghijklmnopqrstuvwxyz {|} ~ включая пробел.
Вы можете создать таблицу частот оставшихся символов и выполнить арифметическое кодирование. Вы знаете, что вам понадобится не более 6 битов, что означает, что для каждого символа в вашей базе данных URL вы сейчас тратите 2 биты, и если вы просто переместите все на свои места и используете таблицу поиска, вы получите Компрессия 20%. Просто так;)
Поскольку данные настолько специфичны, просто не стоит просто сжимать их методами общего назначения. Лучше структурировать информацию и разбить ее на части данных, которые вы можете хранить более эффективно. Вы много знаете о домене, используйте эти знания для сжатия ваших данных.