У меня есть миллиарды записей (ключей/значений), которые я хочу компактно хранить в памяти, и единственная операция, которую мне нужно поддерживать, - это поиск значения на его ключ. Ключи и значения являются маленькими строками. Самое главное, как сжатый структура данных; он должен использовать внутреннюю структуру ключей более глубоко, чем простой ассоциативный массив. Например, сопоставление клавиш «apple», «apply» и «apron» со значениями «1», «2» и «3» должно каким-то образом сжиматься. Какую структуру данных я ищу?Структура данных в памяти для компактного отображения миллиардов ключей словаря для значений
ответ
Похоже, что вы хотите trie - он описывает описанную вами «компрессию», сохраняя каждый префикс только один раз.
Я предполагаю, что у вас достаточно памяти для хранения «миллиардов» ключей, и, конечно же, вам нужно быть в 64-битной системе, чтобы иметь возможность даже адресовать столько предметов в первую очередь.
Вы можете попробовать Trie. Он формирует древовидную структуру из самих ключевых строк. Не было бы пустых мест (как в хэш-карте).
Даже если данные, которые вы обрабатываете, являются маленькими строками, вы действительно уверены, что вам нужно столько данных в памяти? Это может легко поразить гигабайты памяти, и большинство данных, вероятно, не будут так часто запрашиваться.
Тонкой настройки базы данных может быть достаточно для ваших нужд.
- 1. Структура данных для хранения миллиардов целых чисел
- 2. использование для цикла для отображения словаря ключей и значений
- 3. Структура данных словаря в языке логотипа (хранилище ключей/значений)
- 4. Структура данных, используемая для словаря C# .KeyCollection
- 5. Структурная структура данных для словаря
- 6. Различных значений списка для словаря ключей
- 7. Использование словаря для отображения значений в VIEW
- 8. Список значений для словаря
- 9. Структура памяти для ссылочных и значений типов
- 10. Структура данных для массива записей словаря
- 11. Лучшая структура данных для реализации словаря?
- 12. Структура данных для реализации обратной функциональности словаря
- 13. Эффективная структура данных для ключей Zobrist
- 14. Наиболее подходящее хранилище данных для миллиардов индексов
- 15. Пересечение словаря на основе ключей и значений
- 16. Проверка ключей и значений словаря
- 17. Структура данных для распознавания значений повторения
- 18. Структура данных для неблокирующей агрегации значений Thread?
- 19. Mongoose/Монго структура для отображения данных
- 20. RESTful URL-структура для отображения локальных данных
- 21. Какая лучшая структура данных для отображения строк в значения?
- 22. F # - CSV для двух ключей словаря
- 23. Тип безопасности для ключей словаря?
- 24. Какая структура данных наиболее подходит для реализации Словаря?
- 25. структура данных для данных с несколькими ключами?
- 26. Изменение нескольких ключей словаря словарь отображения
- 27. Динамическое выделение памяти для словаря
- 28. Структура отображения массива неправильных значений
- 29. Зацикливание словаря для отображения ключа и значений в порядке значения
- 30. Структура данных для «карты ограниченной памяти»