南大通用GBase 8s_GROUP BY支持标量函数和表达式问题详解
南大通用大数据新型列存储数据库GBase 8a透明网关参考手册

南大通用大数据新型列存储数据库GBase 8a透明网关参考手册南大通用大数据新型列存储数据库GBase 8a透明网关参考手册引言本文档为南大通用大数据新型列存储数据库GBase 8a透明网关的参考手册,旨在为用户提供详细的使用指南和技术支持。
本手册将介绍GBase 8a透明网关的功能和操作方法,并提供相关示例和案例,以帮助用户全面了解和使用该产品。
章节一、产品概述1.1 产品介绍1.1.1 GBase 8a透明网关的作用和优势1.1.2 适用场景和使用范围1.1.3 系统环境要求1.2 主要功能特性1.2.1 数据安全性和隐私保护1.2.2 数据传输效率和性能1.2.3 数据连接和集成1.2.4 数据存储和管理1.2.5 监控和日志管理1.3 系统组成和架构1.3.1 系统组件和模块1.3.2 系统架构图1.3.3 数据流和传输路径章节二、安装与配置2.1 安装准备2.1.1 硬件和软件要求2.1.2 系统文件和目录结构 2.1.3 安装包和2.2 安装步骤2.2.1 安装前准备工作2.2.2 安装过程和注意事项 2.2.3 安装后配置和初始化2.3 网关管理和设置2.3.1 网关管理控制台介绍2.3.2 系统设置和配置2.3.3 用户管理和权限设置章节三、数据传输与集成3.1 数据源配置和连接3.1.1 数据源类型和兼容性 3.1.2 数据源连接方法和参数 3.1.3 连接池管理和优化3.2 数据传输和同步3.2.1 数据传输模式和方式 3.2.2 数据同步策略和机制 3.2.3 数据过滤和转换3.3 数据集成和交互3.3.1 数据集成工具和方法 3.3.2 数据交互接口和格式 3.3.3 数据映射和转换规则章节四、数据存储与管理4.1 数据存储结构和管理4.1.1 数据表和表空间4.1.2 数据索引和分区4.1.3 数据备份和恢复4.2 数据查询和操作4.2.1 SQL查询语句和优化 4.2.2 数据增删改操作4.2.3 事务处理和并发控制4.3 数据安全和权限管理4.3.1 数据权限和访问控制 4.3.2 数据加密和解密4.3.3 审计和日志记录章节五、监控与维护5.1 系统监控和管理5.1.1 系统性能监控和调优 5.1.2 错误日志和告警处理 5.1.3 运行状态和资源管理5.2 数据库维护和优化5.2.1 数据库备份和恢复5.2.2 索引和查询优化5.2.3 数据碎片整理和压缩5.3 系统升级和升级5.3.1 安全升级和漏洞修复5.3.2 新功能和版本兼容性5.3.3 系统配置和参数修改附件:本文档涉及附件,如数据库安装包、配置文件示例、使用案例、问题排查指南等,请参考附件部分。
南大通用数据技术股份有限公司-Oracle到GBase 8s迁移指南-存储过程函数触发器_V3.1.

南大通用数据技术股份有限公司
-2-Biblioteka 的表及 rowtype 定义格式如下:
createtabletb1( idint, namevarchar(20), primarykey(id)
); createrowtypert_tb1(
南大通用数据技术股份有限公司
-1-
1. 概述
将 数 据 库 从 Oracle 迁 移 到 GBase 8s 主 要 完 成 三 个 任 务 : 数 据 库 架 构 迁 移 (Schema/DDL)、数据迁移(Data)和应用迁移(Application)。数据库对象迁移的很大一部分 工作量是存储过程、函数和触发器的迁移,这部分的迁移迄今为止工具(如 MTK)迁移完 成的效果很不令人满意,主要还是靠人工手动将 Oracle 的语法及业务逻辑翻译成 GBase 8s 的语法及完全不改变业务逻辑本身,并且要尽量适应原应用程序的调用格式,尽量少的 修改应用源码,这样既能保证少出错误,也同时能保证应用迁移的工作量尽可能的少。本文 将以实际迁移中针对 Oracle 的具体语法常用的替换方式(但不一定是唯一的)来详细介绍 一下过程对象的迁移过程,希望对正在或者准备进行 Oracle 到 GBase8s 迁移项目的工作 人员有一定的指导和启发。
本文基于 GBase8sv8.72.0.1a2_2 版本来介绍。
2. 概念
存储过程是一个用户定义的函数,由存储过程语句(SPL)组成,以可执行代码的形式 存储在数据库中,因此执行速度要比单独执行单个 SQL 快,是数据库的一种对象,用存储 过程语言编写。存储过程常用于执行一个公用的应用逻辑,不用每个编程人员都去写这些重 复的代码,因此可以加快开发的速度,由于代码变更时,只需要修改这个过程,因此代码的 维护量也降低了。
GBase 8s使用

GBase 8s 使用一:数据存储空间划分1, 背景:经过前期的不懈努力,已成功在虚拟机CentOS 8.1系统上安装了南大通用的GBase 8s 数据库服务器产品,服务器为单机版,单实例。
环境信息,贴图:数据库状态,贴图工欲善其事必先利其器,因此,在开始使用之前,应该需要明确相关数据的存储位置。
从南大通用提供的GBase 8s相关文档,可以发现,数据文件存储空间应该还需要更为明细的划分,这样就可以避免了各类数据文件存放chunk的冲突。
因此,本章节咱们主要尝试对数据文件存储空间的操作。
2, 数据文件存储空间创建经多方查证确认,基于一般测试环境,需要创建的数据空间有以下几个:rootdbs ----系统数据空间plogdbs ----物理日志数据空间llogdbs ----逻辑日志数据空间tmpdbs1 ----临时数据空间datadbs1 ----数据空间sbspace1 -----智能大对象数据空间目前系统已然存在的数据空间:onstat -dPS:这个rootdbs,应该是GBase 8s系统运行必须有的一个默认数据空间,要不然也不至于在安装初期就创建,猜测其功能应该类似c盘吧^^^特别提示:在创建数据空间之前要确保 /opt/GBASE/gbase/dbs 目录的所有者和所属组均为gbasedbt ,权限为755。
接下来开始创建另外几个数据空间:(用户为gbasedbt)A 先创建chunk文件,并授权660B创建物理日志数据空间,名称为plogdbs。
chunk路径为/opt/GBASE/gbase/dbs/plogdbs,大小 1 G 偏移量0 (此处会出现警告,建议做一次0级备份,可忽略。
)C创建逻辑日志数据空间,名称为llogdbs。
chunk路径为/opt/GBASE/gbase/dbs/llogdbs, 大小1 G 偏移量0D创建数据空间,名称为datadbs1。
chunk路径为/opt/GBASE/gbase/dbs/datadbs1,大小2G 偏移量0 指定页大小8kE创建临时表数据空间,名称为tempdbs1。
南大通用大数据新型列存储数据库GBase 8a 技术白皮书

皮书
GBase 8a 产品介绍
3. GBase 8a 产品介绍
GBase 8a 的架构设计充分满足了海量数据分析需求, 是具有高效复杂统计和分析 能力的列存储关系型数据库管理系统。 GBase 8a 面向分析型应用领域, 以列为基本存 储结构和数据运算对象,结合列数据压缩处理、并行处理、智能索引等新型数据处理 技术。下图展现了 GBase 8a 的体系结构。
GBase 8a 技术白皮书
GBase 8a 产品简介
1. 分析型数据库
1.1. 分析型应用的产生背景
在过去的十年里,数据的有效利用已经成为各单位议事日程上最优先的项目之 一。近几年来,企业和政府机构已经完成了信息化建设的初步阶段,即数据的采集和 事务应用。但随之而来产生了新的问题: 如何对已有海量数据进行有效利用; 如何对数据进行挖掘、分析; 如何从历史数据中获取规律,以指导企业的规划和决策; 怎样支持海量数据的即席查询、数据比对; 如何有效解决这些问题是信息化建设新的阶段和发展方向。 有这样一个案例: 某电信运营商发现用户在已经拥有一个移动号码的情况下,再次购买归属的同一 运营商的新号码入网,新号码全部或者部分替代原有旧号码,这种现象称为“重入网 现象” 。重入网泛滥使得该运营商营销渠道成本剧增,导致卡资源号码资源的紧缺, 严重影响正常运营。运营商非常希望找到一种方法,识别出重入网用户。但面对每月 新增 70 万用户和已有的 40 TB 历史数据,如何及时准确的甄别出重入用户,使用传 统事务型数据库管理系统几乎是不可能完成的。这一应用场景需要专为海量数据分析 处理使用的新型列存数据库管理系统的支持。 面对这类日益增加的海量数据分析需求,现有的传统数据库有明显的缺陷。这些 弊端包括: 低下的数据查询性能(传统数据库对上述案例的响应时间为几个小时) ; 对异构数据库访问困难; 惊人的存储成本; 沉重的维护成本。
GBase-8s数据库JDBC Driver程序员指南-D

3.4.1数据库URL的格式....................................................................................-22-
226754text和clob数据类型的代码集转换226755blob和byte数据类型的代码集转换22976用户定义的语言环境229761使用newlocale和newcodeset环境变量连接229762使用newnlsmap环境变量连接23077支持全球化的错误消息2308调优和故障排除23181调试jdbcapi程序23182管理性能231821管理访存缓冲区大小232822大对象的内存管理232823减少网络流量233824批量插入234825连接池234826避免应用程序挂起问题仅限于hpux2399附录23991示例代码文件239911可用示例摘要23992datasource扩展247921读和写属性248922获取和设置标准属性249923获取和设置gbase8s连接属性249924获取和设置连接池datasource属性25393映射数据类型254931在gbase8s和jdbc数据类型之间映射的数据类型254932preparedstatementsetxxx扩展的数据类型映射258933resultsetgetxxx方法的数据类型映射268934udtmanager和udrmanager的数据类型映射27294转换内部gbase8s数据类型276941ifxtojavatype类27695错误消息2869517970028695279702286gbase8sjdbcdriver程序员指南gbase8sjdbcdriver程序员指南i南大通用数据技术股份有限公司i南大通用数据技术股份有限公司95379703286954797042869557970528695679706286957797072879587970828795979709287951079710287951179711287951279712288951379713288951479714288951579715288951679716288951779717288951879718289951979719289952079720289952179721289952279722289952379723289952479724290952579725290952679726290952779727290952879728290952979729290953079730291953179731291953279732291953
GBase 8a学习总结

技术产品规范/项目名称设计方案朗新云商项目开发部2017年10月目录1概述 (1)1.1项目介绍 ............................................................................. 错误!未定义书签。
1.1.1三级....................................................................................... 错误!未定义书签。
修改履历1GBase数据类型及SQL语句1.1GBase 8a数据类型GBase 8a MPP Cluster 支持SQL92 中定义的绝大多数数据类型,同时也支持SQL99 和SQL2000 中定义的数据类型。
GBase 8a MPP Cluster 支持的数据类型,如下表所示:1.1.1数值类型1.1.2字符类型GBase 8a MPP Cluster 目前支持三种字符类型,如下表所示:1.1.3二进制数据类型GBase 8a MPP Cluster 目前支持以下二进制数据类型,如下表所示:使用BLOB 数据类型,有如下约束:➢BLOB 列支持32KB 的存储容量。
➢创建表时,BLOB 列不可以有DEFAULT 值。
➢查询语句中,BLOB 列不支持过滤条件。
➢查询语句中,BLOB 列不支持OLAP 函数。
1.1.4日期和时间类型TIMESTAMP 使用限制:以下限制说明,是针对TIMESTAMP 数据列自动更新时的场景:1. 在一张表中,只能自动更新表中第一个出现的TIMESTAMP 列,并且必须使用DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP来定义。
2. 在一张表中,使用DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP 来指定TIMESTAMP 列自动更新时,只能使用一次,且用于第一个TIMESTAMP 列。
南大通用GBase 8a分析型数据库集群介绍

20
GBase MPP集群:列存储DBMS + MPP
21
GBase MPP集群:列存储DBMS + MPP
22
GBase MPP集群:列存储DBMS + MPP
GBase Cluster Control
GBase Cluster database
数据按列存储 ,每一列单独存放 只访问查询涉及的列,大量降低I/O 数据类型一致,方便压缩 数据包建索引,数据即索引
r1 r2 r3 r4 r5
13
GBase 8a 的列存储架构
定义 •表:虚拟的逻辑层,由所有列 组成
DC
DC DC DC DC DC DC DC DC DC DC
1TB à 100GB
自适应压缩
100GB à 10GB
10GB à 1GB
智能索引
1GB à 100MB
并行加载, 单表 200GB / 小时 多表 500GB / 小时 集群 1TB / 小时
11
列存储简介
逻辑模型
映射规则
物理模型
12
列存数据库 Vs. 行存数据库
9
GBase 8a 功能结构
10
GBase 8a的主要技术和理论极值
列存 1.I/O降低到国际 传统数据库的 1/10以下 2.压缩比至少1/10 3.复杂查询和随机 查询性能是传统 数据库的10倍以上 4.简单易用, 降低使用成本 并行 水平分区
J2EE Server
J2EE
GBase Cluster database
8a Repository
GBase Cluster database Gbase Cluster Safegroup s
GBase 8s详细教程

南大通用安全数据管理系统教程2011年1月GBase版权所有©2011,保留所有权利。
版权声明本文档所涉及的软件著作权、版权和知识产权已依法进行了相关注册、登记,由南大通用数据技术股份有限公司合法拥有,受《中华人民共和国著作权法》、《计算机软件保护条例》、《知识产权保护条例》和相关国际版权条约、法律、法规以及其它知识产权法律和条约的保护。
未经授权许可,不得非法使用。
免责声明本文档包含的南大通用公司的版权信息由南大通用公司合法拥有,受法律的保护,南大通用公司对本文档可能涉及到的非南大通用公司的信息不承担任何责任。
在法律允许的范围内,您可以查阅,并仅能够在《中华人民共和国著作权法》规定的合法范围内复制和打印本文档。
任何单位和个人未经南大通用公司书面授权许可,不得使用、修改、再发布本文档的任何部分和内容,否则将视为侵权,南大通用公司具有依法追究其责任的权利。
本文档中包含的信息如有更新,恕不另行通知。
您对本文档的任何问题,可直接向南大通用数据技术股份有限公司告知或查询。
未经本公司明确授予的任何权利均予保留。
通讯方式南大通用数据技术股份有限公司天津华苑产业区海泰发展六道6号海泰绿色产业基地J座(300384)电话:400-817-9696 邮箱:info@商标声明是南大通用数据技术股份有限公司向中华人民共和国国家商标局申请注册的注册商标,注册商标专用权由南大通用公司合法拥有,受法律保护。
未经南大通用公司书面许可,任何单位及个人不得以任何方式或理由对该商标的任何部分进行使用、复制、修改、传播、抄录或与其它产品捆绑使用销售。
凡侵犯南大通用公司商标权的,南大通用公司将依法追究其法律责任。
GBase 8s 教程南大通用数据技术股份有限公司 I 目 录1 第一章 GBase Studio 教程 (1)1.1 学习内容 (1)1.2 要求 (1)2 第二章 GBase Studio 中的基本导航 (2)2.1 打开 GBase Studio (2)2.1.1 默认的 GBase Studio 组件 (3)2.2 NorthWind (3)2.2.1 连接到服务器 (3)2.2.2 与对象资源管理器连接 (4)2.3 更改环境布局 (4)2.3.1 关闭和隐藏组件 (4)2.3.2 移动组件 (5)2.3.3 将组件拆离 (5)2.4 查看文档布局 (5)2.4.1 查看默认的选项卡式文档布局 (5)2.5 摘要:基本导航 (6)3 第三章 编写 SQL 语句 (6)3.1 建立新查询 (6)3.2 添加缩进 (7)3.2.1 缩进多行代码 (7)3.3 最大化查询编辑器窗口 (7)3.4 编写表脚本 (7)GBase 8s 教程II 南大通用数据技术股份有限公司4 第四章 使用模板 (8)4.1 使用模板创建脚本 (8)4.2 创建自定义模板 (9)4.2.1 创建自定义模板 (9)4.2.2 测试自定义模板 (11)5 第五章 GBase 8s 快速入门 (11)5.1 连接/断开服务器 (12)5.2 输入查询 (13)5.3 创建并使用一个数据库 (18)5.3.1 创建并使用一个数据库 (19)5.3.2 创建一个表 (20)5.3.3 将数据装入一个表 (22)5.3.4 检索表信息 (24)5.4 获得数据库和表的信息 (47)5.5 以批处理模式使用 sqlcli (49)5.6 普通查询的例子 (51)5.6.1 每列的最大值 (52)5.6.2 存有某列中最大值的行 (52)5.6.3 每组中列的最大值 (53)5.6.4 按组方式持有某个字段最大值的行 (54)5.6.5 使用用户变量 (55)5.6.6 使用外键 (56)5.6.7 搜索两个键 (61)5.6.8 计算每天的访问量 (62)5.6.9 使用 AUTO_INCREMENT (63)GBase 8s 教程南大通用数据技术股份有限公司 第1页 1 第一章 GBase Studio 教程欢迎使用 GBase Studio 教程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Group By支持标量函数和表达式问题详解
1概述
为与主流数据库兼容,GBase 8s在很多国产化替代项目中做了很多努力,其中,Group By语句对标量函数及表达式的支持问题较为典型,这篇文章会详细阐述一下。
2问题现状
2.1现状描述
在某国产化替代项目现场出现如下场景:Group By子句需要支持to_char函数分组(包含不在投影列中的字段)。
在这种场景下,GBase 8s会报错“SQL错误【ErrorCode:-201】【SQLState:42000】:A syntax error has occurred.”。
如下所示:
源SQL:
select
count(distinct(t.col4)) as psr_num,
1 as defaulVal,
t.col2
from test t
where t.col1 > 10
group by t.col2,to_char(t.col5,'YYYY-MM-DD') ;
2.2问题分析
在某主流数据库中对Group By语句对标量函数及表达式支持情况进行测试分析,过程如下。
a.测试表table1结构:
col1col2col3col4col5col6
12312019-10-10 12:12:122019-10-11 12:12:12 b.测试过程:
⚫标量函数
➢测试SQL:
标量函数:
SQL1: select col2, to_char(col5,'YYYY-MM-DD
HH:MM:SS'),count(distinct(col4)) from table1 group by col2, to_char(col5,'YYYY-MM-DD HH:MM:SS');
SQL2: select abs(col2), count(distinct(col4)) from table1 group by abs(col2), col1;
SQL3: select to_char(col5,'YYYY') from table1 group by to_char(col5,'YYYY-MM');
SQL4: select to_char(col2) from table1 group by abs(col2);
SQL5: select col3+abs(col2), count(distinct(col4)) from table1 group by abs(col2), col3;
嵌套函数:
SQL6: select sum(avg(abs(col2))) from table1 group by nvl(col2,col3);
SQL7: select avg(sum(avg(abs(col2)))) from table1 group by nvl(col2,col3);
SQL8: select to_char(abs(abs(col2))) from table1 group by
to_char(abs(abs(col2)));
➢测试结果:
SQL1-2、SQL5语句执行成功,SQL3-4语句执行失败,说明标量函数在select 投影列中单独存在时需与group by语句中出现的标量函数保持一致,包括函数名称及参数。
SQL6、SQL8语句执行成功,SQL7语句执行失败,说明select投影列中聚合函数最多嵌套两层,而标量函数可无限嵌套,但投影列与group by语句中嵌套的标量函数必须保持一致。
⚫表达式
➢测试SQL:
算术表达式
SQL1: select col1+col2, count(distinct(col4)) from table1 group by col2+col1, col3;
SQL2: select 1+col2, count(distinct(col4)) from table1 group by col2+1, col3;
SQL3: select col2+1+col3, count(distinct(col4)) from table1 group by col2+1, col3;
SQL4: select col2+col3+1, count(distinct(col4)) from table1 group by col2+1, col3;
比较表达式:
SQL5: select count(col2) from table1 group by col2>1;
逻辑表达式:
SQL6: select count(col2) from table1 group by col2>1 and col2<10;
按位表达式:
SQL7: select count(col2) from table1 group by col2 | col3;
➢测试结果:
SQL1-3:主流数据库均支持。
SQL4-7:均不支持。
说明group by语句后的表达式仅支持算术表达式且遵循交换律,对比较表达式、逻辑表达式和按位表达式并不提供支持。
⚫标量函数+表达式
➢测试SQL:
SQL1: select 1+abs(col2), count(distinct(col4)) from table1 group by abs(col2)+1, col3;
SQL2: select 1+abs(col2)+col3, count(distinct(col4)) from table1 group by abs(col2)+1, col3;
SQL3: select abs(col2+1) from table1 group by abs(1+col2);
SQL4: select abs(col2)+col3 from table1 group by col3+abs(col2);
SQL5: select sum(abs(col2+1)) from table1 group by 1+col2;
SQL6: select abs(col2+col3+1) from table1 group by abs(1+col2+col3);
SQL7: select abs(col2)+col3+1 from table1 group by abs(col2)+1, col3;
SQL8: select abs(col2-1) from table1 group by abs(1-col2);
➢测试结果:
SQL1-5:支持。
SQL6-8:均不支持。
2.3问题总结
经分析测试,主流数据库对Group By子句存在标量函数和表达式的场景支持较好。
GBase 8s数据库会加强兼容性方面的功能支持,以支持上述场景,降低从主流数据库迁移到GBase 8s数据库的适配难度,提供更强大的兼容能力。
3解决方案
为解决国产化替代过程中出现的较多兼容性要求,涵盖绝大多数Group By语句兼容性场景,GBase 8s 的Group By语句在现有基础上逐步加强对标量表达式的支持,可按照以下方式解决:
1)若投影列中存在Group By子句中的标量表达式,则必须与Group By子
句中的标量表达式保持一致。
2)标量表达式包括:
➢标量函数,标量函数的参数包含from子句中表的列;
➢算术表达式,算术表达式中参与运算的元素必须包含from子句中表的列;
➢标量嵌套函数,嵌套层级与现有GBase 8s规则保持一致;➢其他表达式情况与现有系统保持一致。