【发布时间】:2011-07-13 05:45:32
【问题描述】:
我在金融行业工作。我们希望推出数据库命中以进行数据处理。这是非常昂贵的。所以我们计划采用按需缓存逻辑。 [运行时插入和运行时查找]
是否有人为超过 1000 万条记录实施缓存逻辑?每条记录大约 160 - 200 字节。
我用不同的方法面临以下缺点。
- 无法使用 stl std::map 来实现密钥库缓存注册表。 在 200000 条记录之后插入和查找非常慢。
- 共享内存或内存映射文件是缓存数据的一种开销, 因为这些数据不会跨进程共享
- 可以使用 sqlite3 内存和平面文件应用程序数据库 值得。但在 2-3 百万条记录之后,它的查找速度也很慢。
- 进程内存可能对其自身的内核内存消耗有一些限制。我的 假设是 32 位机器上 2 gig 和 64 位机器上 4 gig。
如果您遇到此问题并通过任何方式解决,请给我一些建议。
谢谢
【问题讨论】:
-
数据库索引通常通过 BTrees 实现,而不是 std::map(R&B 二叉树)。 BTrees 对于你所说的尺度更有效。
-
您可以在进程之间使用共享内存和内存映射文件。至少在linux上。您使用的是什么操作系统?
-
这是一个键值对存储还是更复杂的东西?
-
std::unordered_map怎么样?如果您的密钥可以很好地散列,则预期的查找时间为 O(1)。 -
@YI_H ....我们正在使用solaris平台。它只是一个键值存储。只是为了存储和检索数据。从存储中检索数据后,我们会进行复杂的计算。
标签: c++