文章目录
背景
PXF主要解决了异构数据库之间数据库的读写问题,而DBLink则聚焦于同构数据库,提供了一个同构数据库之间数据交换的通道。DBLink常用于不同Greenplum集群之间进行数据交换。
DBLink 简介
类似于Oracle的DBLink,PostgreSQL也提供不同数据库实例之间进行数据交互的工具,也叫作DBLink。Greenplum继承了这个功能。
DBLink是从PostgreSQL 8.3开始引入的扩展模块,Greenplum从5.0版开始提供对DBLink模块的支持。在PostgreSQL中,DBLink允许一个PostgreSQL数据库实例通过libpq协议连接到另外一个远程PostgreSQL实例,在同一个会话里(Session)通过UDF的方式对远程数据库进行查询、更新等操作。
因为DBLink是通过libpq连接远程数据库的,所以任何兼容当前数据库使用的libpq协议版本的远程数据库,都可以作为DBLink的目标数据库。对于PostgreSQL,高版本的客户端能够兼容低版本的服务器端,也就是说PostgreSQL 10中的DBLink可以正常访问PostgreSQL 8.3的数据库,反之不一定成立。Greenplum 5.x和Greenplum 6.x的DBLink只可以连接Greenplum数据库,无法连接PostgreSQL数据库。
对于Greenplum的DBLink,所有的数据库连接和请求都是通过主节点完成的,各个Segment实例不直接参与DBLink的工作。由于所有的工作都由主节点