PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak udostępnić tabelę między wieloma bazami danych Postgresql

Tak, schematy są rozwiązaniem. Użyj jednego klastra PostgreSQL z jedną bazą danych.

Utwórz grupę dla wszystkich użytkowników aplikacji:

CREATE ROLE app;

Utwórz globalny schemat „aplikacji”, w którym będą znajdować się wszystkie globalne tabele współdzielonych aplikacji.

CREATE SCHEMA AUTHORIZATION app;
CREATE TABLE app.objects ( objectid int PRIMARY KEY );
ALTER TABLE app.objects OWNER TO app;

Utwórz osobnego użytkownika (bez uprawnień administratora) dla każdego z wdrożeń:

CREATE USER app01 IN ROLE app;
CREATE USER app02 IN ROLE app;

Opcjonalnie zamiast aplikacji IN ROLE app , możesz przyznać tym użytkownikom wyraźne uprawnienia do wybranych obiektów aplikacji:

GRANT USAGE ON SCHEMA app TO app01;
GRANT SELECT on app.objects TO app01;

Utwórz prywatne schematy, w których będą znajdować się tabele zależne od wdrożenia:

CREATE SCHEMA AUTHORIZATION app01; 
CREATE SCHEMA AUTHORIZATION app02;

Teraz masz prywatny schemat dla każdej wdrożonej aplikacji; ale jednocześnie masz współdzielony dostęp do danych globalnych.

Co miłe, aplikacja nie musi być świadoma schematów. SELECT * FROM froobles domyślnie zostanie rozwiązany na SELECT * FROM app01.froobles , jeśli jesteś połączony jako app01 użytkownik. Nie musisz podawać nazwy schematu.

Jako dodatkową miarę możesz użyć dziedziczenia tabeli, aby rozszerzyć globalne obiekty na podstawie wdrożenia:

CREATE TABLE app01.objects (
  localattr1 int,
  localattr2 text
)
INHERITS ( app.objects );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak monitorować PostgreSQL działający w kontenerze Dockera:część druga

  2. Jak używać Flask/Peewee z Heroku?

  3. Gęsta_ranking pierwsza konwersja Oracle do Postgresql

  4. Postgresql Drop View

  5. Jak wyświetlić każdą parę krotek tylko raz, niezależnie od kolejności kolumn w SQL i algebrze relacyjnej?