我正在尝试实现一种文件存储机制,该机制在单个文件中保存许多大小可变的记录,并保证即使系统在硬件级别出现故障,记录集也始终可以恢复到一致的状态。
到目前为止,我提出的每个方案都以顺序写入数据为中心。一些数据将附加到每条记录的末尾,以确认写入成功。但是,如果数据在刷新时不一定按顺序写入磁盘,那么确认数据可以在内容数据之前写入。
有两种明显的方法可以解决这个问题,但都是不可取的:
- 刷新内容,然后写入确认并刷新。添加额外的刷新可能会降低性能。
- 在确认中包含校验和(需要阅读内容以确认其有效)。
我在 Windows(32 位和 64 位)和 .Net 4.0 的内存映射文件实现上使用 C#