这听起来可能很有趣(或者可能很奇怪),我只是想上传一个非常大的数据库到内存中(这可以从12 GB到16 GB).The文件每天都会在内存中上传,随后将在那一天使用(以此类推)。在这种情况下,我可以使用STL map吗?在64位机器上,STL map能很好地处理这种数据大小吗(如果有人有解决这种问题的经验的话).Also the no。对该STL映射的查询数约为每秒1000个。如果有人有解决这类问题的经验,或者我应该使用其他数据结构(任何可以可靠地做到这一点的第三方工具),请让我知道。
我的主要问题是,我想节省我的I/O时间在realtime.But我也有mysql作为我的数据库,我需要持久化这个data.Is,如果我使用sqlite作为“在内存”数据库,然后我保存在mysql (在磁盘上)的数据可以吗?我认为MySQL也提供了"MySQL集群“的类似东西,但我不知道它在实践中有多有用。
发布于 2011-01-28 21:06:35
我不认为这是个好主意。要有效地管理如此大量的数据,您需要进行许多优化。std::map可能不会针对您的场景进行优化,此外,我担心您可以编写的处理它的算法将不会尽可能高效。
我建议你为了你的目的而使用数据库。如果你的瓶颈是磁盘I/O,那么配置你的数据库在ram上缓存更多的信息(如果你有足够的内存,甚至16 got )。
发布于 2011-01-28 20:59:14
我个人会使用unordered_map,它提供O(1)插入、查找等。然而,真正的问题是其中的项的数量,而不是它们的实际大小。
发布于 2011-01-28 21:00:09
我建议你考虑一下进程中的数据库,比如www.sqlite.org。
https://stackoverflow.com/questions/4828446
复制相似问题