2013-06-17 2 views
7

Имеет ли LevelDB ограничение на длину ключа?Имеет ли LevelDB ограничение максимальной длины для ключей?

Я хочу сохранить данные с помощью URL-адреса. поэтому эти URL-адреса могут быть очень длинными i.g. http://veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryloooooooooooooooong-url.com

ответ

7

В LevelDB нет предела длины ключа. Ключами являются произвольные байтовые массивы любой длины. Вы можете использовать длинный URL-адрес, как вы указали в своем вопросе.

Они упоминают здесь, что ключи байтовые массивы ... https://code.google.com/p/leveldb/

В качестве теста, я вставил некоторые документы с ключами, которые были длиной в миллион символов. Все прошло отлично.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – johnvey

+3

Я уточню свой ответ. Это позволяет ключам быть очень длинными. –

+0

@BrandonJoyce Можете ли вы привести свой ответ, пожалуйста? Я бы хотел больше узнать. –

0

Теоретического предела для длины ключа нет, но БД может быть не очень эффективной с длинными ключами и короткими записями. В верхней части файлов SST есть индекс, содержащий ключи и смещения в файле, а ключи этих блоков индексов разбиты на двоичные, чтобы найти строки.

Просто подумайте - вы можете захотеть сделать некоторую санитацию на URL-адресах, прежде чем использовать их в качестве сырых ключей. например, canonicalize доменное имя и случай протокола, канонизировать порядок параметров запроса и т. д.

Смежные вопросы