我有一个应用程序,用户可以使用有限的前端界面创建自己的Mysql数据库表。前端处理安全性,名称重复等。
我已经阅读了很多类似的SO答案,但是大多数答案最终都有“不要创建动态表,只需创建几个表和外键将它们联系在一起”等解决方案。这不是一个真正的选择,因为每个用户实际上都在创建自己的表,这些表独立于另一个用户的表。用户可以有多个与自己关联的表。
所以这是我的问题:如果我有很多表(比如几百万),最好将所有表都放在一个数据库中,或者为每个用户创建一个数据库,然后将用户的表粘贴在该数据库中,在性能和维护方面?我和朋友谈过这件事,他提到复制和扩展大量数据库比很多表更容易。
此外,还有一个问题:现有的ORM是否有能力做这样的事情 - 创建动态数据库/表格?我现在正在使用直接SQL,但是有一个已经构建/测试过的库很好,但我知道我有一种常见的问题类型。
答案 0 :(得分:1)
如果使用myisam存储引擎,您还必须了解底层引擎的性能。
如果没有测试,我会赞成db的um目录。目录中有100万条(比如说)和要搜索的200万条表条目。这假设MySQL仅使用文件szstem的API来访问dbs / tables。
使用myisam,表/ dbs数量的限制仅取决于文件系统。
从逻辑的角度来看(想想更简单的应用程序维护)和名称空间管理,我也赞成每个用户1个目录。