我对数据库和表演有疑问,请让我解释一下情况。
要构建的应用程序具有以下设置: 用户在该组下面的一个组。 数据/文件位置(用于搜索)估计一个组可以轻松达到一百万"搜索"术语
现在,群组可以 从不 查看彼此的数据,用户只能查看属于其群组的数据。
他们唯一应该共同的地方是,有一些地方可以发送错误日志(可能甚至没有必要)。
现在在这种情况下,您是否会为每个组创建一个新数据库,或者始终使用查询限制您的搜索结果,这会将某个用户组ID考虑在内?
现在我的想法是创建一个新的数据库,因为你不需要每次限制你的查询,它会保持结果搜索较低的(?),但这是非常必要的,甚至是超过一百万条记录,a"其中groupid = 1"足够快,不会发现性能下降。
答案 0 :(得分:3)
这是常规的多租户SaaS架构问题,已经详细讨论过,解决方案总是根据您自己的情况而有所不同。以下是此讨论的一个示例,我将链接到而不是复制粘贴,因为所有这些都值得阅读:Multi-tenant PHP SaaS - Separate DB's for each client, or group them?
除此之外,我想补充一些更高层次的考虑因素:
我希望这会有所帮助。
答案 1 :(得分:1)
性能不是您的问题,维护和数据安全性。如果您有很多数据库,那么您将需要维护更多数据库。不仅是备份,还包括连接字符串,补丁,发布时的架构更新等。多个数据库也表明您将拥有多个PHP站点。随着团体数量的增加,这将逐渐变得更加昂贵。
如果您有一个数据库,那么您需要确保每个查询在运行之前都包含组ID。
如果您仔细选择索引和约束,数据库表可能非常非常大。如果你正在对非常大的表执行连接,那么它会很慢,但是一个简单的查找,你在组列上有一个索引应该足够快。
如果你要共享一个数据库,你会不会移动一个组?如果有可能,那么现在拆分数据库。如果您要拥有一个PHP站点,那么我建议使用一个具有组列的单个数据库。