体验GaussDB数据库应用程序JDBC接口实验【华为云GaussDB:与数据库同行的日子】

举报
gentle_zhou 发表于 2023/12/09 22:59:27 2023/12/09
【摘要】 从运行结果中看,批量插入只需20+ms,单条插入单条提交插入需要约3000ms,而单条插入批量提交需要400+ms。

实验背景

GaussDB作为华为自主研发的一款企业级分布式关系型数据库,具备PB级海量数据存储能力和企业级高可靠能力,也是国内首款纯软全密态数据库,支持国密算法、透明加密,并提供国内首个双集群强一致方案。

这么优秀的一款数据库服务,了解并熟悉如何使用其常用接口及基本配置操作就显得尤为重要了。

而用于连接数据库的接口,JDBC、ODBC和Psycopg就是其中最为常见的3种。本文用于体验GaussDB其中的一种:JDBC接口,并能够掌握使用程序通过支持的接口访问数据库。

JDBC接口

JDBC,全称是Java Database Connectivity,是一种用于执行SQL语句的Java API。它可以为PostgreSQL、openGauss、GaussDB等数据库提供统一访问接口,应用程序可以基于它进行数据操作。

JDBC的优势是可以跨平台使用,支持多种数据源,兼容性好,易于开发和维护。

介绍完JDBC接口,接下来就是本文重点:体验GaussDB数据库应用程序JDBC接口实验了。

准备环境

开始实验之前,在实验页面点击手册上方“预置实验环境”按钮(预置实验环境会花费几分钟,成功后将会创建本实验所需的云资源):
image.png

进入【实验操作桌面】,打开Chrome浏览器,选择“IAM 用户登录”,并在对话框中输入系统分配的华为云实验账号和密码进行登录:
image.png

实验配置

购买GaussDB实例

点击左侧的【服务列表】,选择其中【数据库】下的【云数据库GaussDB】:
image.png

进入云数据库GaussDB,点击页面右上角的【购买数据库实例】按钮;进入购买页后,根据实验推荐参数信息购买数据库:
image.png

image.png

image.png

点击购买,之后需要确认信息,确认无误之后,点击提交:
image.png

GaussDB数据库创建大概需要花费20分钟左右,当运行状态处于【正常】,表示数据库已创建完成。

登录DAS,点击新建数据库

登录DAS数据管理服务,进入实例,创建名为demo的数据库:
image.png

在新创建的数据库中,点击SQL查询,使用以下命令(create user db_dev sysadmin password 'Huawei123#$';),在demo库下创建db_dev用户,并授予sysadmin的权限。
image.png

登录已预置好的ECS

进入ECS弹性云服务器服务,查看ECS绑定的EIP:
image.png

双击打开实验桌面的 Xfce 终端,并执行以下命令sh root@EIP,登录ecs。 成功登录ECS之后如下图所示:
image.png

掌握JDBC的使用

1、加载驱动,连接数据库,配置负载均衡

执行以下命令(mkdir -p /opt/expt/db/libscd /opt/expt/db/libswget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/20220525/opengaussjdbc.jar),下载GaussDB jdbc驱动,并存放于 libs目录下。

接着再执行以下命令(wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20220525/OpenJDK11U-jdk_x64_linux_openj9_linuxXL_11.0.10_9_openj9-0.24.0.tar.gztar xzvf OpenJDK11U-jdk_x64_linux_openj9_linuxXL_11.0.10_9_openj9-0.24.0.tar.gzmv jdk-11.0.10+9 /usr/lib/ln -s /usr/lib/jdk-11.0.10+9/bin/java /usr/local/bin/javaln -s /usr/lib/jdk-11.0.10+9/bin/javac /usr/local/bin/javac),下载JDK软件包,并配置环境。

之后,就需要验证实验环境是否准备就绪,包括:java运行命令、javac运行命令
image.png

image.png

然后,在指定目录(mkdir -p /opt/expt/db/basiccd /opt/expt/db/basic)创建exptConnection.java文件。接着在exptConnection.java文件中,输入代码(内容包含:驱动注册-JDBC_DRIVER = “com.huawei.opengauss.jdbc.Driver”;连接数据库-static final String DB_URL = “jdbc:opengauss://192.168.0.72:8000/demo”;)。接着执行以下命令(javac -d . exptConnection.java),进行编译。编译完成后,会在当前目录下编译生成class数据文件及对应目录结构:
image.png

接着,执行以下命令(java -cp /opt/expt/db/libs/opengaussjdbc.jar:. expt.db.basic.exptConnection),运行对应代码文件:
image.png

之后,需要配置负载均衡。点击数据库实例,获取备机信息。配置负载均衡中的轮询策略,。由于增加了轮询策略,需要新增参数字符串;轮询策略可以修改为autoBalance=true或者autoBalance=roundrobin。重新编译后,再运行程序。
(注:摘取自实验中解释,设置autoBalance为priorityn表示开启JDBC优先级负载均衡功能,将应用程序的多个连接首先均衡到url上配置的前n个中可用的CN数据库节点,当url上配置前n个节点全部不可用时,连接会随机分配到数据库集群中其他可用CN数据库节点;设置为shuffle表示开启JDBC随机负载均衡功能,将应用程序的多个连接随机均衡到数据库集群中的各个可用CN;设置为false,不开启JDBC负载均衡功能和优先级负载均衡功能,默认为不开启负载均衡。)

设置完负载均衡,还需要对JDBC设置读写分离,将参数修改为targetServerType=master,则尝试连接到url连接串中的主节点,如果找不到主节点将抛出异常。重新编译后,再运行程序。

2、执行建表语句

执行以下命令(cd /opt/expt/db/basictouch exptCreateTable.java),创建exptCreateTable.java文件。

使用vi命令,将实验提供的代码内容写入exptCreateTable.java文件中。(代码内容包括:驱动注册-static final String JDBC_DRIVER = "com.huawei.opengauss.jdbc.Driver;连接数据库-static final String DB_URL = "jdbc:opengauss://192.168.0.72:8000,192.168.0.71:8000,192.168.0.108:8000/demo";;;建表语句;执行SQL语句)。

编译后运行程序,回显显示execute successfully!表示创建表完成。

3、执行插入语句

执行命令,创建exptInsert.java文件。

使用vi命令,将实验提供的代码内容写入exptInsert.java文件中。(代码内容包括:驱动注册;连接数据库;建表语句;执行SQL语句)。

编译后运行程序,回显显示“Number of rows affected: 1”表示数据插入成功:
image.png

4、执行查询语句

执行命令,创建exptQuery.java文件。

使用vi命令,将实验提供的代码内容写入exptQuery.java文件中。(代码内容包括:驱动注册;连接数据库;关闭连接;打印所有记录;打印一条记录;执行SQL语句)。

编译后运行程序,回显显示“影响行数: 1”表示数据插入成功。

5、批量插入数据

执行命令,创建exptBatchInsert.java文件。

使用vi命令,将实验提供的代码内容写入exptBatchInsert.java文件中。输入结束后,使用”:wq”保存退出vim编辑。第一个进行单条插入,第二个进行批量插入。
image.png

image.png

编译后运行程序,从运行结果中看,批量插入只需20+ms,而单条插入单条提交插入需要约3000ms

6、关闭自动提交

执行命令,创建exptBatchInsert2.java文件。

使用vi命令,将实验提供的代码内容写入exptBatchInsert2.java文件中。输入结束后,使用”:wq”保存退出vim编辑。第一个进行单条插入,第二个进行批量插入。
image.png

image.png

编译后运行程序,从运行结果中看,批量插入只需20+ms,而单条插入批量提交需要400+ms,比之前的单条插入单条提交的速度有所提升。

征文活动

我正在参加【有奖征文 第28期】华为云GaussDB:与数据库同行的日子!
链接:https://bbs.huaweicloud.com/blogs/415547

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。