标签: postgres-fdw

通过 sshtunel 使用 postgres_fdw

可以使用 postgres_fdw 通过 ssh 隧道连接吗?

该数据库只能从数据库服务器访问,我需要从另一台远程服务器加入。数据库服务器使用 SSH 密钥登录。

如果可以的话请问如何做?

ssh-tunnel postgres-fdw

7
推荐指数
1
解决办法
1052
查看次数

postgres_fdw:可以将数据推送到外部服务器进行加入吗?

假设我有一个类似的查询

select * from remote_table
   join local_table using(common_key)
Run Code Online (Sandbox Code Playgroud)

其中 remote_table 是一个FOREIGN TABLEwithpostgres_fdw并且local_table是一个普通表。

local_table小(100 行)和remote_table大(数百万行)。

看起来远程表被整体拉取并在本地加入,此时将较小的表发送到远程服务器并远程加入会更有效。

有没有办法让 postgres_fdw 做到这一点?

postgresql postgres-fdw postgresql-10

7
推荐指数
1
解决办法
447
查看次数

Postgres:在 FOREIGN TABLE 上触发

我想在我的数据库中使用postgres_fdw和存放 a FOREIGN TABLE。是否可以在本地服务器上定义一个触发器FOREIGN TABLE来识别INSERT远程服务器上的事件。如果是这样,请提供一个例子。


数据流:

  1. 将数据插入远程服务器上的表中。
  2. 识别触发触发器的本地服务器的外部表上的插入。
  3. 触发器函数将数据写入其他表。
  4. 写入成功后,回发到外部表

想法作为一个粗略的图表:


未报告错误,但对 table_b 的写入似乎不成功。

这是我尝试过的:

CREATE FOREIGN TABLE x.table_a   -- note the foreign table is in a different schema than the local table
( id        BIGINT           NOT NULL                   
, data_ts   TIMESTAMPTZ      DEFAULT CURRENT_TIMESTAMP
, xchg_ts   TIMESTAMPTZ      DEFAULT NULL
)
SERVER remote_server
OPTIONS (schema_name 'schema_a', table_name 'table_a')
;

CREATE TABLE y.table_b
( xchg_id    BIGINT
, error_msg  TEXT DEFAULT NULL
);
Run Code Online (Sandbox Code Playgroud)
CREATE OR REPLACE FUNCTION …
Run Code Online (Sandbox Code Playgroud)

postgresql database-trigger postgres-fdw

7
推荐指数
1
解决办法
1796
查看次数

创建指向视图的外表

是否可以使用Postgres Foreign Data Wrapper创建一个指向视图而不是表的外表?

postgresql postgres-fdw

6
推荐指数
2
解决办法
4744
查看次数

在外表PostgreSQL上创建索引

我使用postgres_fdw在两个数据库之间创建链接.然后我设置外部表并从外表执行一些插入到我的实时表.我注意到它需要相当长的时间,因为它们没有索引.

你可以在外表上创建一个索引,它是标准的吗?

CREATE INDEX ON foreign_table_name (column)?  
Run Code Online (Sandbox Code Playgroud)

postgresql indexing postgres-fdw

6
推荐指数
1
解决办法
3508
查看次数

postgres_fdw无法连接到Amazon RDS上的服务器

我在RDS中有两个Postgres 9.3.5实例,它们都在一个安全组中,该实例允许安全组中的所有入站流量和所有出站流量。我试图建立一个数据库,以便能够通过postgres_fdw从另一个表中选择几个。

我已经创建了服务器-

create server master 
foreign data wrapper postgres_fdw 
OPTIONS (dbname 'main', 
         host 'myinstance.xxxxx.amazonaws.com');
Run Code Online (Sandbox Code Playgroud)

以及必要的用户映射和外部表-

create foreign table condition_fdw (
    cond_id integer,
    cond_name text
) server master options(table_name 'condition', schema_name 'data');
Run Code Online (Sandbox Code Playgroud)

然而,一个简单的select count(*) from condition_fdw给我

ERROR:  could not connect to server "master"
DETAIL:  could not connect to server: Connection timed out
        Is the server running on host "myinstance.xxxxxx.amazonaws.com" (xx.xx.xx.xx) and accepting
        TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)

我可以通过psqlEC2实例连接到两个数据库。我知道直到最近RDS才不支持postgres_fdw,但我正在运行支持的新版本。

在创建服务器语句中,我尝试用其解析为的IP地址替换“ myinstance.xxxxxx.amazonaws.com”,但不走运。

有任何想法吗?

进一步测试

我在具有相同安全组的ec2实例上安装了postgres,主服务器的外部表的行为符合预期。

同一RDS实例上的数据库之间的postgres_fdw有效。

这一切使我认为Postgres RDS实例上来自postgres_fdw的传出连接一定有问题。

postgresql amazon-web-services amazon-rds postgres-fdw

5
推荐指数
1
解决办法
3251
查看次数

我可以为外表更改SERVER吗?

根据DOC,我不能这样做.但完全重新创建表格迫使我做大量工作而不是简单:

ALTER FOREIGN TABLE table_name ALTER SERVER new_server_name;
Run Code Online (Sandbox Code Playgroud)

postgresql postgres-fdw

5
推荐指数
1
解决办法
1415
查看次数

使用 Spring Boot 和 mongodb 运行 camunda

有没有人能够让 Camunda 与 Spring Boot 和 mongodb 一起运行?

我尝试了几种方法,但总是陷入一堵砖墙。

我试过的:

1. jpa/hibernate-ogm

在创建我自己的CamundaDatasourceConfigurationProcessEngineConfigurationImpl. 当 Camunda 尝试获取表元数据时失败。我无法阻止这种行为。

2. mongo 的 jdbc 驱动程序

通过 progress设置了 jdbc url 和驱动程序类。Camunda 然后在启动过程中卡住,并没有达到 Jetty 完全启动的程度,即日志中的“ Jetty 在端口 XYZ 上启动”消息。

3.带有mongo FDW的带有postgres的camunda

FDW是一种用于 postpress 接口外部数据源的机制。通过这种方式,应用程序可以通过 jdbc 使用 postgres,而 FDW 将负责读取和写入外部源的日期,无论是文件、mongodb 等。

在意识到 1 和 2 不起作用后,我开始研究 3。

有没有人成功做到这一点,可以分享如何?

mongodb camunda spring-boot postgres-fdw

5
推荐指数
1
解决办法
1242
查看次数

使用 postgresql_fdw 导入外部类型

我有一个具有自定义类型的数据库,无法使用“ IMPORT FOREIGN SCHEMA public FROM SERVER replica_db1 INTO db1since”导入CREATE FOREIGN TABLE失败。如何导入自定义类型?另外,自定义类型是从公共模式引用的,如何将其更改为使用本地服务器的模式?

reporting=> IMPORT FOREIGN SCHEMA public FROM SERVER replica_db1 INTO db1;
ERROR:  type "public.custom_type" does not exist
LINE 8:   start public.custom_type OPTIONS (column_name 'start'),
                ^
QUERY:  CREATE FOREIGN TABLE table1 (
  id bigint OPTIONS (column_name 'id') NOT NULL,
  start public.custom_type OPTIONS (column_name 'start'),
  "end" public.custom_type OPTIONS (column_name 'end')
) SERVER replica_db1
OPTIONS (schema_name 'public', table_name 'table1');
CONTEXT:  importing foreign table "table1"
reporting=> IMPORT FOREIGN TYPE public …
Run Code Online (Sandbox Code Playgroud)

postgresql postgres-fdw

5
推荐指数
1
解决办法
1820
查看次数

DBLINK 与 Postgres_FDW,哪一个可以提供更好的性能?

我有一个用例将数据分布在许多服务器上的许多数据库中,所有数据都在 postgres 表中。从任何给定的服务器/数据库,我可能需要查询另一个服务器/数据库。查询非常基本,标准选择在标准字段上使用 where 子句。

我目前已经实现了 postgres_FDW,(我使用的是 postgres 9.5),但我认为查询没有使用远程数据库上的索引。对于这个用例(一个随机节点可能会查询 N 个其他节点),根据每个底层引擎的实际执行方式,这可能是我的最佳性能选择?

postgresql dblink postgres-fdw

4
推荐指数
2
解决办法
8200
查看次数