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

时间:2016-11-08 17:20:42

标签: mysql node.js mongodb gps database

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

示例:

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

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

  

请求太多,我知道。

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

  

顺便说一下,我计划将Amazon AWS或Microsoft Azure用作云服务器提供商。

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

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

2 个答案:

答案 0 :(得分: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允许您在地理空间数据上构建2D索引。看看你提到的用法。它应该派上用场。

答案 1 :(得分:1)

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

对于Cloud方面,我强烈建议您使用MongoDB ATLAS https://www.mongodb.com/cloud/atlas/pricing