parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Так я с этим и не спорю...

Sumo 29.10 11:07 / 29.10 11:08

Отдельные базы чуть проще мигрировать между серверами. Но всё зависит от проекта.

Есть вариант вообще пользователей не раскидвать по базам и схемам, а иметь в каждой таблице id клиента. При необходимости шардировать по клиентам на множество серверов.

Если у нас клиент — это пользователь постгри, то у нас вообще есть множество вариантов без ручного управления search_path...

Можем назвать схему именем пользователя и тогда дефолтный search_path, который сожержит "$user" сразу сработает:
>show search_path;
   search_path   
-----------------
 "$user", public
(1 row)
Можем явно установить пути поиска для пользователя:
>alter user aquila2 set search_path = public,client,data;

И после нового логина будем сразу иметь хорошие пути:
>show search_path ;
       search_path       
-------------------
 public, client, data
(1 row)
А еще можем указывать схему пользователя явно в запросе:
  ^table:sql{
     select * from "$clientSchema".items;
  }
Если мы живём без pgBouncer'а, то можно search_path сразу в строке соединения передать:
pgsql://user@127.0.0.1:5432?standard_conforming_strings=1&options=--search_path%3dclient_schema_name,public,data
Вот такой набор получается в дополнение к application_name, схемам драйверов и даже хаком в standard_conforming_strings. :)