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