gpt4 book ai didi

java - 何时访问数据库而不是在列表中搜索对象

转载 作者:搜寻专家 更新时间:2023-10-30 22:11:31 24 4
gpt4 key购买 nike

如果我们使用 MongoDB (NoSQL) 或 MySQL (Relational DB) 来检索对象并且我们想要搜索特定元素(where 子句)但我们已经有一个内存列表(LinkedList、ArrayList 或其他)包含一些对象,用于缓存或出于任何其他原因。

是否有方程式/库可以“建议”何时使用内存中结构进行检索而不是查询数据库更便宜? (考虑到,例如,内存列表的大小?)

最佳答案

查询内存缓存总是更便宜。

唯一的异常(exception)是,如果您构建缓存时搜索它的效率非常低(例如,线性搜索)。但只要它是基于散列的结构,它最坏的情况下会做数据库需要做的事情,但没有网络开销。在哈希表中查找内容基本上是免费的。

更大的问题是您的缓存是否使用了太多内存以致于饿死应用程序的其余部分。您需要一个弱 HashMap 或类似映射来避免这种情况。如果这是由某种 ORM 生成的缓存,那么它已经被弱引用了。

关于java - 何时访问数据库而不是在列表中搜索对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com