使用nodejs和数据库存储GPS纬度和经度的最佳方法

Posted

技术标签:

【中文标题】使用nodejs和数据库存储GPS纬度和经度的最佳方法【英文标题】:Best way to store GPS latitude and longitude with nodejs and database 【发布时间】:2017-03-22 10:21:05 【问题描述】:

我想知道使用 NodeJS 和一些数据库服务器实时存储设备 GPS 位置信息的最佳方式。

示例:

目前有 5,000 台设备连接到服务器,每台设备都在发送有关其 GPS 位置的信息,最大超时时间为 1 秒。

NodeJS 服务器大约每分钟将接收 300,000 个 PUT 请求。

要求太多,我知道。

另一个需要考虑的重要因素是数据库服务器在技术上是另一个服务器或实例。

顺便说一句,我打算使用 Amazon AWS 或 Microsoft Azure 作为云服务器提供商。

所以我的问题是,实时存储这些信息的最有效方式是什么?

我的选择包括 mysql、MongoDB、PostgreSQL 等。 他们可以解释为什么最好使用您推荐的选项。 谢谢!

【问题讨论】:

【参考方案1】:

正如已经说过的那样,MongoDB 将所有需要的东西完全集中在一个地方。 对于索引方面,您还可以考虑“部分索引”以排除您不再需要的文档(例如,仅考虑不到 12 个月的所有文档):https://docs.mongodb.com/v3.2/core/index-partial/

对于云端,我强烈建议您使用 MongoDB ATLAS。 https://www.mongodb.com/cloud/atlas/pricing

【讨论】:

【参考方案2】:

我会说 - MongoDB。

为什么我会这么说 -

MongoDB 提供了许多索引和查询机制来处理地理空间信息。您可以使用以下坐标轴顺序轻松地将位置数据存储为 GeoJSON 对象:经度、纬度。 MongoDB 最近还支持其他 GeoJSON 类型:MultiPoint、MultiLineString、MultiPolygon、GeometryCollection。

MongoDB 还提供了大量查询运算符,可让您轻松查询地理空间数据,例如:

$geoWithin
$geoIntersects 
$near

一个典型的例子是


   location: 
      type: "Point",
      coordinates: [40.7829, 73.9654]
   ,
   name: "Central Park, New York City"

您可以在https://docs.mongodb.com/v3.2/tutorial/geospatial-tutorial/ 上查看大量示例

最后,MongoDB 允许您在地理空间数据上构建二维索引。看看你提到的用法。它应该会派上用场。

【讨论】:

谢谢,我喜欢你的回答!

以上是关于使用nodejs和数据库存储GPS纬度和经度的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

存储纬度和经度的最佳 mysql 数据类型是啥?

在 mysql 数据库中存储跟踪应用程序的 GPS 数据的最佳实践

根据 GPS 数据计算距离 [经度和纬度]

黑莓 GPS 的经度和纬度返回零

使用gps从纬度和经度获取当前位置

Gps android - 获取纬度和经度