【问题标题】:Drupal shared tables, but from another databaseDrupal 共享表,但来自另一个数据库
【发布时间】:2009-11-16 15:53:24
【问题描述】:

我有一个包含数百个站点的 Drupal Multisite。我想共享一些表格(例如横幅和角色),这样我就不必在更改横幅时更新数百个网站(例如)。

我知道这可以使用 settings.php 中的这些字符串来完成:

$db_url = 'mysql://user:pwd@localhost/example_db';

$db_prefix = array(
     'default'   => '',
     'users'     => 'subsite2_',
     'sessions'  => 'subsite2_',
     'authmap'   => 'subsite2_',
);

但是......如果我也有多个数据库设置怎​​么办?我有一个包含所有共享表的数据库。所以在那个数据库中,我有 Banners 表 - 我希望所有其他网站都可以使用它。

多数据库设置的原因是因为整个多站点设置由数百个站点组成(到今年年底将达到数千个)..所以每个数据库只包含大约 20-40 个站点..我怀疑很多这些表可以共享..

希望有人可以提供帮助。谢谢!

马可

【问题讨论】:

  • 您有没有想过 Drupal 为您提供了哪些值得为它的“可扩展性”路线付出所有努力的东西。

标签: php drupal


【解决方案1】:

a walkthrough to setup something like this。它旨在仅共享用户数据,但该原理可以扩展到或多或少的所有表。请注意,它在表前缀逻辑上使用“技巧”,不仅(或根本不)预先添加表名前缀,而且/仅使用点符号的数据库选择器,例如someDatabase.someTable。所以我不确定这将如何转化为 PostgreSQL 后端。此外,这意味着您仍然受限于单个数据库服务器,因为(AFAIK)没有机制可以在单个 Drupal 实例中使用两个不同的数据库连接。

作为替代方案,您可以尝试通过某种复制/镜像功能将共享表“映射”到不同的数据库实例中,从而从数据库引擎方面找到解决方案。这样您就可以使用标准的 Drupal 多站点设置,在 Drupal 的“背后”共享表。不过,不确定这将如何/是否会起作用,以及这会对锁定和其他并发问题产生什么影响。

【讨论】:

【解决方案2】:

这两个模块听起来可能会有所帮助(引用来自他们的项目页面):

  • Data

    数据模块可帮助您建模、管理和查询相关的表集。它提供了一个管理界面和一个用于操作表格和访问其内容的低级 API。数据模块提供用于显示表数据的视图集成和用于搜索表内容的 Drupal 搜索集成。

  • Table Wizard:

    表格向导有助于处理数据库表格:

    • 它允许通过 Views 2 显示 Drupal 默认数据库中的任何表。
    • 可以定义其管理的表之间的关系,从而可以构建组合表中数据的视图。
    • 它对其管理的表执行分析,报告空字段、数据范围、字符串长度范围等。
    • 它为其他模块提供了一个 API 来启用它们的表。
    • 它提供了一个 API,用于将数据导入 Drupal 默认数据库中的表(自动进行上述视图集成)。
    • 它与此 API 的实现捆绑在一起,用于导入逗号和制表符分隔的文件。

【讨论】:

    【解决方案3】:

    如果您使用 mysql 5+ mysql 视图是在 drupal 中跨多个站点共享数据的好方法。它不仅允许共享内容,而且各个站点也可以拥有自己的内容。 devbee tutorial on mysql views in drupal. 包含有关如何使用分类法实现它的详细教程。

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多