【发布时间】:2012-05-07 03:39:26
【问题描述】:
我必须使用 Drupal 实现一个包含多站点的系统。 (预计 1000 个站点) Drupal 允许我们使用多个数据库或一个带前缀的数据库。 对于数千个站点,我可能会选择多个数据库而不是一个带前缀的数据库。并且所有数据库都具有相同的表结构。 但问题是: 有一些非常经常从所有站点(所有数据库)收集信息的查询。 例如:选择 20 个类别为鞋类的产品,并且从所有数据库中获得良好的投票率。 我现在有 3 个解决方案:
- 使用 for 循环选择数据库。这意味着 1000 次查询“从 db1.table1 中选择 *,其中类别 = 123 和投票 = 10”;然后选择匹配的产品。我认为这在性能上会更差,因为如果所有数据库中有很多行,就会使用大量内存。
- 使用 Select * FROM db1.table1 .... UNION SELECT * FROM db2.table1 .... 我认为这也很糟糕。因为mysql会先从db1中选择,如果20个产品足够多,mysql就会停止查找。
- 每当插入所有数据库时,我们都会插入一个带有站点标志的非常大的数据库。因此,我们可以使用一个简单的查询从这个非常大的数据库中进行选择查询:“SELECT * FROM largeDB.table WHERE category=123 and vote=10”。
请多多指教。非常感谢你。 P.S:当我有 1000 个相同的数据库时,请告诉我更多关于数据库维护的问题。
【问题讨论】:
-
任何人请给我建议。非常感谢
-
如果您将特定数据库添加为标签(例如 mysql),可能会帮助您获得答案。这个问题似乎没有什么特别面向 Drupal。
-
是的,这很令人困惑......每个数据库是否都包含特定于站点的相关数据,或者您只是将产品类型(从我得到的)拆分到单独的数据库中?是一个站点还是多个站点?