特点:
1、索引的高度相对较低
2、索引本身可以存储列值
3、索引本身有序
优点:
1、便于快速查询,提高数据访问的效率
缺点:
1、索引的使用容易形成热块竞争
2、会表开销---通过ROWID来找到对应的数据行
3、数据更新或插入带来的相关开销,包括叶子分裂等
4、创建索引的开销:锁表和排序
特点:
1、索引的高度相对较低
2、索引本身可以存储列值
3、索引本身有序
优点:
1、便于快速查询,提高数据访问的效率
缺点:
1、索引的使用容易形成热块竞争
2、会表开销---通过ROWID来找到对应的数据行
3、数据更新或插入带来的相关开销,包括叶子分裂等
4、创建索引的开销:锁表和排序
GBase8s提供的索引有:
B+ index
函数 index
全文检索
cluster index
Oracle提供了如下类型的索引:
B+ index
函数 index
全文检索
bitmap index
反向索引
最近碰到客户从Oracle迁移到GBase 8s使用到字段加密解密功能,使用到了Utl_raw.cast_to_varchar2、Utl_raw.cast_to_raw、Utl_encode.base64_decode、dbms_obfuscation_toolkit.desdecrypt等oracle特有函数,这些与GBase 8s自带的加密函数DECRYPT_CHAR并不兼容。客户暂时只能考虑使用程序加密的方式实现。
对于GBase 8s数据库来说,其实也可以使用自定义例程(UDR,可以是基于C,也可能是基于Java)的方式来扩展函数使用。以下我们就以这个加密解密功能来说明Java UDR的创建与使用。
GBase 8s的客户端工具相对缺乏,通过jdbc客户端工具也仅显示语法错误号码,而不具体指明实际位置。
而GBase 8s所自带的dbaccess工具能较好的显示实际位置。
以下示例的方式使用dbaccess调试SQL语句,语句已经写在1.sql文件中。
[gbasedbt@bd temp]$ dbaccess sysmaster
在RHEL7/CENTOS7/SUSE12及最新的Ubuntu等linux发行版本中, 均使用systemd进行服务控制管理(Service Control Manager)。
使用systemd, 不再需要编写shell脚本程序来控制启动、关闭。
以下是通过systemd方式实现GBase 8s数据库的自启动与关闭。
适用于操作系统: RHEL7/CENTOS7, 以及基于RHEL7内核的系统
近期有较多的客户询问:GBase 8s支不支持emoji表情符号的保存及查询?Emoji表情 和 某些特殊字符 在UTF-8编码中使用4个字节,GBase 8s支持的UTF-8编码允许使用1-4个字节,同时GBase 8s也支持GB18030-2000编码,该编码中允许使用1,2,4个字节。也就是说GBase 8s完全支持保存emoji表情符号。
以下是个操作emoji表情符号的示例:
export GBASEDBTDIR=/opt/gbase
export GBASEDBTSERVER=gbase01
export ONCONFIG=onconfig.${GBASEDBTSERVER}
export PATH=${GBASEDBTDIR}/bin:${PATH}
export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
export GL_USEGLU=1
数据类型是在创建表的时候为每个字段设置的。
GBase 8s提 供了丰富的数据类型。用户可以使用 CREATE TYPE 命令在数据库中创建新的数据类型。GBase 8s 的数据类型有很多种,主要的数据类型说明如下:
GBase 8s 支持中文的全文本搜索功能BTS -- Basic Text Search。
传统关系型数据库上,我们通常通过 LIKE 或 MATCHES 条件来搜索文本数据,往往需要进行全表扫描,性能低下。
BTS提供全文本搜索能力,可以检索一个表上的字符数据类型列(BLOB, CHAR, CLOB, LVARCHAR, NCHAR, NVARCHAR, or VARCHAR)数据
从mysql迁移到GBase 8s数据库时,原有find_in_set函数在GBase 8s中不可用,因此需要自己创建相应的函数,可以使用C或者JAVA创建自定义例程,也可以使用存储过程。以下以存储过程方式创建。
该函数实现的功能是:第一个参数pstr在第二个参数pstrlist,以pdel为分隔符(默认为,)中的分隔位置。
从mysql迁移到GBase 8s数据库时,原有timestampdiff()函数在GBase 8s中不可用,因此需要自己创建相应的函数,可以使用C或者JAVA创建自定义例程,也可以使用存储过程。以下以存储过程方式创建。
该函数的功能是:按第一个参数interval的值,获取dt1与dt2的日期时间差值。如果dt1 > dt2且isabs为'f'时, 将显示负值。