2016-08-09 28 views
1

sagen, ich habe die folgende Datenbank hostetKann ich die Tabelle einer anderen Datenbank in postgresql verwenden und trotzdem einen Eindruck gewinnen, dass die Tabelle in derselben Datenbank existiert?

  1. core (host: a.b.c.d, dbaname: core, Benutzername: coreUser) mit Tabellen users, accounts und permissions
  2. app1 (host: d.e.f.g, DB-Name: appdb1, Benutzername : appuser1)
  3. app2 (host: h.i.k.l, dbname: appdb2, username: appuser2)

Ich möchte core.users, core.accounts und core.permissions als native Tabellen auf app1 und app2 zur Verfügung stehen. Ich möchte in der Lage sein, die exakte Tabelle zu spiegeln, und die Einfügungen und Aktualisierungen dieser Tabellen sollten die Tabellen in der core aktualisieren. Gibt es eine Möglichkeit, dies zu tun?

Antwort

2

postgres_fdw kann die Arbeit erledigen.

postgres_fdw Das Modul stellt die fremden Daten wrapper postgres_fdw, die verwendet werden können, Daten, die in externen PostgreSQL Servern gespeichert sind.

Die Funktionalität, die von diesem Modul vorgesehen überlappt im Wesentlichen mit der Funktionalität des älteren dblink Moduls. Aber postgres_fdw bietet transparentere und standardkonforme Syntax für den Zugriff auf entfernte Tabellen und kann in vielen Fällen eine bessere Leistung bieten.

FDW wie Sie wissen, steht für Fremddaten Wrapper, es wird verwendet, um externe Datenquellen an postgresql zu verbinden. In diesem Fall ist die externe Datenquelle eine weitere postgrsql-Datenbank.

1

Ja, haben Sie einen Blick auf slony replication.

Wenn Sie keine Daten kopieren möchten dann dblink extension könnte Ihnen helfen. Es ermöglicht Abfragen von einer Datenbank auf andere zu rufen. Kombiniert mit einer Funktion oder einer Ansicht könnte möglicherweise nützlich sein (obwohl Änderungen an core nicht automatisch in "Kind" -Datenbanken widergespiegelt werden).