PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да споделяте таблица между множество бази данни на Postgresql

Да, схемите са решението. Използвайте един PostgreSQL клъстер с една база данни.

Създайте група за всички потребители на приложението:

CREATE ROLE app;

Създайте глобална схема за „приложение“, където ще живеят всички глобални таблици на споделени приложения.

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

Създайте отделен потребител (без права на суперпотребител) за всяко от внедряванията:

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

По желание, вместо IN ROLE app , можете да предоставите изрични права на тези потребители върху избрани обекти на приложение:

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

Създайте частни схеми, където ще живеят зависещите от внедряването таблици:

CREATE SCHEMA AUTHORIZATION app01; 
CREATE SCHEMA AUTHORIZATION app02;

Сега имате лична схема за всяко разгърнато приложение; но в същото време имате споделен достъп до глобални данни.

Хубавото е, че приложението не трябва да е наясно със схемата. SELECT * FROM froobles по подразбиране ще разреши на SELECT * FROM app01.froobles , ако сте свързани като app01 потребител. Не е необходимо да посочвате име на схема.

Като допълнителна мярка можете да използвате наследяване на таблица за разширяване на глобални обекти на базата на всяко разполагане:

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. PG::Error:SELECT DISTINCT, ORDER BY изразите трябва да се появят в списъка за избор

  2. Импортиране на .csv с колона за време (dd.mm.yyyy hh.mm.ss) с помощта на psql \copy

  3. PostgreSQL:ролята не е разрешена за влизане

  4. Как мога да вмъкна клеймо с часова зона в postgresql с подготвен израз?

  5. Как да вмъкнете и изтриете данни в PostgreSQL