Задачка на сообразительность...

Jan 02, 2019 19:24

Я понимаю, что меня мало кто читает ( Read more... )

Leave a comment

Comments 7

igorla January 3 2019, 04:12:32 UTC
Честно говоря, не придумал. Разве что есть еще какая-то инфа по поводу самих записей в базе. Например, fixed size record ;)

Reply

febb January 3 2019, 05:56:24 UTC
Я плохо обьяснил :)
Я имел в виду hash table.
Скажем в C++ нужно для поиска номера записи
по значению этого ID. Эту таблицу я назвал индексом.
Обычно делают тупое соответсвие ID-->RecordNumber
и всё грузят в hash table (или binary search map - не важно)
Получается 200GB и полный облом. :)
Простой вопрос - как уменьшить ее к примеру в 100 тысяч раз? :)
Или в миллион? :)

Reply

febb January 3 2019, 06:06:44 UTC
Fixed size - не важно.
Нужно по значению ключа найти номер записи.
А какой алгоритм поиска дальше этой записи - это отдельный вопрос.
Fixed size - к примеру, да, меньше проблем.

Reply

igorla January 3 2019, 15:52:10 UTC
Нет, не придумал.

Скажем, 20 байт для record ID - слишком много, для 2^32 records хватит и 4 байт. Но все равно надо хранить record address, который тоже несколько байтов.

Разве что делать фрагментацию индекса, хранить его на диске по блокам, и загружать в память только релевантный блок.

Reply


lau_de January 4 2019, 16:13:05 UTC
думаю когда увижу решение то пойму условие задачи :)

Reply

febb January 10 2019, 15:57:28 UTC

Leave a comment

Up