【发布时间】:2012-03-12 16:44:58
【问题描述】:
我经常在我的 C++ 代码中使用 std::map 或 tr1::hashed_maps。我有一个即将到来的项目,我通常会默认使用此类构造,但是在这个项目中,我要求此类地图是非易失性的。 IE。在应用程序终止时(安全关闭或意外终止,例如断电),地图数据应安全存储在磁盘上,并在后续应用程序执行时恢复。请注意,这并不要求存储断电前的每一位数据,只需在几秒钟前存储即可。
要求仍然是应用程序必须是高性能的,在对地图的访问和存储方面。显然“高性能”是主观的,但每秒会有数百万次加载/存储到地图中。
这让我“猜测”我应该使用 SQL 数据库,但是我对数据库缺乏经验,并且担心从简单的 C++ 容器迁移到完整的 SQL 基础架构会出现相当大的性能下降。 SQL“缓存”结果是否会以某种方式减轻性能影响?
或者,一个简单的答案可能只是频繁(比如每 10-30 秒)将映射的副本写入(序列化)到磁盘。根据地图的大小,这将很大(至少数百万个条目),这可能是不明智的。
有什么推荐吗?
谢谢!
【问题讨论】:
-
你可以试试placement new和mmap。 [stackoverflow.com/questions/2650034/…[1]:stackoverflow.com/questions/2650034/…
标签: c++ database stl map backup