Web 应用程序 - 每个客户一个 db 还是所有客户一个?

Web app - one db per customer or one for all of them?

我必须为我的一个客户制作一个电子邮件营销应用程序,在这个应用程序中,每个客户平均需要管理大约 10 万个联系人列表。

因此,对于每个客户,我应该创建一个数据库并复制模式或将所有客户合并到一个数据库中。例如:所有联系人在一个 table 中,并将它们与 customer_id

相区别

我想知道制作一个每个客户都需要管理大量收银机的 Web 应用程序的最佳建议是什么。

也有可能一些客户(大公司)需要私人安装应用程序。

请告诉我您使用此类应用程序的体验。

谢谢。

共享的集中式数据库几乎总是最佳途径。试图单独处理即使是中等数量的客户也是一场噩梦。想想代码更新、补丁、修复等。如今的数据库功能强大,可以轻松处理您所指的记录数量,所以不用担心。自 90 年代后期以来,我一直在构建这些类型的系统,并且不止一次地思考过这种确切的情况。肯定是单一的共享数据库。祝你好运!

我的建议是使用一个快速的关系数据库,这样数据就集中起来并可供查询。我会进一步推荐 Postgres,因为它具有 UID's, audit triggers, and table partitioning.

等不错的功能

将所有客户和顾客保存在同一个数据库中还可以让您有机会轻松对整个客户的趋势进行大数据分析。将其与单个数据库上每个客户的 运行 分析进行比较……那将是一场噩梦。

Postgres 也有一种将表格组织成 "schemas" 的便捷方式。您可以为您的客户和所有客户相关信息提供一个模式,为您的客户和所有客户相关信息提供一个模式,为账单信息提供一个模式,为您的数据分析结果提供一个模式,等等。