【发布时间】:2020-12-21 10:48:20
【问题描述】:
我是一名全栈软件开发人员,我一直渴望创建自己的软件来获得被动收入和职业发展。我越是深入杂草,我就越欣赏/尊重 DevOps 和一般应用程序的基础架构方面。我正在尝试以一种可扩展的方式构建此应用程序(最多可容纳 10/000 名客户)并且启动成本不高。该堆栈是 angular/node,利用带有 aws 基础架构的 postgres。
根据我所做的研究,一些方法是:1 db,每个客户的表(便宜/不可扩展) 1 db,每个客户的架构(更便宜/更具可扩展性) n db,每个客户 db(昂贵,无限可扩展) )
我想选择选项 2,或者如果有其他混合选项。有人可以向我解释选项 2 将如何工作吗?我计划将应用程序托管在 ec2 实例上,然后将数据库托管在 aurora aws 中,每个客户都有复制的表,但在 1 db 以内。有没有人对如何实施有任何建议。任何输入都会很棒。
提前致谢!
【问题讨论】:
-
您为什么不能在同一个数据库中拥有所有客户数据,甚至在同一个表中?这是 Salesforce 在构建多租户系统时采用的方法。对数据库的查询使用客户标识符,因此在查询中只使用他们的行,而无需使用单独的表。然后,他们对数据库进行分片以处理增长和性能。
-
如果您正在寻找“意见”,您可能会得到更好的回复:reddit.com/r/aws
-
@JohnRotenstein 在 reddit 链接上的好主意,我会试试的。基本上,如果确实需要将其拆分为拥有其数据库的每个租户,那么我的想法是后来的结果,该数据基本上已经以这种方式构造了。我可能完全错了,我不是专家,但这只是一个想法。我会研究分片,这看起来很有帮助。
标签: postgresql amazon-web-services express multi-tenant knex.js