我想实现一个快速的数据库替代,只需要处理二进制数据。 为了指定,我想要一个靠近数据库的东西,即使在执行过程中强制终止(任务pipe理器)的情况下,也可以安全地存储数据库,同时也可以直接从C ++的内存访问。 就像镜像到硬盘的结构向量一样。 它应该能够处理数十万次读取访问,并且每秒至less可以访问1000次写入访问。 在强制终止的情况下,最多可以丢失最后一个命令。 它不需要支持multithreading,数据库文件只能被程序的一个实例访问。 只需要在Windows上运行。 这些是我迄今为止想到的解决scheme:
SQL数据库
内存映射文件
*基本上,一个只向每个行公开每个向量的读/写function的包装类允许直接写入内存,但是依靠调用者来通知变化,所有的读取都是从内存中的拷贝完成的,所有的写操作都是为了内存中的副本以及每个命令的文件本身
另外,是否可以在不刷新的情况下写入文件的不同部分,然后一次刷新所有更改,以保证文件将完全写入或完全不写入,即使在写入期间强制终止的情况下也是如此。 我能想到的是以下工作stream程:
在启动时复制目标文件,然后为每一组数据:写入所有更改复制 – >刷新通过replace原来的重复
但是,我觉得这将是一个可怕的大文件的硬盘空间的浪费。
预先感谢您的任何意见!