【问题标题】:How to choose between MongoDB and PostgreSQL for GIS? [closed]如何在 MongoDB 和 PostgreSQL for GIS 之间进行选择? [关闭]
【发布时间】:2017-06-14 13:21:03
【问题描述】:

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

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

我的用例相当简单——除了用户个人资料数据之外,我还希望能够查询用户添加的标记。已验证用户当前latLng 等 X 英里范围内的标记。标记除了 latLng 之外还有其他相关数据,例如添加它的用户、标题、描述等。

我的目标是能够使用 Web API 将结果返回到客户端,并在其当前位置 X 英里范围内从最近到最远标记。为此,在 Mongo 和 PostgreSQL 之间,从什么开始会更好?

【问题讨论】:

  • 您不需要为此使用特殊的数据库,尽管在具有地理扩展的数据库中它会更快。您可以使用the Haversine formula。在 SQL 实现中,您可以在 WHERE 子句中添加距离过滤器。

标签: mongodb postgresql gis postgis database


【解决方案1】:

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

如果您只需要在(lat,lng)点的某个半径范围内快速找到用户,您可以使用earthdistance moduleGIST indexes

查看How can I speed-up my query on geo-location processes了解详细说明。

还要检查Searching in a Radius using Postgres


MongoDB 中,您将使用 geoNear 功能和 2dsphere Indexes


PostgreSQL 中的查询非常快速且非常灵活,并且可以很好地扩展。与 MongoDB 相比,您需要做更多的工作来设置它。

无论如何,两者的基本功能都可用,您应该考虑所有其他因素来决定:

  • 您的数据结构是否良好,并且在此结构中几乎没有变化? (更多关于 SQL 的内容)
  • 您需要 ACID(原子性、一致性、隔离性、持久性)保证吗? (更多关于 SQL 的内容)
  • 您需要巨大的水平缩放吗? (更多关于 MongoDB 的内容)
  • 您是否需要一次查询多个表(并连接)? (SQL 端)
  • 您觉得 JavaScript 和 JSON 比其他任何语言更舒服吗? (MongoDB +)
  • (等等等等)

还要查看 Postgres Outperforms MongoDB and Ushers in New Developer RealitySystem Properties Comparison MongoDB vs. PostgreSQL 等。

【讨论】:

  • 非常感谢乔阿诺洛。我意识到我的问题被否决了很多,但老实说,很难轻松找到这类信息,而且也很容易消化。感谢您的回复。
  • 如果我可以再问一个问题。目前,我认为我不需要关系数据库,因此我倾向于使用 MongoDB,因为它易于设置和使用。我期待大量初始写入(创建新标记)和大量读取,但除了删除之外,不要期望对现有标记进行很多更新。我认为我的数据模型也很简单,如果需要(如前所述,我对数据库不太了解,我正在尝试构建 PoC),我可以切换到 postgres。您认为这是一种有效的方法吗?谢谢
  • 当您进行概念验证时,通常您的基本需求是让它快速发生,在这种情况下,请选择让您工作得最快的工具。这在很大程度上取决于您以前的背景;你习惯的那种工具。但要小心,不要陷入认为最适合 PoC 的东西就是生产中最好的东西的陷阱……
  • geoNear 和 geoIntersects 可用于 MongoDB
猜你喜欢
  • 2012-07-14
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 2022-01-24
  • 2019-12-17
  • 1970-01-01
相关资源
最近更新 更多