【问题标题】:PostGIS and PostgreSQL search pathPostGIS 和 PostgreSQL 搜索路径
【发布时间】:2013-08-25 13:37:12
【问题描述】:

我们最近在系统中添加了 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) 客户的 GIS 数据将有更大程度的分离,以及 2) 特定于租户的维护(备份、迁移等)会更容易。

【问题讨论】:

    标签: python django postgresql postgis geodjango


    【解决方案1】:

    这几乎没有意义,因为所有客户端的 PostGIS 对象都是相同的。如果每个客户端都安装一个单独的实例,会浪费大量磁盘空间,同时也会降低缓存效率。

    如果其他对象存在于某些客户不感兴趣的公共架构中,则可以选择将 PostGIS 安装到专用架构(如 postgis)并将其包含在 search_path 中。

    如果您真的想严格分离客户端,则必须为每个客户端创建单独的数据库甚至是数据库集群。

    【讨论】:

    • 是的。只有geometry_columns 表……它可以包含不同客户端的数据吗?
    • @Goro:不过,在单个表中移动不会改变在 search_path 中使用 PostGIS 模式的需要。您需要它来开始函数和运算符。顺便说一句,geometry_columns 是自 PostGIS 2.0 以来的一个视图。
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 2012-06-07
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多