如何在 MongoDB 和 GIS 的 PostgreSQL 之间进行选择?

How to choose between MongoDB and PostgreSQL for GIS?

我正在尝试查找有关此主题的一些信息,但我找到的大多数文章都是 3 年以上的文章。我对这方面的事情也很陌生,不知道该问谁。

对于我的特定用例,我根本不是数据库专家,但我之前使用过 MongoDB 几次。我只在一个小项目中使用过一次 PostgreSQL(不涉及 GIS 的东西)。对于它的价值,我现在有少量数据存储到 dynamoDB 中。它有一个地理库,但它仅在 Java 中可用,我不太了解 Java。

我的用例相当简单 - 除了用户个人资料数据外,我还希望能够查询用户添加的标记。距离经过身份验证的用户当前 latLng 等 X 英里内的标记。除了 latLng 之外,标记还有其他数据与其关联,例如添加它的用户、标题、描述等。

我的目标是能够 return 使用网络 API 在当前位置 X 英里范围内将标记从最近到最远发送到客户端。为此,在 Mongo 和 PostgreSQL 之间,从什么开始比较好?

PostgreSQL 可以通过 PostGis 为您提供完整的(地理)空间功能,尽管您可能 不会 在你的应用程序中需要那么多。

如果您只是需要快速找到某个(纬度,经度)点一定半径范围内的用户,您可以使用earthdistance module, together with GIST indexes

检查 How can I speed-up my query on geo-location processes 以获得详细说明。

同时检查 Searching in a Radius using Postgres


MongoDB 中,您将使用 geoNear functionality and 2dsphere Indexes


PostgreSQL 中的查询速度非常快,非常灵活,而且扩展性非常好。与使用 MongoDB.

相比,您需要做更多的工作来设置它

总之,两者的基本功能都具备,您应该考虑所有其他因素来决定:

  • 您的数据结构是否合理,并且在该结构中几乎没有变化? (更多在 SQL 方面)
  • 您需要 ACID(原子性、一致性、隔离性、持久性)保证吗? (更多在 SQL 方面)
  • 你需要巨大的水平缩放吗? (更多在 MongoDB 方面)
  • 您需要一次查询多个表(并加入)吗? (SQL 边)
  • 您觉得 JavaScript 和 JSON 比其他任何语言都舒服吗? (MongoDB +)
  • (等等,等等)

还检查 Postgres Outperforms MongoDB and Ushers in New Developer Reality and System Properties Comparison MongoDB vs. PostgreSQL,等等。