在PostGIS中使用公共模式以外的模式吗?


21

我目前正在Ubuntu上重新安装PostGIS 2.0.2和PostgreSQL 9.1.6。我最近遇到了一些 信息,表明使用公共架构存储所有数据不是一个好主意。

因此,我建立了一个名为data的架构,并让自己成为所有者,但这是一个好主意吗?

我担心的是:

  1. 除了设置所有者外,在创建新模式时(通过pgAdmin III),我可能还需要注意“权限”选项卡上的内容。
  2. 通过将数据存储在公共模式中并将所有数据转储到单独的模式中,然后再执行备份/还原,我可能不会获得相同的好处(使用ogr2​​ogr可以节省一些击键次数);和
  3. 我可能在新数据模式中没有默认的PostGIS表和视图(它们位于同一数据库的公共模式中)时遇到麻烦。


3
是的,它仍然有效。主要要点是它更清洁,因为您可以将用户数据与系统数据和功能分开。
约翰·鲍威尔,

我不是PostGIS用户,但我怀疑现在最好的答案是gis.stackexchange.com/a/270522/115,因此,如果您同意,我建议您将“接受”复选标记移到该位置。
PolyGeo

1
这个问题应该是两个问题。接受的答案不回答书面问题。这个问题应该是重新开放,因为它是不是这个问题,这是询问是否PostGIS的对象可以自己与不能在工作对象的副本public模式。另一个问题是关于将PostGIS扩展对象安装到除之外的其他模式中public。这是两件事!
肯尼·埃维特

Answers:


7

现在,可以在官方网站的标题为“ 将PostGIS扩展扩展到其他模式 ”的页面中解决此问题。正确的方法是将扩展安装到中public。这是唯一的选择。该扩展不再支持重定位。接下来是运行以下命令(从站点复制),

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

ALTER EXTENSION postgis 
  SET SCHEMA postgis;

2
不能按照书面回答问题。它应该是公认的答案。显然,这是在问“我的新data架构中没有默认的PostGIS表和视图(它们在public同一数据库中的架构中)”。这个答案很有用,这是我一直在寻找的东西,但它与问题没有直接关系。
肯尼·埃维特

20

在空间上启用PostGIS数据库时,根据您的声明,相关功能,SRS表和视图将放置在公共模式中。这并不意味着您所有或任何自己的空间表都必须位于同一公共架构中。PostGIS仍将适用于“新”模式中的所有空间数据。

实际上,我通常将应用程序专用表放在单独的架构中。这样,如果您需要升级到PostGIS的主要版本,则可以将特定于应用程序的表备份和还原作为与替换空间工具的过程不同的单独过程。

所以,我认为您做得不错。最后,如果您还没有这样做,最好将新的架构添加到搜索路径中:

ALTER DATABASE my_db SET search_path = gc, public;


谢谢马丁。这是否意味着我可以在“公共”以外的自定义模式中对表使用空间函数?
alextc 2014年

您如何将数据添加到另一个架构,即。不是public吗 用例如添加数据。shp2psqltest.table仍然把数据public
knutole

@knutole。如前所述,我使用ArcCatalog导入/新建要素类。我不确定是否可以使用shp2psql将数据添加到非public的自定义架构中。
alextc

1
这应该是公认的答案。
肯尼·埃维特

12
  1. 您可以使用模式构建的一种可能的组织策略之一是允许用户在一种模式中猖ramp运行,而又不能在另一种模式中犯规。因此,如果您想以这种方式使用架构,可以在pgAdmin的权限选项卡中完成。但这不是必需的,因此,如果您只想在多个模式之间维护相同的特权,那就很好。

  2. 根据您所链接的文章,将所有内容公开都存在的问题是,当您转储数据时,很可能将系统表和关系与数据混合在一起。如果将所有数据移动到新架构,则不必再担心这一点。

  3. 完全没有麻烦。(作为证明,请注意,要搜索SRS表时不必指定public.spatial_ref_sys。)


6

另一个提示(也许您已经遇到了这一点)。您可能需要将“数据”模式添加到用户的默认search_path。就像是:

ALTER USER <your_user_name> SET search_path=public,data,$USER; 

关于第2点,有时当您不再有权访问原始数据库时,需要还原。(这就是备份的原因之一...),因此您可能没有机会在实际需要时将数据移至单独的架构。


1

我们使用公共模式进行临时分析/开发人员表结果,然后进入组织更完善的模式(文件夹?)以永久使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.