1、GBASE简介说明
GBASE是国产的分布式并行集群数据库,据说有"三高"优势,即:高性能、高性价比、高可用性,不过查询速度确实很快,几千万的数据select * 秒出;
先介绍下常用的表,Gbase的表分为哈希表、复制表、临时表等等,哈希表需要一个哈希字段,类似分区字段,复制表无需这个字段;一般大数据的表使用哈希分表,小数据的就是万级以下数据可以用复制表。
1.1、常用表介绍
复制表:创建表使用 REPLICATED 关键字,这样创建的表为复制表。复制表将会存储于 Gbase Cluster 的各个节点上,每个节点都会保存完整数据。
哈希分布表:创建表时使用 DISTRIBUTED BY column _name 指定创建表 中的物理列 column _name 是哈希列,这样创建的表为哈希分布表。数据按照指定的 Hash 字段进行哈希分;
临时表:创建表时使用 TEMPORARY 关键字,这样创建的表为临时表,临时表仅存在于当前 session 中。
假设Gbase集群有30台机器,复制表会在30台机器都存在一张且数据是一样的;哈希表存在的也是30台机器,不同是每台机器的数据可能不一样,比如用户信息表的哈希字段是用户ID,可能1台机器存储的是1开头的用户ID,另外一台存储的是2开头的用户ID,每台存储是不一样的。
2、Gbase使用介绍
GBASE数据库目前使用的客户端是gbase studio,打开之后点击右键新建一个集群名称自定义,比如我的命名为rpt
然后对着集群名称右击选择 新建 ,输入其中一个节点IP,用户名,密码,端口一般都是默认的,可以点击 测试,确认是否连接成功;测试成功后点击保存。
然后对着新建集群点击右键连接,输入密码确定即可
2.1建表介绍
介绍我使用过的哈希分布表,复制表建表SQL;
1、哈希表建表SQL:
CREATE TABLE user_busi_log_20171210 ( BUSI_LOG_ID bigint(20) DEFAULT NULL COMMENT '受理日志编号', BUSI_TYPE int(10) DEFAULT NULL COMMENT '业务类型', BUSINESS_ID bigint(20) DEFAULT NULL COMMENT '操作编号', OPER_TYPE int(10) DEFAULT NULL COMMENT '操作类型', CUST_ID bigint(20) DEFAULT NULL COMMENT '客户编号', STATE varchar(3) DEFAULT NULL COMMENT '记录状态', OP_ID bigint(20) DEFAULT NULL COMMENT '操作员', ORG_ID bigint(20) DEFAULT NULL COMMENT '组织单元', DONE_CODE bigint(20) DEFAULT NULL COMMENT '受理编号', CREATE_DATE datetime DEFAULT NULL COMMENT '创建日期', NOTES varchar(255) DEFAULT NULL COMMENT '备注' ) COMPRESS(5, 5) DISTRIBUTED BY('BUSI_LOG_ID')
2、复制表建表SQL:
CREATE TABLE dim_order_type_20171210 ( ID varchar(200) DEFAULT NULL COMMENT '编码', plan_id varchar(60) DEFAULT NULL COMMENT '套餐编号', ord_type varchar(60) DEFAULT NULL COMMENT '订单类型', CREATE_TIME varchar(6) DEFAULT NULL COMMENT '创建时间', PROVINCE varchar(50) DEFAULT NULL COMMENT '省份', CREATE_DATE varchar(8) DEFAULT NULL COMMENT '创建日期', SYNC_DATE datetime DEFAULT NULL COMMENT '同步日期' ) COMPRESS(5, 5) REPLICATED DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
说明:一般建表会加压缩COMPRESS(5, 5),节省空间,默认表空间也可以不指定
Gbase的日期格式如果需要秒,需要datetime类型,否则取不到秒,类似,to_char(),日期格式转换,其他常用的函数与oracle函数类似,具体函数使用了就明白了。
3、Gbase数据测试
Gbase数据库数据不论是抽取还是装载都需要一个加载机中转,可以理解为一个FTP中转,
公司的ETL 工具gbase库装载,先抽取文件存放在加载机(ftp)上,然后清空需要装载的数据表(避免重复数据)后面在把ftp目录上的文件加载到目标表,最后是记录日志
3.1日志查找
装载报错后,点击对应节点看到的日志只有INFO和WARN,看不到有用的信息,第一次配置遇到错误很头大,因为没有看到明显的错误提示
点击"HERE"找到加载机对应的节点
然后去加载机(FTP登录的加载机是日志中打印的IP和用户名,密码可以找维护人员获取)
找到这个端口下面的对应的日志信息
比如我的端口是6683,日志目录在load6683下面 ,因为日志文件较多,可以模糊查询
说明:_error_data.log 是错误的数据文件日志,l_og.log是日志文件
ls -l *CM_DATA*.log 查询日志文件
ls -l *CM_DATA*error*.log
查看报错的.log日志文件(日志的文件名是由编号_用户名目标表名_执行日期_执行时间_加载机IP_log组成)
cat 查看日志文件,如果太长可以使用 head 或者tail 查询指定的行数;
日志提示字段长度不够(此处吐槽下因为测试的是一个FTP文件,原来数据提供方提供的是纯数据文件,这周数据文件包含了字段信息所以原来的长度不够,维护修改之后没有通知,看了文件才知道基本上所有字段长度都不够,本次测试是一个网络方面的有235个字段,维护修没通知的修改比较坑),因为字段太多,所以使用head -100 查看前面的字段长度是否都错了
修改数据库表字段长度,然后在修改映射字段长度,保存后重跑,执行成功,数据库表记录如下图:
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
作者:叶子
来源:51Testing软件测试网原创