如何连接到HybridDB(Greenplum)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 云数据库 HybridDB 基于开源数据库Greenplum Database,而Greenplum 基于 PostgreSQL 8.2 分支开发,完整兼容其消息协议。因此,HybridDB 用户可以直接使用支持 PostgreSQL 8.2 消息协议的工具,例如 libpq、JDBC、ODBC、psycopg2、pgadmin III 等。 HybridDB提供了Redhat平台的二进制p

云数据库 HybridDB 基于开源数据库Greenplum Database,而Greenplum 基于 PostgreSQL 8.2 分支开发,完整兼容其消息协议。因此,HybridDB 用户可以直接使用支持 PostgreSQL 8.2 消息协议的工具,例如 libpq、JDBC、ODBC、psycopg2、pgadmin III 等。

HybridDB提供了Redhat平台的二进制psql程序下载链接。Greenplum 官网也提供了一个安装包,包含 JDBC、ODBC 和 libpq,方便安装和使用,详情请参见Greenplum 官方文档

psql

psql 是 Greenplum 中比较常用的工具,提供了丰富的命令,其二进制文件在 Greenplum 安装后的 BIN 目录下。使用步骤如下所示:

通过如下任意一种方式进行连接

  • 连接串的方式

    psql "host=yourgpdbaddress.gpdb.rds.aliyuncs.com port=3568 dbname=postgres user=gpdbaccount password=gpdbpassword"
            
    postgres=> select version();
                                               version                                            
    -----------------------------------------------------------------------------------------------
    PostgreSQL 8.3devel (Greenplum Database 4.3.99.00 build dev) compiled on Jun 26 2016 23:44:59
    (1 row)
  • 指定参数的方式

    psql  -h yourgpdbaddress.gpdb.rds.aliyuncs.com -p 3568 -d postgres -U gpdbaccount
  • 输入密码,进入 psql 的 Shell 界面。

    postgres=> select version();
                                                version                                            
    -----------------------------------------------------------------------------------------------
     PostgreSQL 8.3devel (Greenplum Database 4.3.99.00 build dev) compiled on Jun 26 2016 23:44:59
    (1 row)
参数说明:

- -h:指定主机地址。

- -p:指定端口号。

- -d:指定数据库(默认的数据库是 postgres),

- -U:指定连接的用户。

- 可以通过`psql --help`查看更多选项。在 psql 中,可以执行`\?`查看更多 psql 中支持的命令。

参考文档

  • 关于 Greenplum 的 psql 的更多使用方法,请参见文档“psql”。
  • 也可以使用 PostgreSQL 的 psql 命令,请注意使用细节上的差异。详情请参见“PostgreSQL 8.3.23 Documentation -- psql”。

pgAdmin III

pgAdmin III 是PostgreSQL图形客户端,可以直接用于连接HybridDB。详情请参见这里

pgAdmin III 1.6.3可以从PostgreSQL官网下载。pgAdmin III 1.6.3支持各种平台(Windows、MacOS、Linux)。注意,HybridDB与PostgreSQL 8.2版本兼容,因此必须使用pgAdmin III 1.6.3或之前的版本才能连接HybridDB(pgAdmin 4也是不支持的)。下载安装后,打开"文件"->"新增服务器"菜单,可以看到配置连接的窗口。按如下图类似的方式,填入”名称“、”主机地址”、“端口号”、“数据库”、“用户名”、“密码”等信息,点击“确定”即可连接到HybridDB。

在pgAdmin中配置HybridDB连接

其他更多图形客户端,请参考 下载链接

JDBC

JDBC 采用 PostgreSQL 的即可。下载方法如下:

代码案例:

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.sql.Statement;  
  
public class gp_conn {  
  
    public static void main(String[] args) {  
        try {  
            Class.forName("org.postgresql.Driver");  
            Connection db = DriverManager.getConnection("jdbc:postgresql://mygpdbpub.gpdb.rds.aliyuncs.com:3568/postgres","mygpdb","mygpdb");  

            Statement st = db.createStatement();  
            ResultSet rs = st.executeQuery("select * from gp_segment_configuration;");  
            while (rs.next()) {  
                System.out.print(rs.getString(1));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(2));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(3));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(4));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(5));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(6));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(7));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(8));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(9));  
                System.out.print("    |    ");  
                System.out.print(rs.getString(10));  
                System.out.print("    |    ");  
                System.out.println(rs.getString(11));  
            }  
            rs.close();  
            st.close();  
        } catch (ClassNotFoundException e) {  
            e.printStackTrace();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
    }  
}

详细文档,请参见“The PostgreSQL JDBC Interface”。

Python

Python 连接 Greenplum 和 PostgreSQL 用的库是 psycopg2。使用步骤如下:

安装 psycopg2

在 CentOS 下,有如下三种安装方法:

  • 方法一,执行如下命令:

    yum -y install python-psycopg2
  • 方法二,执行如下命令:

    pip install psycopg2
  • 从源码安装:

    yum install -y postgresql-devel*
        
    wget  http://initd.org/psycopg/tarballs/PSYCOPG-2-6/psycopg2-2.6.tar.gz
    tar xf psycopg2-2.6.tar.gz
    cd psycopg2-2.6
    python setup.py build
    sudo python setup.py install

安装后,设置 PYTHONPATH,之后就可以引用,如:

import psycopg2

sql = 'select * from gp_segment_configuration;'

conn = psycopg2.connect(database='gpdb', user='mygpdb', password='mygpdb', host='mygpdbpub.gpdb.rds.aliyuncs.com', port=3568)

conn.autocommit = True
cursor = conn.cursor()
cursor.execute(sql)
rows = cursor.fetchall()

for row in rows:
    print row

conn.commit()
conn.close()

会得到类似以下的结果:

(1, -1, 'p', 'p', 's', 'u', 3022, '192.168.2.158', '192.168.2.158', None, None)
(6, -1, 'm', 'm', 's', 'u', 3019, '192.168.2.47', '192.168.2.47', None, None)
(2, 0, 'p', 'p', 's', 'u', 3025, '192.168.2.148', '192.168.2.148', 3525, None)
(4, 0, 'm', 'm', 's', 'u', 3024, '192.168.2.158', '192.168.2.158', 3524, None)
(3, 1, 'p', 'p', 's', 'u', 3023, '192.168.2.158', '192.168.2.158', 3523, None)
(5, 1, 'm', 'm', 's', 'u', 3026, '192.168.2.148', '192.168.2.148', 3526, None)

libpq

libpq 是 PostgreSQL 数据库的 C 语言接口,在 C 程序中通过 libpq 库访问 PostgreSQL 数据库并进行数据库操作。在安装了 Greenplum 或者 PostgreSQL 之后,在其 lib 目录下可以找到其静态库和动态库。

相关案例请参见这里,此处不再列举。

关于 libpq 详情,请参见“PostgreSQL 9.4.10 Documentation -- Chapter 31. libpq - C Library”。

ODBC

PostgreSQL 的 ODBC 是基于 LGPL(GNU Lesser General Public License)协议的开源版本,可以在 PostgreSQL 官网下载,可以单击这里

  • 安装驱动

    yum install -y unixODBC.x86_64  
    yum install -y postgresql-odbc.x86_64  
  • 查看驱动配置

    cat /etc/odbcinst.ini 
    # Example driver definitions
    
    # Driver from the postgresql-odbc package
    # Setup from the unixODBC package
    [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
    
    
    # Driver from the mysql-connector-odbc package
    # Setup from the unixODBC package
    [MySQL]
    Description     = ODBC for MySQL
    Driver          = /usr/lib/libmyodbc5.so
    Setup           = /usr/lib/libodbcmyS.so
    Driver64        = /usr/lib64/libmyodbc5.so
    Setup64         = /usr/lib64/libodbcmyS.so
    FileUsage       = 1
  • 配置DSN

    [mygpdb]
    Description = Test to gp
    Driver = PostgreSQL
    Database = ****
    Servername = ****.gpdb.rds.aliyuncs.com
    UserName = ****
    Password = ****
    Port = ****
    ReadOnly = 0
将这里的“****”改成对应的连接信息。
  • 测试连通性

    echo "select count(*) from pg_class" | isql mygpdb
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    SQL> select count(*) from pg_class
    +---------------------+
    | count               |
    +---------------------+
    | 388                 |
    +---------------------+
    SQLRowCount returns 1
    1 rows fetched

到这里ODBC即已连接上实例,应用连接ODBC即可,可以参考这里C#连接到PostgreSQL

参考文档

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
GreenPlum on K8s
GreenPlum on K8s
221 0
|
存储 SQL 分布式计算
浅谈MPP数据库-Vertica
用过这块数据库3年时间,很多功能非常强大,POC做了很多数据库,查询性能可以说是最好的,推荐一下
2585 2
|
2月前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
88 15
|
8月前
|
数据挖掘 大数据 关系型数据库
Doris和Greenplum数据库简单对比
【5月更文挑战第3天】Doris和Greenplum数据库简单对比
1302 0
|
存储 SQL 分布式计算
GreenPlum小结
GreenPlum小结
350 0
|
存储 SQL 关系型数据库
【数据库选型】ClickHouse vs PostgreSQL vs TimescaleDB
在过去的一年里,我们不断听到的一个数据库是ClickHouse,这是一个由Yandex最初构建并开源的面向列的OLAP数据库。
|
8月前
|
SQL 关系型数据库 分布式数据库
从Citus深度解密如何基于PostgreSQL做分布式数据库
前言分布式数据库能够解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等单机数据库瓶颈难题,当业务体量即将突破单机数据库承载极限和单表过大导致性能、维护问题时,分布式数据库是解决上述问题的高性价比方案。数据库作为分布式改造的最大难点,就是"和使用单机数据库一样使用分布式数据库",这也一直是广大...
3348 0
从Citus深度解密如何基于PostgreSQL做分布式数据库
|
SQL 运维 DataWorks
MySQL分库分表写入Hologres实践
本文将会介绍如何通过DataWorks数据集成或者阿里云Flink将MySQL 分库分表数据写入至Hologres
1512 2
MySQL分库分表写入Hologres实践