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

idv4meu8  于 2022-12-29  发布在  PostgreSQL
关注(0)|答案(2)|浏览(279)

我正在处理一个需要在多个模式上使用hstore的项目。“public”模式,即安装hstore扩展的地方,并不是所有地方都可用,因为我的作用域没有在“public”上查找。在一些试验中,我在一个名为“hstore”的模式上创建了扩展,并在每个可用的作用域(搜索路径)上使用该模式。
基于此,我有几个问题:

  • 只为扩展创建一个模式可以吗?还是在每个模式(如customer_1customer_2等)上创建扩展更好?
  • 在一个单独的模式中创建扩展会影响数据的存储位置吗?我使用多个模式来使备份/恢复更容易,并且真的不希望pg将我所有的hstore数据存储在单个模式的一个隐藏表中(就像blob的pg_large_objects)。
lkaoscv7

lkaoscv71#

不允许对每个数据库多次安装扩展。引用the manual on CREATE EXTENSION
请记住,扩展本身不被视为在任何模式中:扩展具有非限定名称,这些名称必须在数据库范围内唯一。但是属于扩展的对象可以在架构内。
如果您不想在search_path中包含public,请将“公共”扩展安装到专用架构中(例如:我会对所有这些扩展使用一个模式,而不是对每个扩展使用一个单独的模式。
CREATE EXTENSION提供了一个选项,可以安装到您选择的现有架构:

CREATE EXTENSION hstore SCHEMA extensions;

并确保模式包含在可能要使用它的用户的search_path中。

  • search_path如何影响标识符解析和“当前模式”

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

e5nqia27

e5nqia272#

尝试在所有方案上安装扩展hstore

create extension hstore schema pg_catalog;

相关问题