构建缺少表字段的流数据以改善文件大小的最佳方法



我目前有一个服务,每秒以JSON格式提供实时数据,并将其保存到SQL服务器表中。

通常,该表大约有 20 个 varchar、int 和 decimal 字段,每行/记录是每秒的单个时间戳。JSON 和 INSERT 查询都包含每个时间戳上所有字段的数据。

为了加快响应时间,减少传输的字节数,以后的JSON只会包含对数据的更改(即该值与之前的值不同),因此许多字段将不包含在JSON中。

我的问题是将其存储在SQL中以从数据减少中受益的最佳方法是什么 - 有更好的方法可以做到这一点吗?如果我对 NULL 条目使用相同的表结构,那么根据字段类型,这肯定是相同的字节大小吗?

编辑:新的流媒体格式将意味着以下内容

  • 每个时间帧仍将具有数据值,但如果与以前的值没有数据更改,则它们不会在 JSON 数组中。

  • 我正在考虑节省磁盘空间。我很乐意在需要时在SQL之外进行后处理来重建数据,以获取任何特定时间戳的"完整"数据。

  • 可能只存储带有时间戳的完整 JSON 响应字符串可能会更好?

不熟悉 JSON 和整个想法,但存储可能的 NULL 的最佳方法是将固定大小的字段(INT、BIT、SMALL INT DECIMAL、FLOAT 等)放在表的开头,将可变大小的字段(VARCHAR、NVARCHAR、XML、JSON 等)放在表的末尾。

第二个建议是在 SQL 2016 中使用临时表更新。这将以最好的方式存储数据(需要研究),但将大大简化数据的提取和处理。

最新更新