该应用程序将连续(大约每秒)收集用户的位置并将其存储。
该数据是结构化的。在关系数据库中,它将存储为:
| user | timestamp | latitude | longitude |
但是,数据太多。每个用户每天将有60×60×24 = 86,400条记录。即使有1000个用户,这也意味着每天86,400,000条记录。
每天不仅有86,400,000条记录。因为这些记录将被处理,并且它们的处理后的版本也将被存储。因此,将该数字乘以大约2。
我打算如何使用数据
本质上,我计划对位置数据进行更粗粒度的处理,以便于使用。那是:
- 对接收到的带有时间戳的数据进行排序。
- 依次浏览此列表,确定位置是否发生了重大变化(通过查看经度和纬度发生了多少变化)
- 将不重要的位置更改表示为输出中的单个条目(因此,输出是位置数据的粗粒度版本)。
- 通过要求更大的纬度和经度更改以进行重大更改,对输出进行迭代处理。因此,从先前输出产生的输出将更加粗糙。
- 根据需要重复整个过程。
- 汇总一系列分辨率并将其发送给用户。另外,存储数据的所有分辨率以供以后使用。
我应该用什么来存储这些数据?我应该使用关系数据库还是NoSQL解决方案?设计此应用程序时,我还应考虑哪些其他事项?