【问题标题】:Multi-tenant DB Design, a Salesforce scenario多租户数据库设计,一种 Salesforce 场景
【发布时间】:2013-09-10 00:23:50
【问题描述】:

我正在对类似 Salesforce 的应用程序的最佳数据库设置进行一些研究(Web 应用程序包含多个 10.000 客户的敏感数据,每个客户可以有 多个用户 帐户)。

我的想法是,拆分数据库设置(每个客户使用不同的数据库)是最好的,因为它是确保数据在安全性方面真正隔离的唯一方法,而且因为它不仅仅是多客户,而是每个客户客户可以有多个用户登录以处理数据。但是...拥有一个包含 10.000 个“小型”数据库的数据库实例真的可以吗?

我对共享架构设置并没有太多感觉,因为您最终会得到成千上万个表,这似乎不太容易管理。

在每个表中只使用一个 customerID 列的 1 个大型数据库设置似乎最容易实现,但并不十分安全……而且我认为连接表将是一项艰巨的任务。

您对这种情况有何看法?从可扩展性和安全性的角度来看,单独的数据库方案对我来说似乎是最好的......但我知道什么:D

谢谢!

【问题讨论】:

  • 您不必使用单个实例。如果您愿意,您可以在 100 个不同的服务器上运行 100 个不同的实例。你的决定基于研究和测试,而不是你的感受和假设。感觉和假设不能很好地扩展。
  • 哪个数据库?例如,mysql“数据库”与 postgres“数据库”不同。

标签: database database-design salesforce multi-tenant


【解决方案1】:

恕我直言,您可以选择为每个租户或一组租户使用不同的数据库。这将提供更好的可扩展性、良好的数据访问速度、安全合规性等。如果您必须备份租户数据,它会更快并且可以自动化。 一个考虑因素是访问共享数据库和共享数据库中的数据。

甚至每个租户都可以选择使用单独的数据库来维护用户信息,以便基本租户身份验证将来自共享数据库,并且可以使用单独的数据库对用户进行身份验证。 请分享您对此的看法。

【讨论】:

  • 您仍然会为每个租户获得 10 亿个小型数据库,并为共享数据提供 1 个更大的数据库。我假设拥有 1 个大数据库可以在需要时使用分区...
  • 并非如此,在共享数据库的情况下,您将拥有基本的身份验证和授权数据。层次结构中单独的租户或租户的子树将拥有各自的数据库。
猜你喜欢
  • 2014-02-08
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
相关资源
最近更新 更多