在mysql数据库中存储跟踪应用程序的GPS数据的最佳实践
作者:互联网
我有一个GPS跟踪应用程序的数据模型问题.当有人使用我们的应用程序时,它将每5秒节省一次纬度,经度,当前速度,时间戳和burned_calories.当锻炼完成时,锻炼的平均速度,总时间/距离和燃烧的卡路里将存储在数据库中.到现在为止还挺好..
我们想要的是还存储每5秒保存一次的数据,因此我们稍后可以利用它来绘制锻炼的图形/图表.
我们应该如何将这些数据存储在数据库中?如果有人跑了一个小时,一次锻炼可以包含720行.也许是一行中的序列化/ gz压缩数据数组.我知道这是不好的做法..
关系型/多对多模型将被撤消?我知道MySQL可以轻松处理大量数据,但我们正在谈论720 *训练
每周两次* 7000位用户=每周超过1000万行.
(当然,我们只能存储每10秒钟的数据,将行数减半,或者每20秒减半……但是随着时间的推移,图形的准确度会下降,但仍会是大量的数据)
你会怎么做?
提前感谢您的意见!
解决方法:
只是一些想法:
>量化lat / lon数据.我相信由于技术原因,数据很可能已经量化,因此如果您可以检测到该量化,则可以使用它.这里的想法是将双数转换为合理的整数.在最坏的情况下,您可以量化为精确的双数提供,这意味着使用64位整数,但我非常怀疑您的数据是否接近该分辨率.也许一个大约一米边长的简单网格对你来说足够了吗?
>计算差异.大多数数字在绝对值方面都相当大,但也非常接近(除非你的成员跑遍世界的一半……).所以这将导致相当小的数字.此外,只要人们以恒定的速度奔向恒定的方向,你就会经常看到相同的差异.在步骤1中,您的空间网格越粗糙,您就越有可能在此获得完全相同的差异.
>为这些差异计算Huffman code.您可以尝试单独编码lat和long运动,或者在其叶子上计算具有2d位移矢量的单个代码.尝试两者并比较结果.
>将结果存储在BLOB中,与字典一起解码您的霍夫曼代码,以及初始位置,以便您可以将数据返回到绝对坐标.
结果应该是每个数据集的一小组数据,您可以从中检索和解压缩整个数据集.从数据库中检索单个部分是不可能的,但听起来你不需要那样做.
通过gzip进行霍夫曼编码的好处是您不必人为地引入中间字节流.直接编码您遇到的实际差异及其各自的属性应该可以更好地工作.
标签:mysql,database,mapping,datamodel 来源: https://codeday.me/bug/20190529/1180962.html