编辑:请注意,由于硬盘驱动器实际写入数据的方式,此列表中的任何方案都不能可靠地工作。不要使用它们。只需使用数据库。SQLite 是一个很好的简单的。
在磁盘上存储 UTF-8 字符串元组的最低技术但最可靠的方法是什么?为了可靠性,存储应该是仅附加的。
作为我正在试验的文档存储系统的一部分,我必须将 UTF-8 元组数据存储在磁盘上。显然,对于完整的实施,我想使用 Amazon S3、Project Voldemort 或 CouchDB 之类的东西。
然而,目前,我正在试验,甚至还没有坚定地选择一种编程语言。我一直在使用 CSV,但是当您尝试存储古怪的 unicode 和意外空白(例如垂直制表符)时,CSV 往往会变得脆弱。
我可以使用 XML 或 JSON 进行存储,但它们不能很好地处理仅附加文件。到目前为止,我最好的猜测是一种相当特殊的格式,其中每个字符串前面都有一个 4 字节有符号整数,表示它包含的字节数,整数值 -1 表示这个元组是完整的 - 相当于 CSV 换行符. 头痛的主要来源是必须决定磁盘上整数的字节顺序。
编辑:实际上,这行不通。如果程序在写入字符串时退出,则数据将不可撤销地错位。需要某种带外信令来确保在中止的元组之后可以重新获得对齐。
编辑 2:事实证明,在附加到文本文件时保证原子性是可能的,但解析器非常重要。现在写说解析器。
编辑 3:您可以在http://github.com/MetalBeetle/Fruitbat/tree/master/src/com/metalbeetle/fruitbat/atrio/查看最终结果。