在PHP / MySQL应用程序上......
我们计划为用户提供创建简单数据库的能力。
假设它可以获得超过10000个主要用户帐户,并且可能在几年后增加数倍。 什么是有效的方式?
A)直接在我们的应用程序数据库中创建用户定义的表和字段? 这不会是......我们的~40个表的应用程序和10000个用户创建的表一样吗?
我知道在查询和使用等时刻它会很有效
B)拥有表格和字段表? 像...
TABNAME
等
table usrfields
-tabID
-fldName
-fldType
-fldContent
等
非常感谢
答案 0 :(得分:0)
如果您想成为托管数据库提供程序,最好是为每个用户提供包含其表的自己的数据库,这对于安全性和可伸缩性来说是最好的。
运行单个数据库中所有用户的选项1会导致一些问题,因为你会有很多表,但至少你仍然可以扩展,因为只要每个用户的表没有“说话”彼此(连接),您可以按用户对多个主机进行分片/分区。你最终得到的结构和工作量几乎与给每个人自己的数据库一样。如果您必须偶尔在用户之间进行联接,可能会更好。
选项2将导致所有用户数据混合到巨大的表中,这将导致索引写入开销,水平分区和锁争用很快就会引发问题。可扩展性的方法是尝试在可能的情况下将数据分解为小的孤立块,这种方法正朝着完全相反的方向发展。