Database design 动态直接到数据库字段或;仿效;领域?

Database design 动态直接到数据库字段或;仿效;领域?,database-design,Database Design,在PHP/MySQL应用程序上 我们计划为用户提供创建简单数据库的能力 比方说,它可以获得多达10000多个主要用户帐户,几年后可能会增加几倍。 有效的方法是什么 A) 将用户定义的表和字段直接创建到应用程序的数据库中? 那不是像。。。我们的~40个表格应用程序和10000个用户创建的表格 我理解,在查询和使用等方面,它将是有效的 B) 有表和字段的表吗? 像 表usrtables 塔比德 乌斯里德 标签名 等等 表usrfields -塔比德 -fldName -fldType -外语教学内

在PHP/MySQL应用程序上

我们计划为用户提供创建简单数据库的能力

比方说,它可以获得多达10000多个主要用户帐户,几年后可能会增加几倍。 有效的方法是什么

A) 将用户定义的表和字段直接创建到应用程序的数据库中? 那不是像。。。我们的~40个表格应用程序和10000个用户创建的表格

我理解,在查询和使用等方面,它将是有效的

B) 有表和字段的表吗? 像

  • 表usrtables
  • 塔比德
  • 乌斯里德
  • 标签名

    等等

  • 表usrfields

    -塔比德

    -fldName

    -fldType

    -外语教学内容

等等


非常感谢

如果您想成为一个托管数据库提供商,一个好主意是实际为每个用户提供自己的包含其表的数据库,这将是安全性和可伸缩性的最佳选择

选项1运行单个数据库中的所有用户将导致一些问题,因为您将有很多表,但至少您仍然能够进行扩展,因为只要每个用户的表不相互“对话”(联接),您就可以按用户对多个主机进行分片/分区。最终得到的结构和工作量几乎与最初为每个人提供自己的数据库相同。如果您必须偶尔跨用户执行一次连接,那么这可能是一种更好的方法


选项2将导致所有用户的数据混合到巨大的表中,这将很快导致索引写入开销、水平分区和锁争用问题。实现可伸缩性的方法是尽可能将数据分解为小的独立块,这种方法正朝着完全相反的方向发展

我明白了,我没有考虑为每个用户建立实际数据库的可能性,但我的应用程序数据库下的表似乎有一个单独的数据库。实际上,我的应用程序可能需要一个DB,另一个DB包含所有用户表(数百个),而不是数百个DB。这样,服务器上就只有2分贝了,我的应用程序也就干净了。事情是应用程序将使用来自两个DB的数据以便工作,但从来没有像这样工作过,但是我会检查它,非常感谢。是的,或者你可以将几个客户端组合成一个DB,如果你真的成为一个成功的话,那么就考虑将大客户放入他们自己的DB和更小的客户端到一个组合的DB中的复杂的解决方案…目前,选项1似乎是最好的,因为您希望从客户机数据进行一些聚合。请接受我的答案,这样如果你喜欢我的答案,我可以得到一些分数,谢谢!