2013-08-22 216 views
0

我們最近在系統中添加了Geodjango和PostGIS。我發現PostGIS將自己安裝在public模式中。現在,我們正在使用的客戶端租賃PostgreSQL的模式,因此,例如客戶端A將有一個模式tenant_A,所以我們通常手動設置搜索路徑:PostGIS和PosgreSQL搜索路徑

SET search_path TO tenant_A; 

但由於PostGIS的生活在公衆的架構裏面,我現在就已經做到這一點:

SET search_path TO tenant_A, public; 

難道永遠做有意義的只是移動的PostGIS表 - 甚至只有geometry_columns表 - 成單獨的客戶端模式?這樣做的好處是:1)客戶的GIS數據將具有更大的分離度; 2)特定於租戶的維護(備份,遷移等)將更加容易。

回答

1

這很難講,因爲PostGIS對象對於所有客戶端都是一樣的。如果每個客戶端都安裝一個單獨的實例,則會浪費大量的磁盤空間,同時也會降低緩存效率。

如果其他對象存在於某些客戶端不感興趣的公共模式中,則可以選擇將PostGIS安裝到專用模式(如postgis),並將其包含在search_path中。

如果真要嚴格隔離的客戶,你必須創建單獨的數據庫或每個客戶端甚至是DB集羣。

+0

是的。那麼只有可以包含不同於客戶端到客戶端的數據的geometry_columns表格呢? – Goro

+0

@Goro:儘管在單個表格中移動並不會改變在'search_path'中需要有PostGIS模式。您首先需要它爲功能和操作員。順便說一句,['geometry_columns'](http://postgis.net/docs/using_postgis_dbmanagement.html#geometry_columns)是自PostGIS 2.0以來的一個視圖。 –