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

Gre*_*ski 10 postgresql hstore postgresql-extensions

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

基于此,我有一些问题:

  • 是否可以为扩展创建架构?或者是它更好地在每一个方案中创建的扩展(如,customer_1,customer_2,等...)?

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

Erw*_*ter 8

每个数据库不允许多次安装扩展.引用手册CREATE EXTENSION:

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

如果您不想包含public在您的中search_path,请将"公共"扩展安装到专用模式中(例如:) extensions.我会为所有这些使用单个模式,而不是每个扩展的单独模式.其中有不少. CREATE EXTENSION提供安装到您选择的现有架构的选项:

    CREATE EXTENSION hstore SCHEMA extensions;
Run Code Online (Sandbox Code Playgroud)

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

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