Путь поиска PostGIS и PostgreSQL

Недавно мы добавили в систему Geodjango и PostGIS. Я вижу, что PostGIS устанавливает себя в схеме public. Теперь мы используем схемы PostgreSQL для аренды клиента, поэтому, например, клиент A будет иметь схему tenant_A, поэтому мы обычно задаем путь поиска вручную:

SET search_path TO tenant_A;

Но поскольку PostGIS находится внутри общедоступной схемы, теперь мне придется сделать следующее:

SET search_path TO tenant_A, public;

Будет ли когда-нибудь иметь смысл просто переместить таблицы PostGIS — или даже только таблицу geometry_columns — в отдельные клиентские схемы? Преимущество этого будет заключаться в том, что 1) данные ГИС клиентов будут иметь большую степень разделения и 2) обслуживание конкретного арендатора (резервное копирование, миграция и т. д.) будет проще.


person Goro    schedule 22.08.2013    source источник


Ответы (1)


Вряд ли это имело бы смысл, поскольку объекты PostGIS одинаковы для всех клиентов. Если каждый клиент устанавливает отдельный экземпляр, вы теряете много места на диске, а также снижаете эффективность кэширования.

Если в общедоступной схеме находятся другие объекты, которые не представляют интереса для некоторых клиентов, можно установить PostGIS в выделенную схему, например postgis, и включить ее в search_path.

Если вы действительно хотите строго разделить клиентов, вам придется создать отдельные базы данных или даже кластер базы данных для каждого клиента.

person Erwin Brandstetter    schedule 22.08.2013
comment
Истинный. А как насчет только таблицы геометрии_columns... которая может содержать данные, которые отличаются от клиента к клиенту? - person Goro; 22.08.2013
comment
@Goro: Однако перемещение по одной таблице не изменит необходимости иметь схему PostGIS в вашем search_path. Он нужен для функций и операторов для начала. Кстати, geometry_columns — это представление начиная с PostGIS 2.0. - person Erwin Brandstetter; 22.08.2013