Есть ли в ObjectBox расширенное кэширование? - PullRequest
0 голосов
/ 24 сентября 2019

Вот пример использования: нам нужно ограничить объем используемой оперативной памяти до N Мб, а потребление памяти объектами намного выше (скажем, 10 Н Мб).Мы должны быть в состоянии найти значение String для ключа String (map) в качестве простого примера.

Так что мы бы предпочли уважать наши ограничения памяти и потерять производительность, и мы предполагаем некоторое расширенное кэшированиеследует использовать стратегию.

Поддерживает ли Object некоторое расширенное кэширование?Можем ли мы явно установить лимит используемой оперативной памяти и продолжать работать?

PS.В качестве некоторых альтернатив мы рассматриваем использование более компактных структур данных (например, trie), принимая во внимание, что мы знаем природу наших данных.

1 Ответ

0 голосов
/ 24 сентября 2019

Приятной особенностью ObjectBox является то, что он не выполняет кэширование - он делегирует это операционной системе.ОС обычно очень хорошо знает, как оптимизировать память между процессами в соответствии с их схемами использования.

Базовая технология называется отображением памяти (например, mmap в Linux).Упрощенно, это делает данные на диске доступными в оперативной памяти и, таким образом, служит отличным кэшем.Управление полностью зависит от ОС, которую вы можете рассматривать как «расширенный кеш», чтобы вернуться к вашему вопросу.Короче говоря, он автоматически использует больше памяти, если доступно.И он может работать, используя очень мало памяти.Таким образом, нет необходимости ограничивать кэш.

К этому следует добавить тот факт, что сам ObjectBox потребляет очень мало ресурсов (ЦП и ОЗУ) и, таким образом, оставляет больше оперативной памяти для кэширования по сравнению с традиционными базами данных.

Относительно попыток: если вы в большой степени полагаетесь на хранение / поиск строк, это допустимая альтернатива, если использование дискового пространства является проблемой.Как всегда, это зависит от вашего варианта использования.

...