这些是当前格式的缺陷,不是观点。每条都说明了它会破坏什么。
| # | 风险 | 后果 |
|---|---|---|
| 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。 |
本页为英文原文的简体中文翻译;如有出入,以英文原文为准。