在Postgres数据库中的多个模式上安装hstore的最佳方法?

时间:2013-10-02 20:39:43

标签: postgresql hstore postgresql-extensions

我正在开发一个需要在多个模式上使用hstore的项目。 安装hstore扩展程序的“公共”架构并非随处可用,因为我的作用域不会在“公共”中查找。在一些试用版中,我在一个名为“hstore”的模式上创建了扩展,并在所使用的每个可用范围(搜索路径)上使用了模式。

基于此,我有一些问题:

  • 是否可以为扩展程序创建架构?或者,最好是在每个架构上创建扩展程序(例如,customer_1customer_2,等等......)

  • 在单独的架构中创建扩展是否会影响数据的存储位置?我正在使用多个模式来使备份/恢复更容易,并且实际上不希望pg将所有hstore数据存储在单个模式的隐藏表(如pg_large_objects for blobs)中

2 个答案:

答案 0 :(得分:7)

每个数据库不允许多次安装扩展。引用the manual on CREATE EXTENSION

  

请记住,扩展本身并不属于任何扩展   schema:extensions具有必须唯一的非限定名称   数据库范围内。但属于扩展的对象可以在模式中。

如果您不想在search_path中加入public,请将“公共”扩展名安装到专用架构中(例如:extensions)。我会为所有这些使用单个模式,而不是每个扩展的单独模式。 There are quite a few of them. CREATE EXTENSION提供了一个安装到您选择的现有架构的选项:

    CREATE EXTENSION hstore SCHEMA extensions;

并确保架构包含在可能想要使用它的search_path用户中。

数据存储完全不受扩展所在的架构的影响。

答案 1 :(得分:0)

尝试此操作在所有架构上安装扩展程序hstore

create extension hstore schema pg_catalog;