使用 PostgreSQL 还是 PostgreSQL + MongoDB?
Using PostgreSQL or PostgreSQL + MongoDB?
我目前正在计划一个社交媒体应用程序 - 尤其是后端。
基本上我有我想使用 SQL(我猜是 PostgreSQL)的所有社交方面,但我也有组织在列表中的地理位置(如此多对一)最大的数据量。我知道 PostgreSQL 具有 GIS 功能的模块,我最初的想法是只对所有内容使用 PostgreSQL,只是为了简单起见,因为地理定位搜索的性能应该大致相同系统,即使不支持 PostgreSQL。我也可以在 Postgre 中使用 JSON 类型 SQL 所以它基本上涵盖了 MongoDB 最明显的优点。
另一方面,我担心可扩展性,因为地理位置将成为最大的数据块,而且表格可能会有大量的行。
所以我现在的想法是在 MongoDB 中实现地理定位,因为它具有简单的可扩展性、易于使用的地理定位搜索和嵌入,例如 Comments/Likes 将地理定位直接嵌入到文档中,这将使地理定位reads/searches 方法更简单,但我不得不再次将这些数据与来自 SQL 的社交数据结合起来,例如获取所有评论地理位置的用户并从 PostgreSQL 和 [=19 获取他们的个人资料信息=] 结合起来。尽管这部分可以在前端完成,但为我节省了大量资源。
我不确定这个想法的效果如何,也不确定我是否真的在帮自己一个忙。
tldr:使用 PostgreSQL。
长答案:
您正在尝试针对您甚至不知道是否会遇到的问题进行预优化。您不知道您将拥有多少个地理位置,您的用户的使用行为是什么,您甚至可能还没有任何用户。
我以前使用过 MongoDB 并迁移到 PostgreSQL。使用 'real' 数据库存储高度结构化的数据有很多很多的特性和好处。我建议四处搜索 'PostgreSQL vs X' 文章,但我发现的总体共识是 PGSQL 是 非常 成熟、可靠、高效和受支持的。
根据我使用 Mongo 然后切换到 PGSQL 的个人经验,我永远不会再使用 Mongo 除非 PGSQL(或另一个成熟的 SQL 数据库)完全崩溃了,我花了几个月的时间来修复它。即便如此,我也会仔细查看其他 NoSQL 数据库。 PGSQL 拥有众多令人惊叹的功能和强大的工具,使用起来非常愉快。
对于您认为需要 Mongo 的看似很少的事情,PGSQL 可以做到,而且做得一样好或更好。它具有带索引、地理支持、全文索引等的原生 JSON 类型。PGSQL 存在时间更长,支持更多(对调试、性能调整等很有用)。
无论您考虑使用哪种技术,如果您不这样做,就无法做出任何明智的决定:
- 用大数据集测试
和
- 了解您的使用模式和数据量
所以在这一点上,我会选择更成熟、更强大的工具和设置监控。观察 PGSQL 的用法和性能,看看它是如何保持的。研究 PGSQL 的最佳实践。了解它,学习它,深入研究。在扩展单个服务时,每个服务都有些独特,不适合简单的 "Should I use X or Y?" 问题。
祝你好运!
我目前正在计划一个社交媒体应用程序 - 尤其是后端。 基本上我有我想使用 SQL(我猜是 PostgreSQL)的所有社交方面,但我也有组织在列表中的地理位置(如此多对一)最大的数据量。我知道 PostgreSQL 具有 GIS 功能的模块,我最初的想法是只对所有内容使用 PostgreSQL,只是为了简单起见,因为地理定位搜索的性能应该大致相同系统,即使不支持 PostgreSQL。我也可以在 Postgre 中使用 JSON 类型 SQL 所以它基本上涵盖了 MongoDB 最明显的优点。
另一方面,我担心可扩展性,因为地理位置将成为最大的数据块,而且表格可能会有大量的行。
所以我现在的想法是在 MongoDB 中实现地理定位,因为它具有简单的可扩展性、易于使用的地理定位搜索和嵌入,例如 Comments/Likes 将地理定位直接嵌入到文档中,这将使地理定位reads/searches 方法更简单,但我不得不再次将这些数据与来自 SQL 的社交数据结合起来,例如获取所有评论地理位置的用户并从 PostgreSQL 和 [=19 获取他们的个人资料信息=] 结合起来。尽管这部分可以在前端完成,但为我节省了大量资源。
我不确定这个想法的效果如何,也不确定我是否真的在帮自己一个忙。
tldr:使用 PostgreSQL。
长答案:
您正在尝试针对您甚至不知道是否会遇到的问题进行预优化。您不知道您将拥有多少个地理位置,您的用户的使用行为是什么,您甚至可能还没有任何用户。
我以前使用过 MongoDB 并迁移到 PostgreSQL。使用 'real' 数据库存储高度结构化的数据有很多很多的特性和好处。我建议四处搜索 'PostgreSQL vs X' 文章,但我发现的总体共识是 PGSQL 是 非常 成熟、可靠、高效和受支持的。
根据我使用 Mongo 然后切换到 PGSQL 的个人经验,我永远不会再使用 Mongo 除非 PGSQL(或另一个成熟的 SQL 数据库)完全崩溃了,我花了几个月的时间来修复它。即便如此,我也会仔细查看其他 NoSQL 数据库。 PGSQL 拥有众多令人惊叹的功能和强大的工具,使用起来非常愉快。
对于您认为需要 Mongo 的看似很少的事情,PGSQL 可以做到,而且做得一样好或更好。它具有带索引、地理支持、全文索引等的原生 JSON 类型。PGSQL 存在时间更长,支持更多(对调试、性能调整等很有用)。
无论您考虑使用哪种技术,如果您不这样做,就无法做出任何明智的决定:
- 用大数据集测试
和
- 了解您的使用模式和数据量
所以在这一点上,我会选择更成熟、更强大的工具和设置监控。观察 PGSQL 的用法和性能,看看它是如何保持的。研究 PGSQL 的最佳实践。了解它,学习它,深入研究。在扩展单个服务时,每个服务都有些独特,不适合简单的 "Should I use X or Y?" 问题。
祝你好运!