我有一个持久性字典(字符串-> 字符串映射),我将其作为日志文件写入 NAND 文件系统。我的二进制格式是:
1 byte - key size
<key size> bytes - key without the terminating nul-character
2 bytes - value size and flags
<value size> bytes - value without terminating nul-character
通常,字典中的每次更改我都会写 20 到 100 个字节。但是由于这是在 NAND 上保留的,因此这种设计会导致每次分配一个新页面,从而在每次迭代中将我的可用 NAND 空间减少 2k。
我不能缓存写入,因为我不能丢失这些数据。它是销售终端的运行点,保存交易数据。我的算法有效地写入和调用刷新,所以这不会发生。
现在,是否有一个事实上的或标准的算法来解决这个问题?我查看了目标平台上的断电触发器,但 SDK 建议使用 NAND 作为持久层。