`
weitao1026
  • 浏览: 1058294 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Greenplum数据库的dblink功能之搭建

 
阅读更多

1、什么是dblink
    dblink是一个PostgreSQL contrib模块,允许对另一个数据库执行查询。
  当前PostgreSQL的模型需要用户连接到一个特定的数据库服务器上。因此,它本身是不可能对另一个数据库执行SQL查询。
  通常我们不鼓励使用dblink查询远程数据库。
  我们总是建议用户使用模式。但有时,这也许还不够。
    不管怎样,这篇文章向您展示如何PostgreSQL和Greenplum是相关的。


2、准备: 
   greenplum数据库:
   检查环境:看是否已经安装了,如果已经安装了,直接跳到第4步。
   gpadmin@linux-hd1:~> pg_config --pkglibdir
   /usr/local/greenplum-db/lib/postgresql/
   
   然后在上边这个目录里检查一下各个节点主机的是否安装。(all_host:包含你所有主备用控制节点和数据节点)
   gpadmin@linux-hd1:~> gpssh -f all_host 'll /usr/local/greenplum-db/lib/postgresql/dblink.so'
   
    1、主节点上没有,其他节点上有的,建议重新安装DBLINK组件
    2、主节点上有,其他节点上没有的,将主节点上的文件复制到其他节点上。
   
  
3、安装dblink组件
   
   postgressql8.2版本的源代码:(建议使用8.2的版本,9.2版本在编码的时候报错,提示少文件)
   下载地址:http://www.postgresql.org/ftp/source/v8.2.23/
   
   上传到GREENPLUM数据库主节点上,如:上传至/home/gpadmin
   
   *解压缩
   gpadmin@linux-hd1:~> tar vxf postgresql-8.2.23.tar.gz
   
   *进入dblink目录:
   gpadmin@linux-hd1:~> cd /home/gpadmin/postgresql-8.2.23/contrib/dblink/
   
   *编辑 Makefile,在第PG_CPPFLAGS语句后面加上-w(通常是在第4行,作用是忽略警告),修改后如下:
   
    PG_CPPFLAGS = -I$(libpq_srcdir) -w
    
   *编译代码
   gpadmin@linux-hd1:~/postgresql-8.2.23/contrib/dblink> make USE_PGXS=1 install
sed 's,MODULE_PATHNAME,$libdir/dblink,g' dblink.sql.in >dblink.sql
gcc -m64 -O3 -funroll-loops -fargument-noalias-global -fno-omit-frame-pointer -g -finline-limit=1800 -std=gnu99  -Wall -Wmissing-prototypes -Wpointer-arith  -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -I/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/include -Werror -fpic -I/usr/local/greenplum-db-4.2.2.4/include -w -I. -I/usr/local/greenplum-db-4.2.2.4/include/postgresql/server -I/usr/local/greenplum-db-4.2.2.4/include/postgresql/internal -D_GNU_SOURCE  -I/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/include -I/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/include/libxml2  -c -o dblink.o dblink.c
gcc -m64 -O3 -funroll-loops -fargument-noalias-global -fno-omit-frame-pointer -g -finline-limit=1800 -std=gnu99  -Wall -Wmissing-prototypes -Wpointer-arith  -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -I/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/include -Werror -fpic -shared  dblink.o  -L/usr/local/greenplum-db-4.2.2.4/lib -L/usr/local/greenplum-db-4.2.2.4/lib -L/usr/local/greenplum-db-4.2.2.4/lib -L/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/lib -L/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/lib -lpq -Wl,-rpath,'/usr/local/greenplum-db-4.2.2.4/lib',--enable-new-dtags -o dblink.so
/bin/mkdir -p '/usr/local/greenplum-db-4.2.2.4/lib/postgresql'
/bin/sh /usr/local/greenplum-db-4.2.2.4/lib/postgresql/pgxs/src/makefiles/../../config/install-sh -c -m 755  dblink.so '/usr/local/greenplum-db-4.2.2.4/lib/postgresql/dblink.so'
/bin/sh /usr/local/greenplum-db-4.2.2.4/lib/postgresql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./uninstall_dblink.sql '/usr/local/greenplum-db-4.2.2.4/share/postgresql/contrib'
/bin/sh /usr/local/greenplum-db-4.2.2.4/lib/postgresql/pgxs/src/makefiles/../../config/install-sh -c -m 644 dblink.sql '/usr/local/greenplum-db-4.2.2.4/share/postgresql/contrib'
/bin/sh /usr/local/greenplum-db-4.2.2.4/lib/postgresql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./README.dblink '/usr/local/greenplum-db-4.2.2.4/doc/postgresql/contrib'
   
   *分发dblink.so到各台主机的指定目录下:
  
   注意下边这个/home/gpadmin/host_all文件里要包含你所有的主用备用控制节点和数据节点
   gpadmin@linux-hd1:~/postgresql-8.2.23/contrib/dblink> gpscp -f all_host dblink.so =:/usr/local/greenplum-db/lib/postgresql/dblink.so
   
4、创建dblink相关的系统函数:注意这个my_db是你的本地数据库名。
   gpadmin@linux-hd1:~> psql -f dblink.sql my_db
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
REVOKE
REVOKE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE TYPE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
   
5、测试dblink
  
  *如果是在一个数据库实例里,可以不用写远程主机、用户名密码等。
  *myconn是一个描述符号
  *dbname=bi:是数据库连接串。本地可以这样写,远程得写成hostaddr=***.***.***.*** port=5432 dbname=*** user=*** password=***
  *insert * from select语句不能使用myconn 得写数据库连接串
  
gpadmin@linux-hd1:~> psql my_db
psql (8.2.15)
Type "help" for help.

my_db=# \l
                 List of databases
  Name    |  Owner  | Encoding |  Access privileges  
-----------+---------+----------+---------------------
bi        | gpadmin | UTF8     | 
createdb  | gpadmin | UTF8     | 
my_db     | gpadmin | UTF8     | 
postgres  | gpadmin | UTF8     | 
template0 | gpadmin | UTF8     | =c/gpadmin          
                               : gpadmin=CTc/gpadmin
template1 | gpadmin | UTF8     | =c/gpadmin          
                               : gpadmin=CTc/gpadmin
(6 rows)

my_db=# select dblink_connect('myconn','dbname=bi');
dblink_connect 
----------------
OK
(1 row)
my_db=# select dblink_connect('myconn','dbname=bi');
ERROR:  duplicate connection name
my_db=# select * from dblink('myconn','select * from public.a');
ERROR:  a column definition list is required for functions returning "record"
LINE 1: select * from dblink('myconn','select * from public.a');
                     ^
my_db=# select * from dblink('myconn','select * from public.a') AS t1(v varchar) LIMIT 5;
v  
----
3
21
41
4
11
(5 rows)

my_db=# select * from dblink('myconn','select * from public.a') AS t1(v1 varchar);
v1 
----
1
31
2
3
21
41
4
11
(8 rows)

my_db=# insert into public.ab select * from dblink('myconn','select * from public.a') AS t1(v1 varchar);
ERROR:  could not establish connection  (entry db linux-hd1:5432 pid=6389)
DETAIL:  missing "=" after "myconn" in connection info string
my_db=# insert into public.ab select * from dblink('dbname=bi','select * from public.a') AS t1(v1 varchar);
INSERT 0 8
my_db=# select * from public.ab
my_db-# ;
v1 
----
21
4
1
3
41
31
2
11
(8 rows)

my_db=# 

至此结束。

分享到:
评论

相关推荐

    Greenplum数据库文档(中文版)

    该文档不仅内容详尽且易于理解,还特别注重实用性,旨在帮助用户更好地了解并运用Greenplum数据库的各项功能。 #### 文档来源与版本差异 文档的源码同时被Greenplum数据库和PivotalGreenplum数据库所共享。这意味着...

    GreenPlum数据库.ppt

    总结,GreenPlum数据库以其独特的MPP架构、高效的数据分布策略、并行处理能力和集成的MapReduce功能,为企业提供了一种强大、可扩展的大数据解决方案。通过合理利用GreenPlum,企业可以应对大数据挑战,实现高效的...

    greenplum数据库jdbc驱动下载

    "greenplum-jdbc-5.1.4.jar"是Greenplum数据库的JDBC驱动程序的一个版本,用于在Java环境中与Greenplum进行通信。 **Greenplum数据库** Greenplum是由Pivotal Software开发的一个高度可扩展的、并行处理的数据库...

    GREENPLUM数据库参考文件

    在GREENPLUM数据库中,用户有时需要实现跨数据库的数据查询,类似于Oracle的DBLINK功能。虽然GREENPLUM本身不直接支持这种特性,但通过利用WEB EXTERNAL TABLE,我们可以间接实现跨数据库查询。以下是一个详细的过程...

    Greenplum 数据库最佳实践

    它由Greenplum公司开发,现在是Pivotal软件公司的产品之一。Greenplum具备处理PB级别数据的能力,支持复杂的查询,并能通过并行化技术有效提升查询性能。掌握Greenplum数据库的最佳实践是确保数据库集群高效运行的...

    Greenplum 数据库基础培训V1.2

    一个还比较不错的greenplum数据库基础培训,中文版本

    Greenplum数据库开发基础.pptx

    Greenplum数据库开发基础 Greenplum数据库是一种Massively Parallel Processing(MPP)架构的数据库管理系统,适用于大规模数据处理和分析。下面是Greenplum数据库开发基础的知识点摘要: 1. Greenplum数据库概述...

    greenplum数据库安装文档.docx

    greenplum数据库安装文档

    Greenplum 数据库最佳实践.pdf

    "Greenplum 数据库最佳实践" 本文总结了 Greenplum 数据库的最佳实践...通过正确地设计数据模型、选择合适的存储模式、配置压缩和分布策略、正确地管理内存和使用分区功能,可以提高 Greenplum 数据库的性能和可靠性。

    greenplum数据库 v5.8.1

    MPP(Massively Parallel Processing)架构是Greenplum的核心特性之一,它将大型数据集分散在多个节点上,每个节点都有自己的内存和磁盘空间,通过高速网络进行通信。这种架构允许数据并行处理,显著提升了大数据...

    Greenplum数据库巡检报告1

    绿盟Greenplum数据库巡检报告是对数据库健康状况和运行环境进行系统性检查的重要文档,旨在确保数据库高效、稳定地运行。以下将详细介绍报告中提到的关键知识点: 1. **查看集群当前系统时间**: 系统时间是操作...

    开源大数据引擎:分布式Greenplum数据库内核分析

    Greenplum的核心优势之一是其SQL执行过程,它通过优化查询执行计划来实现高效的数据处理。这包括负载数据加载、近实时数据加载、混合存储引擎(支持行存和列存)以及对SQL 2003 OLAP的扩展支持。此外,它支持多种...

    greenplum数据库学习资料

    3. 使用手册:使用手册详尽地介绍了Greenplum的各种功能和使用技巧,包括数据导入导出、性能调优、安全设置等。 四、GP培训-1 "GP培训-1"可能是系列培训材料的一部分,可能涵盖了基础理论、实践操作和案例分析等...

    Greenplum数据库基础培训.pptx

    Greenplum数据库是一种基于PostgreSQL 8.2的海量并行处理(Massively Parallel Processing, MPP)数据库管理系统,特别设计用于数据仓库和商业智能(BI)应用。它继承了PostgreSQL的客户端功能,并增加了对并行处理和...

    GreenPlum数据库详细安装过程.docx

    1.1. GreenPlum数据库概述 1 1.2. GreenPlum数据库架构原理 1 2. SUSE Linux Enterprise 11 64-bit操作系统安装过程 2 2.1. 初始化阶段 2 2.2. 系统分区 4 2.3. 软件选择和系统任务 12 2.4. 语言选择 14 2.5....

    greenplum.jar(gp数据库驱动jar包)

    首先,我们来了解 `greenplum.jar` 的基本功能。这个 jar 包包含了 JDBC(Java Database Connectivity)驱动,JDBC 是 Java 语言访问数据库的标准 API,它允许 Java 程序通过 JDBC 驱动与各种数据库建立连接,执行 ...

    Greenplum数据库使用总结(5.11版本).pdf

    Greenplum是一个基于MPP(大规模并行处理)架构的开源分布式数据库系统,它提供了高度的可扩展性、可靠性以及与其他数据仓库解决方案相比成本效益高的特性。Greenplum适用于需要处理大量数据的决策支持系统,特别是...

    Greenplum数据库调优1

    《Greenplum数据库调优1》 在大数据处理领域,Greenplum数据库因其高效的数据处理能力和优秀的并行计算性能而受到广泛关注。然而,为了确保其性能最大化,数据库调优是必不可少的一环。本文将深入探讨Greenplum...

    greenplum创建dblink包postgresql-8.3.23.tar.gz

    在Greenplum 4.3版本中,虽然它本身不直接包含dblink模块,但我们可以通过引入PostgreSQL的贡献包`postgresql-8.3.23.tar.gz`来实现这个功能。这个压缩包包含了PostgreSQL的源代码,包括dblink模块。以下是创建和...

    Greenplum 数据库架构分析及CTE实现_杨瑜@Pivotal.pdf

    Greenplum数据库是一种大规模并行处理(MPP)数据库,专门为数据仓库和大数据分析工作负载而设计。它支持标准的SQL语言,并遵守ANSISQL2008标准,具备OLAP功能,同时兼容JDBC和ODBC接口。Greenplum的核心特性是其...

Global site tag (gtag.js) - Google Analytics