Как создать, обновить и прочитать основополагающее дерево, которое не помещается в память? - PullRequest
1 голос
/ 24 сентября 2019

Я заинтересован в использовании радикального дерева (или Patricia trie) для хранения хеша / dict / array strings -> values.Однако я обнаружил, что у меня слишком много строк, чтобы уместиться в памяти.

Я нашел статью Algolia о том, как они решили эту проблему с помощью своего поискового индекса , и они говорят о том, что я пытаюсь сделать: сбросить основную ветку на диск в качестве каждой ветвипостроен и читает только те ветки, которые вам нужны.

Однако они не упоминают, как они это делают.Единственный способ сохранить основополагающее дерево - это либо полный (сериализованный) объект, либо хеш / массив как простое хранилище ключей / значений.

Например, используя хранилище ключей / значений

SET smile:  [...values...]
SET smiled: [...values...]
SET smiles:  [...values...]
SET smiling: [...values...]

Затем выполняется сканирование префикса, чтобы извлечь ключи / значения, которые MATCH smil*.Тем не менее, этот вид теряет компактные преимущества радиального дерева, а также потребует реконструкции по крайней мере части радиального дерева под нагрузкой.

...