在一年多的现场工作中,我体会到了一个好的数据库对于一个系统的意义的重大,我这一直用的是postgresql数据库,对于它的体会好的地方我不说了,不好的地方就是在于查询慢,占用空间大,不支持HA方式部署(最致命),对于我来说,一个数据库好不好还要看其稳定性,是否免费(当然这个是收费的),带着这些问题,开始学习gbase数据库。
1、先不拿过来就安装,先谈谈查阅文档后的感受:
我用了一天的时间在网上查阅一些gbase的介绍以及官方文档。官方文档中
宣扬
其
gbase最大的优势就是查询快、提高了I/O性能、高并发、
基本可以与mysql等数据库无缝对接、
并减少了物理硬盘的占用,gbase的核心功能官方文档列出了十项核心功能,
什么列存储行存储、透明压缩啥的我懒得去看,单纯的只看与现有数据库的对比:
是否支持集群:gbase 8a mpp cluster 白皮书中介绍的是分布式节点+共享存储的方式,这种方式够用了,也是主流的解决方案,但从我的理解并没有解决我所苦恼的两台PC Server 实现数据实时同步的问题,不知道是否支持;
JDBC与JDK的兼容性:1.5以上,够用了;
主流框架的支持:hibernate写了,mybatis没提;
安全性:说实话这个真不太懂;
稳定性:这个要看长时间的实用,但文档中的数据备份和恢复什么的跟postgresql差别不大,都是几条命令;
http://www.07net01.com/program/85842.html
看了
是一个网友对比oracle 11g和gbase的文章写的不错,并且提出oracle
、db2、sqlserver等都是传统行式存储,
用于事务型处理的,所以,在海量数据查询方面 不占优势,对比oracle 11g,
GBase8a的查询效率比
Oracle
11g普遍快3~5倍以上
好吧 我信你的,完美PK掉oracle,对于我来说并不是查询快就够的,文档看的差不多了,实际安装一下看看。
2、安装:
文档中的安装过程还是很简单的,但是在安装文档中漏掉了几个关键步骤,需要在安装过程中自己摸索,文档中有的我就不再描述了,现将遇到的问题分享一下:
问题1:启动报错1:
[gbase@gbase bin]$ ./gbase.server start
grep: /config/gbase_8a_.cnf: 没有那个文件或目录
grep: /config/gbase_8a_.cnf: 没有那个文件或目录
./gbase.server: line 50: /bin/gs_print_defaults: 没有那个文件或目录
Error - /config/gbase_8a_.cnf was not found! Please make sure Express installation completed and activated successfully.
原因:通过查看gbase.server文件中(下图)发现需要配置环境变量,但文档中并未提及
41 # If you change base dir, you must also change datadir. These may get
42 # overwritten by settings in the GBase configuration files.
43
44 conf=$GBASE_BASE/config/gbase_8a_$GBASE_SID.cnf
45 logfile=`grep log-error $conf | cut -d '=' -f 2`
46 port=`grep port $conf | sed q | cut -d '=' -f 2`
47
48 basedir=$GBASE_HOME
49 password=1
50 $GBASE_HOME/bin/gs_print_defaults gbased > $HOME/.gs
51 datadir=`sed '/--datadir/!d' $HOME/.gs | awk -F"=" '{print $2}'`
解决办法:按下图配置环境变量(实例名填写安装时设置的,没有就默认gbase8a)即可:
export GBASE_BASE=/home/gbase/GBase
export GBASE_HOME=/home/gbase/GBase/server
export GBASE_SID=test
问题2:启动报错2:
[root@gbase bin]# su gbase
[gbase@gbase bin]$ ./gbase.server start
Starting GBase.151206 12:51:57 [ERROR] /home/gbase/GBase/server/bin/gbased: Can't create/write to file '/home/gbase/GBase/log/test/gbased.pid' (Errcode: 13)
151206 12:51:57 [ERROR] Can't start server: can't create PID file: Permission denied
.........................................
问题原因:进入到该目录,发现权限不够
[gbase@gbase bin]$ cd /home/gbase/GBase/log/test/
bash: cd: /home/gbase/GBase/log/test/: 权限不够
解决办法:使用root将该文件夹权限归属为gbase
[root@gbase log]# chown gbase ./test/
[root@gbase log]# ll
总用量 4
drwxrwxr-x. 2 gbase root 4096 12月 6 12:51 test
再执行启动命令:
[gbase@gbase bin]$ ./gbase.server start
Starting GBase.[确定]
这并没有启动成功,通过查看status发现并没有启动成功,这是最致命的第三个错误:
[gbase@gbase bin]$ ./gbase.server status
GBase is not running, but PID file exists[失败]
原因:通过查看志可观察到,license是无效的,其实我根本就没有license:
151206 13:15:25 [Note] ==================================
151206 13:15:25 [Note] tcmalloc enabled
151206 13:15:25 [Note] aggressive_decommit disabled
151206 13:15:25 [ERROR] (GBA-01LC-0003) Invalid License
于是我在南大官网上在线申请了一个试用license,
同时,可以线下发邮件申请,现在能做的只有等待,
哈哈,洗洗睡吧,等license到了再来分享!
以上只是基于一个小程序员的理解,对于数据库的专业性不强,欢迎拍砖!