如何在SQL Server列中高效地存储热图数据

本文关键字:存储 数据 高效 SQL Server | 更新日期: 2023-09-27 18:21:53

我正在使用javascript插件heatmap.js(http://www.patrick-wied.at/static/heatmapjs/)以跟踪鼠标移动和单击。此插件生成大量数据

"data":[{"x":"17","y":"-8","radius":8,"value":1},
        {"x":"23","y":"-47","radius":8,"value":1},...
       ]

大约10000点/20秒的活动。

在SQL server中存储这些数据最有效的方法是什么。

目前我使用varchar(max)来存储每10000个点。但我想看看是否有更有效的方法来压缩和存储这些信息。

如何在SQL Server列中高效地存储热图数据

您可以创建一个具有与JSON节点的模式匹配的模式的表——在这种情况下,它看起来像是具有x、y、radius和value列。这将通过属性头(x、y、半径和值)和分隔符({、:、"、}和,)的长度来减少存储,并且将值存储为数字而不是字符串将需要更少的磁盘空间

另一种方法是使用像zlib这样的压缩库来压缩和解压缩原始数据,然后将其存储为二进制blob。大多数压缩算法都可以有效地消除流中重复标记(相同的属性头)的开销。