【问题标题】:Best database model for saas application (1 db per account VS 1 db for everyone)SaaS 应用程序的最佳数据库模型(每个帐户 1 db VS 每个人 1 db)
【发布时间】:2015-09-20 15:02:51
【问题描述】:

小问题,我正在开发一个 saas 软件(erp)。

出于以下原因,我为每个帐户设计了 1 个数据库:

  • 我做了很多个性化设置,需要为每个帐户添加特定的表格列。
  • 更易于管理数据库备份(和重新加载数据!)
  • 风险较小:有时我需要对表运行 SQL 查询,以防查询错误(更新/删除...),只有一个客户受到影响,而不是所有客户。

基点:我将拥有数百个数据库...

我正在聘请一家公司来管理我的服务器,他们说最好只有一个数据库,几个表,并将所有数据放在同一个表中,列为id_account。我对这些话感到非常非常惊讶,所以我想知道......你的想法是什么?

谢谢!

弗雷德里克

【问题讨论】:

    标签: mysql database saas


    【解决方案1】:

    在我工作的当前环境中,我们处理来自众多客户的数百万条记录。我们的解决方案是使用 Schema 来隔离每个客户。架构允许您在单个数据库中将客户端分区到单独的虚拟数据库中。每个架构都将拥有您应用程序中表的精确副本。

    好处:

    • 隔离的客户数据
    • 可以轻松备份、导出或删除来自单个客户端的数据
    • 编程还是一样,但你必须在调用 db 之前选择架构
    • 将客户端移动到另一个数据库或独立服务器要容易得多
    • 为每个客户添加特定表更容易(见下文)
    • 单个数据库实例运行
    • 调整数据库会影响所有租户

    缺点:

    • 除非您正确管理共享架构,否则您可能会重复数据
    • 针对每个架构重复迁移
    • 您必须记住在调用 db 之前选择架构
    • 很难添加许多否定...我想我可能有偏见。

    添加特定表格:如果这是 SAAS 而不是自定义软件,为什么要添加客户特定表格?最好使用带有 Hstore field 的 Postgres DB,并尽可能多地存储可搜索的数据。

    架构是多租户数据库的理想选择LinkLink

    我告诉你的很多内容取决于你的软件堆栈、开发人员的能力和你选择的后端数据库(所有这些你都忽略了)

    您的硬件人员不应决定您的软件架构。如果他们这样做了,你很可能在你走出大门之前就射中了自己的腿。找一位优秀的高级软件架构师,他们为您带来的痛苦,也很可能挽救您的业务。

    我希望这会有所帮助...

    良机

    【讨论】:

    • 对不起,我忘了说,我正在使用 MySQL。我寻找架构(我对此一无所知......),看起来架构和数据库在 mysql 中完全相同(stackoverflow.com/questions/11618277/…)。所以可能不是解决方案......(或者这可能意味着我的架构很好哈哈)当我说我正在开发 saas 时,我的意思是“软件即服务”,而不是“一个没有定制适合所有人的标准”。实际上,我为每个客户都有一个标准的软件,但我也为每个客户定制了它......这就是为什么我需要特定的表格和列
    • @Frederic 在 Oracle 收购 MySQL 的那一刻,我放弃了它们。他们没有动力去创新他们的旗舰产品。另一方面,Postgres 一直在定期引入新的特性和功能。我可以建议切换到 Postgres,从长远来看,你会更好。
    • “找一位优秀的高级软件架构师,他们会拯救你的悲伤,很可能会拯救你的业务。” - 圣人建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2012-03-30
    • 2015-03-19
    • 1970-01-01
    相关资源
    最近更新 更多