Website mit 2. database
Eingetragen von michaelkurt (47)
am 02.04.2017 - 08:55 Uhr in
am 02.04.2017 - 08:55 Uhr in
Hallo Forum,
ich finde immer wieder Beitraege, bei denen von 2. Database fuer eine Webseite gesprochen wird. Wann und wie benutzt man diesen? ... wenn ich beispielsweise einen getrennten Datensatz User moechte ? ... d.h. im 2. Datensatz sind nur die User ?
Danke.
- Anmelden oder Registrieren um Kommentare zu schreiben
Es gibt Software, die mit
am 02.04.2017 - 18:44 Uhr
Es gibt Software, die mit Drupal zusammenarbeitet, aber eine eigene Datenbank benötigt. Ein Beispiel wäre CIVICRM.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Ein zusätzlicher
am 03.04.2017 - 07:04 Uhr
Ein zusätzlicher Anwendungsfall sind Migrationen. So kannst du mit dem Migrate Modul beispielsweise Datensätze aus älteren Drupalversionen oder anderen Datenbanken (alte CMS Datenbank) migrieren. Hierfür braucht es dann die zweite Datenbankverbindung.
Desweiteren kann jeder Query in Drupal mit einem Target spezifiziert werden. So können bestimmte Datenbankabfragen an eine andere Datenbank gesendet werden, beispielsweise zur Umsetzung einer Master-Slave Architektur (sic!).
Eine Aufsplittung innerhalb der Drupal-Installation wie "User von einer anderen Datenbank laden" ist nicht ohne weiteres möglich.
Danke fuer Euere Antworten.
am 05.04.2017 - 20:41 Uhr
Danke fuer Euere Antworten.
Geht schon ....
am 08.04.2017 - 10:14 Uhr
Also man kann in D7 beliebige viele Datenbanken verwenden, die alle über die D7 API angesprochen werden können. Allerdings musst Du die dazu gehörigen Querys selber zusammenbauen bzw. über die API-Classe generienren lassen. Das ist nicht gerade trivial.
Ich habe das mal gemacht um bei einem Projekt die CMS-Daten von den Nutzdaten (z.B. die WWS-Daten ...), zu trennen. Dazu habe ich dann allerdings auch gleich ein kleines Modul geschrieben welches mir das ganze Handling entsprechend gekapselt hat (Aufwand ca. 5 Tage).
Der Einstig in den Tripp sieht ungefär so aus...
Settings.Php (2. Datenbank anbinden):
$databases = array (
'default' => array (
'default' => array (
'database' => 'd7_preview',
'username' => 'root',
'password' => 'hansi',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
'nutzdaten_db' => array (
'default' => array (
'database' => 'nutzdaten_preview',
'username' => 'root',
'password' => 'gretel',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
'scripts' => 'ok',
),
),
);
Wechseln kann man die Datenbank dann mit:
db_set_active( "nutzdaten_db" );
.
.
.
Allerdings sollte dann alles innerhalb der Datenbank mit den Drupal-API Funktionen erledigt werden. Das begint mit der Erzeugung der Tabellen und endet bei den Transaktionen.
Auch auf Drush-Ebene kann man die Datenbanken gezielt ansprechen:
drush sqlc --database=nutzdaten_db
(Ohne den Parameter greift Drush immer auf 'default' zu).
Alternativ dazu könnte man mySQL (oder was auch immer) direkt ansprechen. Dabei handelt man sich aber mMn. noch mehr Probleme ein, da man dadurch keine einheitliche API mehr hat um die Datenbanken um zu schalten was speziell beim Transaktions-Handling wichtig wird.
Wenn es dir jedoch nur darum geht z.B. die D7-User oder einen einzelnen Content-Type in eine andere Datenbank zu verlegen, kannst Du das nach meinem Kentnisstand vergessen.
Weitere Gründe sind Performance oder Anbindung von Fremddaten
am 07.04.2017 - 10:57 Uhr
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Danke fuer Euere Antworten -
am 08.04.2017 - 07:25 Uhr
Danke fuer Euere Antworten - ich sehe schon, das ist diffiziler, als ich es mir gedacht habe. Werde das Theme zunaechst einmal abhaken muessen.
Nochmals vielen Dank!