3.3 Greenplum访问接口

Greenplum数据库采用和PostgreSQL相同的数据访问方式,并且可以完全复用PostgreSQL的客户端工具。Greenplum支持通过CLI、JDBC、ODBC等多种方式访问数据。Greenplum数据库默认的端口是5432。

说到客户端访问,这里需要介绍一下Greenplum的访问控制策略。Greenplum的外部访问控制是通过主节点Master实例下面的pg_hba.conf文件控制的。一般情况下该文件位于$GP_DATA/gpmaster/gpseg-1/pg_hba.conf。在文件后面添加规则实现访问控制。

例如允许gpadmin用户在192.168.1.x网段访问所有数据库,使用md5验证方式访问,则配置如下。

host     all         gpadmin      192.168.1.0/24      md5

3.3.1 CLI

CLI(Command Line Interface,命令行接口)底层是基于TCP进行通信的,通过psql命令运行。只需要在对应的服务器上安装PostgreSQL,并配置好环境变量,即可通过psql访问Greenplum数据库。访问方式和我们常用的MySQL命令类似。

建立数据库连接的命令格式如下。

psql -h 服务器 -U 用户名  -d 数据库 -p 端口号

输入上述命令后,继续输入密码,随后进入交互访问模式。

在一些特殊的场景下,例如通过shell脚本执行Greenplum数据库的存储过程,需要提前配置好Greenplum数据库的用户名和密码,这样命令行模式就可以跳过用户名和密码验证了。

Greenplum数据库的访问控制是通过执行用户的~/.pgpass文件实现的,配置文件必须是600权限,配置格式如下。

服务器:端口号:数据库:用户名:密码

命令行的常见命令如下。

1)列举数据库:\l。

2)选择数据库:\c数据库名。

3)查看该某个库中的所有表:\dt。

4)切换数据库:\c interface。

5)查看某个库中的某个表结构:\d 表名。

6)查看某个库中某个表的记录:select * from apps limit 1。

7)将aaa.sql导入当前数据库:\i aaa.sql。

8)显示字符集:\encoding。

9)退出psgl:\q。

3.3.2 JDBC

Greenplum数据库同时支持PostgreSQL和Greenplum两种JDBC驱动。

PostgreSQL模式的maven配置如下。

<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.1.4</version>
</dependency>

PostgreSQL模式的JDBC连接字符串配置如下。

jdbc.posgresql.driver=org.postgresql.Driver
jdbc.Posgresql.url=jdbc:postgresql://192.168.xx.xx:5432/数据库名称(即dbname)
jdbc.posgresql.user=账号
jdbc.posgresql.password=密码

Greenplum模式的maven配置如下。

<!-- greenplum -->
    <dependency>
      <groupId>com.huicai</groupId>
      <artifactId>greenplum</artifactId>
      <version>1.0</version>
    </dependency>

Greenplum模式的JDBC连接字符串配置如下。

jdbc.greenPlum.driver=com.pivotal.jdbc.GreenplumDriver
jdbc.greenPlum.url=jdbc:pivotal:greenplum://10.10.10.10:5432;DatabaseName=数据库
jdbc.greenPlum.username=gpadmin
jdbc.greenPlum.password=gpadmin

3.3.3 ODBC

在一些特殊的场景下,我们也会使用更加稳定高效的ODBC驱动来访问数据库,例如Tableau推荐使用ODBC。下面以Linux系统为例安装ODBC驱动。

#初始化ODBC管理器
yum install -y unixODBC.x86_64  
#安装PostgreSQL的ODBC驱动
yum install -y postgresql-odbc.x86_64 

配置ODBC驱动文件,在/etc/odbcinst.ini中加入如下代码。

# 设置unixODBC程序安装位置
[PostgreSQL]
Description     = ODBC for PostgreSQL
Driver          = /usr/lib/psqlodbcw.so
Setup           = /usr/lib/libodbcpsqlS.so
Driver64        = /usr/lib64/psqlodbcw.so
Setup64         = /usr/lib64/libodbcpsqlS.so
FileUsage       = 1

还需要在ODBC的连接信息文件/etc/odbc.ini中加入数据库连接信息,代码如下所示。

[Greenplum]
Description = Test to gp
Driver = PostgreSQL
Database = demoDB
Servername = gp-master
UserName = xxxx
Password = xxxx
Port = 5432
ReadOnly = 0