序
本文意在引导读者如何从“零”开始上手使用GBase8s数据库,以及提供一些常用参考。
文章内容如引起不适请关闭页面。文章引用会附在文尾,如有不妥,联系速删,敬请见谅。
背景
老板:“小节目,去把咱们项目的数据库迁一下。”
小节目:“好的老板,数据迁移呗,换到哪台服务器上?”
老板:“哦,换成GBase8s数据库,最近挺火的。”
小节目:“…”
我怀揣着不适言语的心情默默的打开搜索网站,输入关键词…

“可靠、高性能,不会像oracle一样很难搞吧,会有试用版吧…”
下载
从GBase 官方网站 导航栏找到了GBase8s V8的 下载地址。


下载完成,随便找了一台x86服务器扔上去,文件结构是这样的。

经过一番搜查,了解到各个文件的含义。
| fileName | Comment |
|---|---|
| GBase 8s自动初始脚本使用说明V1.3.7_20200309.docx | 安装及初始化脚本试用说明(重点查看!!) |
| AutoInit_GBase8s.sh | 安装及初始化脚本 |
| GBase8sV8.8_TL_3.3.0_2_36477d_RHEL6_x86_64.tar | 数据库安装包 |
| clientsdk_3.3.0_2_36477d_RHEL6_x86_64.tar | sdk组件 |
| gbasedbtjdbc_3.3.0_2_36477d.jar | jdbc驱动包 |
安装
参考压缩包内文档,以及 官方社区 上的帖子,几乎没什么波折,就完成实例安装。接下来检查一下数据库状态:
onstat - //查看运行状态 onstat -g ntt //查看开放端口

在查看服务端口的过程中需要注意一下,默认安装的话是使用 Linux 中的 services 进行注册的。可以通过编辑数据库安装目录(产品对应的环境变量是$GBASEDBTDIR)下的 etc/sqlhosts.ol_gbasedbt1210_20230509043748 文件进行修改。
vim etc/sqlhosts.ol_gbasedbt1210_20230509043748 cat etc/sqlhosts.ol_gbasedbt1210_20230509043748

这里主要是参考了小破站阿婆主的视频。是的,小破站竟然都有教程。从安装到基础使用,非常简洁明了,再结合官档进行查询,上手超快,链接:
1、官方文档 主要参考了 GBase 8s V8.8 安装手册.pdf 及 GBase 8s 管理员参考.pdf;
2、B站大佬 视频时间很短,看过一遍后,对GBase8sV8版本有了更全面的了解,强烈推荐。
访问
我尝试了3种方式进行访问:
第一种最简单的后台dbaccess访问,和mysql、sqlplus相同:
[root@******** ~]# dbaccess - -
Your evaluation license will expire on 2024-05-08 00:00:00
> create database test with log;
Database created.
> create table tab1(id int,name varchar(20),tel varchar(20));
Table created.
> info tables;
Table name
tab1
> insert into tab1 values(0,'小明','13333333333');
1 row(s) inserted.
> select * from tab1;
id name tel
0 小明 13333333333
1 row(s) retrieved.
第二种是通过 JAVA 小Demo:

这里引用了上述下载提及的 gbasedbtjdbc_3.3.0_2_36477d.jar 驱动包,以及参考了 官方文档 GBase 8s V8.8 JDBC Driver 程序员指南.pdf 手册,完成url的配置。
这里遇到了一个中文乱码的问题,原因是我在后台插入的中文编码问题,所以在URL中添加了一个NEWCODESET的参数进行了映射,解决了该问题,参考 GBase 8s V8.8 JDBC Driver 程序员指南.pdf。
第三种是通过官方的GBaseDataStudio工具进行连接:

强烈推荐! 类似Navicat、plsql等管理工具,无需下载配置客户端。官方提供的是压缩包版,解压就能用。配置也很简单。
大致看了一下,支持的功能很全面,数据导入导出,数据库迁移备份,可视化操作,表、数据,导出ER图等功能,链接:
下载地址 GBaseDataStudio_8.5.25.0_Windows_x86_64.zip

数据迁移
开展迁移工作之前,重点关注了一下数据空间的问题,以及经过学习了解到数据分布设计会直接影响对事务处理的效率。因此我创建了多个数据空间,分别存储不同的数据:
[root@******** ~]# onstat -d Your evaluation license will expire on 2024-02-06 00:00:00 On-Line -- Up 6 days 03:37:20 -- 6934168 Kbytes Dbspaces address number flags fchunk nchunks pgsize flags owner name 4b5ae028 1 0x70001 1 1 2048 N BA gbasedbt rootdbs 4b7a1b48 2 0x60001 2 1 2048 N BA gbasedbt llogdbs 4b7a1d78 3 0x70001 3 1 2048 N BA gbasedbt plogdbs 50280028 4 0x42001 4 1 8192 N TBA gbasedbt tmpdbs1 50280258 5 0x42001 5 1 8192 N TBA gbasedbt tmpdbs2 50280488 6 0x42001 6 1 8192 N TBA gbasedbt tmpdbs3 502806b8 7 0x42001 7 1 8192 N TBA gbasedbt tmpdbs4 502808e8 8 0x60001 8 1 8192 N BA gbasedbt datadbs 8 active, 2047 maximum Chunks address chunk/dbs offset size free bpages flags pathname 4b5ae258 1 1 0 150000 127152 PO-B-D ********/dbs/rootdbs 50282028 2 2 0 505000 4947 PO-B-D ********/dbs/llogdbs 50283028 3 3 0 255000 4947 PO-B-D ********/dbs/plogdbs 50284028 4 4 0 26250 26197 PO-B-- ********/dbs/tmpdbs1 50285028 5 5 0 26250 26197 PO-B-- ********/dbs/tmpdbs2 50286028 6 6 0 26250 26197 PO-B-- ********/dbs/tmpdbs3 50287028 7 7 0 26250 26197 PO-B-- ********/tmpdbs4 50288028 8 8 0 125000 122573 PO-B-D ********/dbs/datadbs 8 active, 32766 maximum NOTE: The values in the "size" and "free" columns for DBspace chunks are displayed in terms of "pgsize" of the DBspace to which they belong. Expanded chunk capacity mode: always
以及数据库日志的设计,物理日志我分配了500MB的大小,逻辑日志使用10个,每一个1GB:
[root@******** ~]# onstat -l Your evaluation license will expire on 2024-02-06 00:00:00 On-Line -- Up 6 days 03:40:56 -- 6934168 Kbytes Physical Logging Buffer bufused bufsize numpages numwrits pages/io P-1 0 2048 33432 587 56.95 phybegin physize phypos phyused %used 3:53 250000 5718 12 0.00 Logical Logging Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io L-2 0 2048 788338 87070 62662 9.1 1.4 Subsystem numrecs Log Space used OLDRSAM 787966 83932820 HA 302 13288 DDL 70 24360 address number flags uniqid begin size used %used 4b7bcf88 7 U-B---- 17 2:53 50000 50000 100.00 4b4dff30 8 U-B---- 18 2:50053 50000 50000 100.00 4b4dff98 9 U-B---- 19 2:100053 50000 50000 100.00 4b5aef30 10 U-B---- 20 2:150053 50000 50000 100.00 4b5aef98 11 U---C-L 21 2:200053 50000 16029 32.06 4b7a1890 12 U-B---- 12 2:250053 50000 50000 100.00 4b7a18f8 13 U-B---- 13 2:300053 50000 50000 100.00 4b7a1960 14 U-B---- 14 2:350053 50000 50000 100.00 4b7a19c8 15 U-B---- 15 2:400053 50000 50000 100.00 4b7a1a30 16 U-B---- 16 2:450053 50000 50000 100.00 10 active, 10 total
上述两部分的设计也是在通过观看 B站大佬 视频中学习了解到的。主要对数据存储空间的规划,数据读写效率,以及事务提交、回滚情况进行考量,详情可以参考 官方文档 GBase 8s V8.8 管理员指南.pdf 以及B站大佬 视频。
“今天的最后一步,把数据灌进去,明天就可以开始做应用的修改适配了…”
“有没有异构数据库迁移的工具呢?能省好多事儿。嗯…我记得刚才工具下载页面还有一个东西…”
惊喜的发现,官方竟提供了异构数据库的迁移工具,链接:
下载地址 GBase8sMTK_V8.9_1.3.0_1_WIN10_x86_64.zip

工具配置向导通俗易懂,支持迁移对象选择,数据类型映射、转换等功能,非常非常人性化:



几个步骤,搞定数据迁移工作,very的nice。

通过验证,没有发现表结构,以及数据缺失的情况,真的是非常的安逸。
但是!
考虑到未来如果有从0开始构建的项目,就需要本本分分的操作,于是通过使用管理工具重新进行了一遍:
1、通过MySQL管理工具,将数据库表、数据等内容进行导出;
2、通过 GBaseDataStudio_8.5.25.0_Windows_x86_64.zip 工具进行了数据库、表的创建;
3、通过使用数据导入功能,完成数据初始化。

在导入数据的过程中,导入字段可进行自定义设置。通过验证后,圆满的完结了第一天的任务。
应用改造
“今天才算真正意义上的开始吧…”
项目使用SpringBoot框架,druid + mybatis 做数据库管理,因此有两部分需要进行修改及验证:
一:应用配置
这一部分经过分析,工作内容较少,一个是修改 pom.xml 文件,将 jdbc 驱动引入:

另一个是修改 application-druid.yml 文件中的 url 信息:

二:SQL语法
“该来的还是要来了,语法应该不是完全兼容的吧…”
1、逐条验证 Dao 层的sql是否可以执行,以及返回结果正确性;
2、验证数据库中的:包、函数、存储过程是否正常可用;
3、针对上述发现的语法不兼容进行修改变更。
这一部分的任务确实很折磨人,修改的过程借鉴了 官方文档 GBase 8s V8.8 SQL 指南:语法.pdf 以及一些辅助工具,辅助工具仅供参考:

工具转换效率感人…但是在做这件事情的过程中发现,GBase8s对Oracle的语法支持程度很高,某些情况下可以变相的将部分语法转换成Oracle直接进行使用。总的来说,工作量是有的,但是也没有想象中的困难。
总结
小节目:“老板,来交差了 x86平台搞定,目前没发现什么问题。”
老板:“行啊还挺快,总结一下来个内部培训分享吧。”
“…”
整体工作完成后,对该款数据库的看法:
1、安装部署简洁,成体系。较比MySQL,给我的感觉更严谨和灵活。同一台服务器多实例的场景下也更好管理和操作;
2、配套生态工具完善,可以满足常规场景下的所有需求。调研后还支持高可用、分布式架构可以使用,非常感兴趣;
3、SQL基础语法方面,和Oralce兼容程度非常高,业务SQL改造以及学习成本很低;
4、学习过程中了解到官方有认证机构,通过微信搜索公众号 南大通用培训中心,报名后,看了下课程安排狠紧凑,可以更全面的学习了解一下,主要是,目前收费不贵…
引用
官方网站 https://www.gbase.cn/product/gbase-8s
官方社区 https://www.gbase.cn/community/section/10
文档工具 https://www.gbase.cn/download/gbase-8s-1?category=TOOLKIT
B站大佬 https://space.bilibili.com/2097337825?spm_id_from=333.337.search-card.all.click
侵权必删
“完结,撒花!”




