我有一个关于数据库和性能的问题,让我解释一下情况。
要构建的应用程序具有以下设置:
在该组下有用户的组。
数据/文件位置(用于搜索)估计一个组很容易达到一百万个“搜索”词。
现在,组永远不能查看彼此的数据,用户只能查看属于其组的数据。
它们唯一的共同点是,可以将错误日志发送到某个位置(可能,甚至不需要)。
现在在这种情况下,您是为每个组创建一个新的数据库,还是总是用一个查询来限制您的搜索结果,这将考虑到someone用户组id?
现在我的想法是创建一个新的数据库,因为你不需要限制你的查询,每一次,它都会保持搜索结果通过较低的(?)但这真的是必要的吗?或者,即使在超过一百万条记录中,“where groupid=1”的速度也足够快,不会注意到性能的下降。
最佳答案
这是一个常见的多租户saas体系结构问题,已经详细讨论过了,而且解决方案总是根据您自己的情况而有所不同。这里有一个讨论的例子,我将只链接而不是复制粘贴,因为所有这些都值得一读:Multi-tenant PHP SaaS - Separate DB's for each client, or group them?
除此之外,我还要补充一些更高层次的考虑:
关于用户数据的存储有什么法律要求吗?有些企业在监管环境中运营,不允许将数据存储在共享环境中,这在金融和医疗行业非常常见。
您是否会为所有用户提供相同的安全性(登录方法、数据存储加密)、备份/还原服务、地理位置冗余和实时保证?
是否有任何用户愿意支付额外费用将其数据存储在单独的环境中?
是否有任何用户可能有与您提供的标准产品不兼容的需求?如果是的话,你会试着去适应他们吗?请注意,偶尔会有一些大客户前来,为特殊待遇提供大量现金。
什么是单独的环境?它是一个单独的数据库,一个单独的虚拟机,一个单独的物理机,一个由客户管理的机器吗?
应用程序的哪些部分是每个环境的一部分(硬件配置、网络配置、数据库、源代码、二进制文件、加密证书等)?
是否会有一些重用户在应用程序上产生负载,从而对较小用户的性能产生负面影响?
如果您在一个环境中选择所有用户,那么将来是否有可能为某些客户创建一个单独的环境?如果是这样,这将影响您放置共享数据的位置,例如配置数据,如税率和汇率数据等。
我希望这能有帮助。
关于php - 多个数据库,或始终限制查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43760102/