我想实现一个只需要处理二进制数据的快速数据库替代方案。 为了指定,我想要一些接近数据库的东西,即使在执行期间强制终止(任务管理器)的情况下也会安全地存储,同时也可以直接从C ++中的内存访问。就像镜像到硬盘的结构向量一样。它应该能够处理数十万次读取访问和每秒至少1000次写入访问。在强制终止的情况下,最多可以丢失最后一个命令。它不需要支持多线程,数据库文件只能由程序的单个实例访问。只需要在Windows上运行。这些是我到目前为止所考虑的解决方案:
SQL数据库
内存映射文件
*基本上,一个包装类只暴露每行的向量读/写功能或允许直接写入内存,但依赖于调用者来通知更改,所有读取都是从内存中的副本完成的,所有写操作在每个命令的基础上完成内存中的副本和文件本身
此外,是否可以在不刷新的情况下写入文件的不同部分,然后立即刷新所有更改,同时保证文件将完全写入或根本不写入,即使在写入期间强制终止的情况下也是如此?我能想到的只有以下工作流程:
启动时复制目标文件,然后为每组数据复制: 将所有更改写入重复 - >通过替换原件重复冲洗
但是,我觉得这对于大文件来说是一个可怕的硬盘空间浪费。
提前感谢任何输入!