【问题标题】:Using PostgreSQL or PostgreSQL + MongoDB?使用 PostgreSQL 还是 PostgreSQL + MongoDB?
【发布时间】:2017-02-17 19:06:17
【问题描述】:

我目前正在规划一个社交媒体应用程序——尤其是后端。 基本上,我有我想使用 SQL 的所有社交方面(我猜是 PostgreSQL),但我也有以列表(多对一)组织的地理位置,这可能会产生最大数量的数据。我知道 PostgreSQL 具有用于 GIS 功能的模块,我最初的想法是只使用 PostgreSQL,只是为了简单起见,因为两个系统的地理位置搜索性能应该大致相同,即使不支持 PostgreSQL。我也可以在PostgreSQL中使用JSON类型,所以它基本上具有MongoDB最明显的优势。

另一方面,我担心可扩展性,因为地理位置将成为最大的数据块,并且表格可能会有成堆的行。

所以我现在的想法是在 MongoDB 中实现地理定位,它具有简单的可扩展性、易于使用的地理定位搜索以及将地理定位的评论/喜欢直接嵌入到文档中,这将使地理定位读取/搜索变得更容易,但又一次我必须将这些数据与来自 SQL 的社交数据结合起来,例如,获取所有评论地理位置的用户,并从 PostgreSQL 获取他们的个人资料信息并“手动”结合它。尽管其中一部分可以在前端完成,但可以为我节省大量资源。

我不确定这个想法的效果如何,也不确定我是否真的在帮自己一个忙。

【问题讨论】:

  • 您计划的“地理位置”数量是多少?
  • 地理位置是由用户输入的,所以基本上没有限制或取决于整体成功。
  • 我相信您的问题没有正确答案。我要做的是尝试估计从 PG 迁移到 MongoDB 的成本,以防万一,并将其​​与 MongoDB 操作成本的估计值(直到迁移点)进行比较。作为一名开发人员,我更喜欢使用 PostgreSQL,而不是为可能永远不会发生的可扩展性付出任何努力。

标签: mongodb postgresql geolocation scalability database-performance


【解决方案1】:

tldr:使用 PostgreSQL。

长答案:

您正在尝试针对您甚至不知道是否会遇到的问题进行预优化。您不知道您将拥有多少个地理位置,您的用户的使用行为是什么,您甚至可能还没有任何用户。

我以前用过 MongoDB,后来迁移到 PostgreSQL。使用“真实”数据库存储高度结构化的数据有很多很多特性和好处。我建议搜索“PostgreSQL vs X”文章,但我发现的总体共识是 PGSQL非常成熟、可靠、高性能和受支持。

根据我使用 Mongo 然后切换到 PGSQL 的个人经验,我永远不会再使用 Mongo,除非 PGSQL(或另一个成熟的 SQL 数据库)完全崩溃并且我花了几个月的时间来修复它。即便如此,我也会认真研究其他 NoSQL 数据库。 PGSQL 有许多令人惊叹的特性和强大的工具,使用起来很有趣。

对于您认为需要 Mongo 的看似很少的事情,PGSQL 可以做,而且做得一样好或更好。它具有带有索引、地理支持、全文索引等的原生 JSON 类型。PGSQL 的存在时间更长并且支持更多(对调试、性能调整等有用)。

无论您考虑使用哪种技术,如果您不这样做,您将无法做出任何明智的决定:

  1. 使用大型数据集进行测试

  1. 了解您的使用模式和数据量

所以此时我会选择更成熟、更强大的工具并为其设置监控。观察 PGSQL 的使用和性能,看看它的表现如何。研究 PGSQL 的最佳实践。了解它,学习它,深入了解它。在扩展单个服务时,每个服务都有些独特,不适合简单的“我应该使用 X 还是 Y?”问题。

祝你好运!

【讨论】:

  • 非常感谢这个非常详细的回答!我一定会生成一些数据并测试性能。
  • 谢谢!您介意点赞甚至选择我的回答作为最佳答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 2013-02-12
  • 2019-07-24
相关资源
最近更新 更多