2

我必须使用 Drupal 实现一个包含多站点的系统。(预计 1000 个站点) Drupal 允许我们使用多个数据库或一个带前缀的数据库。对于数千个站点,我可能会选择多个数据库而不是一个带前缀的数据库。并且所有数据库都具有相同的表结构。但问题是:有一些非常频繁的查询从所有站点(所有数据库)收集信息。例如:选择 20 个类别为鞋类的产品,并且从所有数据库中获得良好的投票率。我现在有 3 个解决方案:

  1. 使用 for 循环选择数据库。这意味着 1000 次查询“从 db1.table1 中选择 *,其中类别 = 123 和投票 = 10”;然后选择匹配的产品。我认为这在性能上会更差,因为如果所有数据库中有很多行,就会使用很多内存。
  2. 使用 Select * FROM db1.table1 .... UNION SELECT * FROM db2.table1 .... 我认为这也很糟糕。因为mysql会先从db1中选择,如果20个产品足够多,mysql就会停止查找。
  3. 每当插入所有数据库时,我们都会插入一个带有站点标志的非常大的数据库。因此,我们可以使用一个简单的查询从这个非常大的数据库中进行选择查询:“SELECT * FROM largeDB.table WHERE category=123 and vote=10”。

请给我更多的建议。非常感谢。PS:当我有 1000 个相同的数据库时,请告诉我更多关于数据库维护的问题。

4

1 回答 1

1

我只是想确保您了解 Drupal 开箱即用的多站点功能?您所要做的就是在站点文件夹中创建一个新文件夹,然后创建一个符号链接和/或将其添加到sites.php(取决于服务器可能会或可能不会工作)。

抱歉,如果您已经知道这一点,想确保您不会自定义解决方案,如果这对您有用。它可以在单个 Drupal 安装上很好地处理具有自己数据库的多个站点。不幸的是,我无法帮助来自单个站点的多个数据库查询,过去我只是通过手动 PHP 查询来完成的。

于 2012-06-01T23:13:52.187 回答