【问题标题】:Multi-tenant architecture多租户架构
【发布时间】:2015-01-05 17:32:09
【问题描述】:

我制作了一个应用,让每个客户都拥有自己的数据库。

现在已经发展到我正在考虑一种更好的方式来更新架构,这将是单表多租户类型的解决方案。

这样做有什么缺点?

一个表基本上是一个潜在客户表, 由多家公司共享。 在当前大小下,到目前为止大约有 15,000,000 行。 这张表变得太大有什么影响,我将如何处理?

Salesforce 有一个单表 Oracle 数据库。 这一定是巨大的! 我只是想知道他们如何处理不断更新的数据集,在缓存和锁定等方面。

【问题讨论】:

  • 您现在正在以可维护性换取速度。如果您切换,您将以速度换取可维护性。由于这是销售,您需要考虑客户在数据安全方面的意愿。他们可能不想使用共享数据库,尤其是如果这意味着几个小的编码错误意味着他们的竞争对手在您的系统上可以看到他们的所有记录。
  • 您是否为您的应用程序使用任何特定框架? Laravel 具有数据库migration 功能,允许您从命令行更新数据库模式并以编程方式回滚它。您还可以使用 Chef 或 Puppet 等工具通过脚本来帮助您自动化数据库,脚本可以进行版本控制。
  • 我正在使用 Laravel。但甚至没有使用任何迁移功能。因为我基本上把它插在一个已经存在的系统上。但我想我现在会调查一下..
  • 我只是在自己学习它们。您是否只安装了一个客户端应用程序(即一个生产服务器/集群)?
  • 没有它的多个副本。在多个服务器/数据库上。我想复制一份。为用户、销售等使用共享数据库。但为每个客户客户/约会单独的客户数据库......或者只是在主数据库中单独的 client_tables

标签: php multi-tenant


【解决方案1】:

您是否为您的应用使用任何特定框架? Laravel 具有数据库 migration (http://laravel.com/docs/4.2/migrations) 功能,允许您从命令行更新数据库模式并以编程方式回滚它。您还可以使用 ChefPuppet 之类的工具通过脚本来帮助您自动化数据库,脚本可以进行版本控制。

这样,每当您更新给定客户端的安装时,您只是在运行版本控制的迁移文件,您可以在本地开发服务器上对其进行单元测试。

【讨论】:

    猜你喜欢
    • 2011-05-25
    • 2023-01-28
    • 2013-12-26
    • 2015-07-02
    • 1970-01-01
    • 2021-05-14
    • 2015-09-11
    • 2013-05-02
    • 2020-11-04
    相关资源
    最近更新 更多