MAD Designer iconMAD

6. 第二读取器必须处理的风险

这些是当前格式的缺陷,不是观点。每条都说明了它会破坏什么。

# 风险 后果
H1 没有魔数。 文件仅靠扩展名识别(MADocument.m:459)。 Windows 没有有意义的 .mad 关联,重命名后的文件无法识别。见 §7。
H2 WAL 和 SHM 一起发布。 analyitics-wal 为 313 KB,而数据库为 516 KB。 忽略 WAL 的读取器会读到过期数据。CLI 必须要么重放 WAL,要么在归档前要求执行检查点。
H3 内部是 Core Data 架构。 把每个读取器绑定到 Core Data,而 Apple 平台之外没有 Core Data。在解决这一点之前,不能称该格式为可移植。
H4 隐藏文件被跳过(MADArchiveManager.m:111)。 未来任何隐藏成员都会被静默地从归档中丢弃。
H5 analyitics 拼写错误,在磁盘上。 不破坏现有文档就无法纠正。
H6 version 在写入器中是 double,在示例中是整数。 使用方必须同时接受两者。
H7 sqlite 编译标志未固定。 build_sqlite3.sh 声明了 20 个宏定义;MADSqlite3 目标只应用了一个。 写入 .maddb 的引擎使用 4096 字节的页面大小,而脚本要求 8192 字节,并且缺少 FTS5 和 STAT4。页面大小会写入文件头,因此格式是由意外定义的。现已修复:宏定义位于 Compressor/sqlite3.xcconfig,目标和脚本都读取它。此后写入的缓存具有 8192 字节的页面;较旧的缓存仍可打开,因为 SQLite 从文件头读取页面大小。见 project/LIBRARIES.md §4。

本页为英文原文的简体中文翻译;如有出入,以英文原文为准。