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

我正在开发一个需要在多个模式上使用hstore的项目.
安装hstore扩展的’public’模式在任何地方都不可用,因为我的范围不在’public’查找.在一些试用版中,我在名为“hstore”的模式上创建了扩展,并在所使用的每个可用范围(搜索路径)上使用了模式.

基于此,我提出了一些问题:

>是否可以为扩展名创建架构?或者,最好是在每个模式上创建扩展(例如,customer_1,customer_2等等)?
>在单独的模式中创建扩展是否会影响数据的存储位置?我正在使用多个模式来使备份/恢复更容易,并且实际上不希望pg将所有hstore数据存储在单个模式的隐藏表(如blob的pg_large_objects)中.

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

Remember that the extension itself is not considered to be within any
schema: extensions have unqualified names that must be unique
database-wide. But objects belonging to the extension can be within schemas.

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

CREATE EXTENSION hstore SCHEMA extensions;

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

> How does the search_path influence identifier resolution and the “current schema”

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

相关文章
相关标签/搜索