ObjectBox 有高级缓存吗?

Does ObjectBox have advanced caching?

这里是用例:我们需要将 RAM 使用量限制为 N Mb,而对象内存消耗要高得多(比如 10N Mb)。作为简单示例,我们应该能够找到 String 键(映射)的 String 值。

所以我们更愿意尊重我们的内存限制和宽松的性能,我们假设应该使用一些高级缓存策略。

对象是否支持一些高级缓存?我们可以明确设置使用的 RAM 限制并仍然有效吗?

PS。作为一些替代方案,考虑到我们知道数据的性质,我们考虑使用更紧凑的数据结构(例如 trie)。

ObjectBox 的一个优点是它不进行缓存 - 它将缓存委托给操作系统。 OS 通常非常了解如何根据进程的使用模式优化进程之间的内存。

底层技术称为内存映射(例如 mmap on Linux)。简而言之,它使磁盘上的数据在 RAM 中可用,从而充当出色的缓存。管理完全取决于 OS,您可以将其视为 "advanced cache" 来回答您的问题。简而言之,如果可用,它会自动使用更多内存。而且它可以使用很少的内存运行。因此,不需要限制缓存。

除此之外,ObjectBox 本身消耗的资源非常少(CPU & RAM),因此与传统数据库相比,留下更多的 RAM 用于缓存。

关于尝试:如果您严重依赖字符串 storage/look up,如果 space 在磁盘上使用是一个问题,那么这是一个有效的替代方案。与往常一样,这取决于您的用例。