Общие таблицы Drupal, но из другой базы данных - PullRequest
3 голосов
/ 16 ноября 2009

У меня есть 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 сайтов ... Многие из этих таблиц могут быть общими ..

надеюсь, кто-то может помочь. спасибо!

Marco

Ответы [ 3 ]

2 голосов
/ 16 ноября 2009

Существует пошаговое руководство для настройки что-то вроде этого . Он направлен на совместное использование только пользовательских данных, но этот принцип может быть распространен на более или менее все таблицы. Обратите внимание, что он использует «трюк» в логике префикса таблицы, добавляя не только (или вовсе не) префикс имени таблицы, но также / / только селектор базы данных с использованием точечной нотации, например, someDatabase.someTable. Так что я не уверен, как это будет переводиться в бэкэнд PostgreSQL. Кроме того, это означает, что вы по-прежнему ограничены одним сервером базы данных, поскольку (AFAIK) нет механизма для использования двух разных подключений к базе данных в одном экземпляре Drupal.

В качестве альтернативы вы можете попытаться найти решение со стороны механизма базы данных, «сопоставив» ваши совместно используемые таблицы с различными экземплярами базы данных с помощью некоторой функции репликации / зеркалирования. Таким образом, вы можете использовать стандартную многосайтовую настройку Drupal, делая совместное использование таблиц «за спиной» Drupal. Не уверен, как / если это будет работать и как это повлияет на блокировку и другие проблемы параллелизма.

1 голос
/ 18 ноября 2009

Эти два модуля звучат так, как будто они могут помочь (цитаты взяты из страниц их проектов):

  • Данные :

    Модуль данных помогает моделировать, управлять и запрашивать связанные наборы таблиц. Он предлагает интерфейс администрирования и API низкого уровня для управления таблицами и доступа к их содержимому. Модуль данных обеспечивает интеграцию Views для отображения данных таблицы и интеграцию поиска Drupal для поиска содержимого таблицы.

  • Мастер таблиц :

    Мастер таблиц облегчает работу с таблицами базы данных:

    • Это позволяет всплывать в любой таблице в базе данных по умолчанию на Drupal через Views 2.
    • Можно определить отношения между таблицами, которыми он управляет, поэтому можно составить представления, объединяющие данные в таблицах.
    • Выполняет анализ таблиц, которыми управляет, сообщает о пустых полях, диапазонах данных, диапазонах длин строк и т. Д.
    • Он предоставляет API для других модулей для включения просмотра их таблиц.
    • Предоставляет API для импорта данных в таблицы в базе данных по умолчанию на Drupal (автоматически выполняется интеграция представлений выше).
    • Он поставляется с реализацией этого API для импорта файлов с разделителями-запятыми и табуляцией.
0 голосов
/ 18 ноября 2009

Если вы используете mysql 5+, mysql views - это хороший способ обмена данными между несколькими сайтами в drupal. Это не только позволяет иметь общий контент, но отдельные сайты могут иметь собственный контент. учебник devbee по представлениям mysql в drupal. содержит подробное руководство по его реализации с использованием таксономии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...