我正在尝试实现一种文件存储机制,该机制在单个文件中保存大量可变大小的记录,并保证记录集始终可以恢复到一致状态,即使系统在一个文件中失败也是如此。硬件水平。
到目前为止,我提出的每个方案都是按顺序编写数据的。某些数据将附加到每条记录的末尾,以确认写入成功。但是,如果数据在刷新时不必按顺序写入磁盘,则可以在内容数据之前写入确认数据。
有两种明显的方法,但两者都是不可取的:
我在Windows上使用C#(32位和64位)和.Net 4.0的内存映射文件实现
答案 0 :(得分:1)
这是C#的特定操作系统级别太低。尝试使用C语言中的Windows API,并仔细阅读API规范。
答案 1 :(得分:0)
您是否尝试在基础文件流上使用FileOptions.WriteThrough?这可能会有所帮助,因为它会禁用缓冲。其他想法是将包含确认的单独文件保留为最后写入的偏移量,如果它与您的文件大小不匹配(例如由于断电),您可以简单地截断它做那么大小