繁体   English   中英

什么时候BIG,足够大的数据库?

[英]When is BIG, big enough for a database?

我正在开发一个以性能为核心的Java应用程序。 我有一个大约40,000个“最终”对象的列表,即我有一个40,000个向量的初始化输入数据。 在整个程序运行期间,此数据保持不变。

我总是针对单个ID属性执行查找以检索正确的向量。 目前我在1000个向量的子样本上使用HashMap ,但我不确定它是否会扩展到生产。

什么时候BIG,实际上足够大,可以使用DB? 还有一件事,SQLite DB是一个可行的选择,因为不涉及并发,所以我猜数据库使用的“阈值”可能更低。

你在问一个有40,000个条目的HashMap是否HashMap 答案是肯定的 - 除非你真的没有足够的记忆,否则这应该是绝对正确的。 如果您正在编写性能敏感的应用程序,那么在运行应用程序的计算机中放入大量快速内存可能是提高性能的有效方法。

每个HashMap条目都不会有很多开销,所以如果你有足够的空间将对象本身存储在内存中,那么地图的开销不太可能导致问题。

你有什么理由不能用合理数量的数据测试这个吗?

如果你真的没有比以下更多的要求:

  • 启动时读取数据
  • 通过单个ID将数据放入映射中(不需要连接,针对不同字段的查询,子字符串匹配等)
  • 从地图中获取数据

...然后使用一个完整的数据库将是一个巨大的过度杀伤,IMO。

只要你在程序开头的内存中加载数据集并将其保存在内存中并且没有任何复杂的查询,某种序列化/反序列化似乎比完整的数据库更可行。 。

您可以启动一个只有100(或更少)的数据库。 当数据量足够大以存储在数据库中时,没有一般规则。 如果你认为你应该更好地将这些数据存储在数据库中,那就更好了,如果这会给你带来任何利润(性能提升,编程更容易,用户选择更灵活)。

当收益大于实施成本时,将其放入数据库中。

Collection与数据库没有设置大小。 它取决于您想要对数据做什么。 尺寸不太重要。

您可以拥有包含十亿条目的地图。

没有“足够大的数据库”这样的东西。 问题是使用数据库是否有足够的优势来克服成本。

话虽如此,40,000不是'大';-)除非对象很大或你有复杂的查询要求,我会从内存实现开始。 但是,如果您希望随着时间的推移扩大此数字,那么从一开始就使用数据库可能会更好。

您可能需要考虑的一个选项是Oracle Berkeley DB Java版库。 它是一个简单的JAR文件,可以读取/写入持久存储的数据。 由于它占地面积小,易于使用,因此可用于在小型到大型数据集上运行的应用程序。 它被设计为链接到应用程序,因此它是嵌入式的,不需要复杂的客户端/服务器安装或协议栈。

更好的是它具有极高的可扩展性(如果最终得到的数据集超出预期,效果很好),速度非常快,并且同时支持Java Collections API和Direct Persistence Layer API(类似POJO)。 因此,您可以将它与Java Collections无缝地结合使用。

Berkeley DB Java Edition专为Java应用程序开发人员而设计。 它的设计易于使用,在所需资源方面重量轻,但速度快,可扩展且可靠。

您可以在此处找到有关Oracle Berkeley DB Java Edition的更多信息

问候,

戴夫

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM