数据结构内存映射或数据库?(数以百万计的物品)

本文关键字:数以百万计 内存 映射 数据库 数据结构 | 更新日期: 2023-09-27 18:04:56

我有一个数据结构,它本质上是对一些计算的查找,这些计算需要很长时间(100ms)来计算,并且需要一遍又一遍地使用。我大约有6,000,000个这样的计算,并希望在应用程序启动时将它们加载到内存中(我会预先计算它们)。

问题是我可以将其存储为内存映射文件(字典的东西)还是我应该将其存储在数据库中,然后在程序启动时将其加载到ram中?二进制序列化有多快?

我有什么选择?

数据结构内存映射或数据库?(数以百万计的物品)

二进制序列化是快速的,特别是如果你只需要加载它一次。从数据库加载的速度实际上取决于数据的结构。使用数据库的优点是易于管理。如果您希望轻松地管理、更改、跟踪更改或在多个客户端中使用这些值,那么DB将是您的最佳选择。如果它们永远不会改变,一个文件就足够了。

你必须自己尝试不同的方法和衡量。没有其他方法可以解决性能问题。请注意,您需要在头脑中有一些具体的目标(例如加载1秒/查找1毫秒)。

选项:

  • 在启动时计算所有值并存储在一些查找(预分配的数组/字典)
  • 按需计算并存储在一些查找(预分配的数组/字典)
  • 提前计算并加载未压缩的数据(请注意,您拥有的数据量很大,将花费1-3秒的时间来加载)
  • 提前计算,按需加载
  • 提前计算并加载压缩数据

我建议尝试在加载时计算所有的值,看看它是否足够快-最可能的最简单的方法。