我正在开发一个由node.js中的服务器组成的应用程序,基本上它是一个侦听传入连接的套接字。性能套接字nodejs + mysql
到达我的服务器的数据来自GPS跟踪器(约30个),每个分钟每分钟发送5条记录,因此在一分钟内将有5*30 = 150
记录,在一小时内我将有150*60 = 9000
记录,日9000*24 =216000
和一个月216000*30 = 6.480.000
万条记录。
除了纬度和经度,我必须在数据库(MySql)中存储每个跟踪器的累积距离。每个跟踪器发送到服务器位置,每次接收数据时我都必须计算两个点之间的kms(当数据量达到数百万条记录时,减少对数据库的处理)。
所以问题是,总结公里和存储它的正确方法是什么?
我想总结整个数据库不是一个解决方案,因为在数百万条记录中会很慢。也许,每次我必须存储一个新点(每分钟150次),可以在数据库中选择最后一个记录,然后将累积公里和新距离计算在一起?
您可以使用内存数据存储,如[Redis](http://redis.io)来存储累积距离。这是一个关键 - >值存储器,因此您可以使用跟踪器ID作为密钥,然后使用add方法将新距离添加到运行总计。 –
同意@DanielWaghorn我们在工作中使用Redis和MongoDB的组合,并且每天处理500k条记录。 Redis是一个很好的解决方案,用于保存键/值数据,否则这些数据在数据库查询中会很昂贵。在你的情况下,你将每分钟计算点之间的距离,然后将该总和作为你的redis存储中特定键的新值。 Redis是原子性的并且同步任何写入,听起来像是您项目的理想用例。我们还设置了一个定期将值写入磁盘的cron作业,以防redis存储崩溃(尚未发生) – Alex