问:
我知道所有这些废话都没有一个完美的答案。我希望有一些经验丰富的见解来缩小可能的口味,一些避免转换噩梦的一般策略,以及减少我在 CPU/磁盘上的数据存储占用的任何想法(大字符串操作既昂贵又乏味)。我在受限制的硬件上,对 XML标准有些陌生。我可以很好地读写它(通常用于网站),从来没有真正作为数据集封装。
我已经考虑了这几周,我有 92.3% 的把握 XML 文件是我理想的存储目标。我正在记录各种仪器读数/分析,并一次保存几个月。尽管我确实担心我的数据收集节点的硬件资源有限(过多的字符串操作会变慢,512kB RAM,3.2GB 闪存)。
我正在尝试找到一个格式良好的 ML,其占用空间最小,可以处理RAW数字数据类型。我不需要完全兼容的文件,但我正在寻找最合适的解决方案,所以不要偏离正确的形式太远
主要数据模型因素
(以及为什么我认为 XML 比打包二进制文件、平面文本甚至 CSV 更合适)
- 多达 8 个不同的数据点(不同的测量值、品牌和传感器类型)
- 各种原始数据类型(REAL32、DINT、DWORD、BYTE、STRING(任意长)
- 数据集需要能够在每个文件中保留绝对时间戳(我有一个充满 100 个最终将合并的 XML 的目录)
- 数据点配置/数量可能会发生变化,因此我需要能够以最少的冗长/混乱记录对架构的更改。
性能限制/注意事项
- 我通常应该只从嵌入式平台写出 XML,因此可读性不是最重要的,尽管如果我确实需要处理任何类型的查询,即使在最干净的情况下,折腾和解析 3.0GB 的文本也不会很有趣。
- 我相信间歇性的 DATE-TIME 节点将帮助我索引这样的查询
- 过度压缩数据实际上会在导出时成为一个问题,因为这些成为更多的计算来解压缩我的懒惰。
- 过于冗长的 XML 只能给我 111 天的存储时间。我希望能达到 180 天或更长时间。所以我确实需要更好地压缩文本。
- 卸载数据后有 3 个潜在目标。我不想因过于复杂而陷入转换瓶颈/错误。
- Microsoft Excel(他不必完全理解它,但我们不想花费数小时手动将不兼容的模式类型/映射导入 2D 网格。
- RRD 后端服务器(我将能够运行所需的任何转换,但希望我已经接近 RRD 想要的
- 一些可爱的 Javascript/Android 工具。尽管我希望这些能够执行自定义数据类型处理,但格式良好的 XML 将使开发过程中的检索和解析变得更简单。