南大通用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 教程。
GBase 8a学习总结
技术产品规范/项目名称设计方案朗新云商项目开发部2017年10月目录1GBase数据类型及SQL语句1.1GBase 8a数据类型GBase 8a MPP Cluster 支持SQL92中定义得绝大多数数据类型,同时也支持SQL99与SQL2000 中定义得数据类型。
GBase 8a MPPCluster 支持得数据类型,如下表所示:1.1.1数值类型1.1.2字符类型GBase 8a MPP Cluster 目前支持三种字符类型,如下表所示:1.1.3二进制数据类型目前支持以下二进制数据类型,如下表所示:GBase 8a MPP Cluster➢BLOB列支持32KB 得存储容量。
➢创建表时,BLOB 列不可以有DEFAULT 值。
➢查询语句中,BLOB列不支持过滤条件。
➢查询语句中,BLOB列不支持OLAP 函数。
1.1.4日期与时间类型以下限制说明,就是针对TIMESTAMP数据列自动更新时得场景:1、在一张表中,只能自动更新表中第一个出现得TIMESTAMP 列,并且必须使用DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP来定义、2。
在一张表中,使用DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP来指定TIMESTAMP 列自动更新时,只能使用一次, 且用于第一个TIMESTAMP列、3。
从不同节点发起得SQL 语句,TIMESTAMP 列更新得时间为发起节点得本地时间;如果从不同得发起点发起SQL,而各个节点得本地时间又不同步,则无法保证TIMESTAMP 列更新值一致。
1.2SQL语言基础本章对GBase8a MPP Cluster 得SQL 语句得下列元素进行讨论:数值,例如字符串与数字;标识符,比如表与列名字;用户与系统变量;注释。
1.2.1数值这部分主要介绍在GBase 8a MPP Cluster 中使用得数值、包括字符串,数字,十六进制值,布尔值与NULL、1.2.1.1字符串字符串就是多个字符组成得一个字符序列,由单引号‚’‛或双引号‚"‛字符包围、例如:'a string’在一个字符串中,确定得序列具有特殊得含义,每个序列以反斜线符号‚\‛开头,称为转义字符。
GBase-8s数据库平台PLSQL语法手册-D
1.2.8.初始化为空值的变量................................................................................-10-
1.2.3.常量和变量的初始化..................................................................................-7-
1.2.4.使用NOTNULL............................................................................................-8-
1.7.5.比较运算符................................................................................................-32-
1.7.6.布尔表达式................................................................................................-35-
1.6.2.用SELECTINTO语句给变量赋值.............................................................-21-
1.6.3.INOUT子程序参数给变量赋值...............................................................-21-
GBase 8A MPP Cluster 产品培训-SQL指南
视图 索引
16
GBase 8a MPP Cluster的数据库对象及DDL
数据库对象 数据库对象 存储过程 自定义function 用户 用户权限 分布列 使用及约束 支持用户自定义存储过程的创建、删除; 支持用户自定义创建function; 集群支持账户的创建,删除,更名; 支持对用户的赋权及权限回收; DDL创建表时如果需要指定distributed by列,只能指定 表中一列为distributed by列;
3
GBase 8a MPP Cluster的数据类型
数值型范围
类型名称
TINYINT
SMALLINT INT(INTEGER) BIGINT FLOAT[(M[, D])] DOUBLE[(M, D)] DECIMAL[(M[, D])]
最小值
-127
-32767 -2147483647 -9.22337E+18 -3.40E+38 -1.7976931348623157E+308 -(1E+M -1)/(1E+D)
•
Oracle lengthb() 同 gbase length()
9
函数差异举例
• 取结果集中指定位置的记录
oracle: rownum 针对结果集,从1开始
SELECT * FROM TABLE rownum <=100 gbase:使用limit替换rownum,可用临时表替换临时结果集 语法:SELECT * FROM TABLE LIMIT start_rows,rows ;
详细信息可查看《GBase 8a MPP Cluster SQL参考手册》
南大通用GBase XDM复制功能的详解(1)
关于GBase XDM复制功能的详解(1)南大通用公司数据库产品GBase XDM是自主开发的一款内存级的对象数据库,其复制功能可实现数据的实时/定时数据同步。
保证在一个分布式的环境中, 主服务器的数据和从服务器的数据保持一致。
既然是复制,我们就要谈一下角色。
在复制的环境中设计到以下角色:⚫主数据库:主数据库的数据能够进行读写的操作。
主数据库可处理从数据库客户机发出的更新请求。
⚫从数据库:包含主数据库所含信息副本数据库。
从数据库可处理来自客户机的搜索请求。
⚫中间数据库:中间服务器数据库接收来自主数据库的修改,并把变化传送到从数据库。
GBase XDM数据库有三种复制的方式,分别是推拉复制、主从复制、和镜像复制。
这次我们先介绍推拉复制。
推拉复制是由数据使用方在本地维护信息数据片段的镜像拷贝。
是通过服务进程来实现的。
可以周期性地获取数据提供方的数据更新。
它以维护和交换cookie的方式,保持对复制内容状态的跟踪。
因为使用者和提供者维护各自数据内容的状态,使用者可以通过向提供者查询所需要的条目来进行增量的同步。
在拉模式同步模式中,提供者使用基于拉的同步机制,提供者不需要跟踪使用者,也不需维护历史信息。
提供者用来处理周期性检测请求的信息包含在请求的同步cookie中。
在推拉同步模式中,提供者使用基于推的同步机制,提供者保持跟踪使用者,使用者请求了持久的查询,提供者在复制内容改变时发送给使用者必需的更新。
举个例子:(3)磁盘磁盘1)从数据库发送请求,进行数据同步初始化,此时无须发送同步cookie;2)主数据库接收从数据库请求,将初始数据及表示当前状态cookie返回给从数据库;3)从数据库接收主数据库数据,更新本地数据,并保存cookie,cookie中的主要内容项有环境CSN,用该项来表示同步状态;4)此时应用系统对主数据库进行了操作;5)主数据库将数据保存,并更新相应的CSN,包括条目的CSN及环境CSN;6)当从数据库同步周期到时,从将向主发送同步变更数据请求,该请求包含了上次同步后获得的环境CSN;7)主数据库接收到从数据库的请求后,将所有条目CSN大于从数据库发过来的环境CSN的所有条目及新的环境CSN发送给从数据库;8)从数据库接收主数据库数据,据新变化更新本地数据,同时更新本地cookie,以便下次使用。
南大通用大数据新型列存储数据库GBase 8a 技术白皮书指南
南大通用大数据新型列存储数据库GBase 8a 技术白皮书指南引言随着大数据时代的到来,数据管理和分析变得越来越重要。
为了有效地处理和分析海量数据,数据库管理系统也在不断演进。
本文介绍了南大通用大数据新型列存储数据库GBase 8a的技术特点和优势,并提供了技术白皮书指南。
什么是GBase 8aGBase 8a是南大通用公司自主研发的一款新型列存储数据库。
它基于成熟的开源列存储项目Hawq,结合了南大通用的技术创新和优化。
GBase 8a具有高性能、高可用性和高扩展性的特点,在大数据领域具有广泛的应用前景。
技术特点列存储引擎GBase 8a采用了先进的列存储引擎,将数据按列进行存储,而不是传统的行存储方式。
这使得GBase 8a在数据读取和查询方面具有更高的效率和性能。
列存储还可以提供更好的数据压缩率,节省存储空间。
并行计算GBase 8a支持并行计算,可以将一个查询任务分为多个子任务并行执行。
这样可以有效地利用多核处理器和集群计算资源,加速查询和分析速度。
并行计算还可以实现水平扩展,支持大规模数据处理。
分布式架构GBase 8a采用了分布式架构,可以将数据分散存储在多个节点上。
这样可以提高系统的可用性和容错性,防止单点故障。
分布式架构还可以实现数据的负载均衡和并行处理,提高整体性能。
高可靠性GBase 8a具有高可靠性和容错性。
它支持数据备份和恢复,可以保护数据不受损失。
同时,GBase 8a还提供了故障转移和自动恢复机制,可以在节点故障或网络中断时自动切换到备用节点,确保系统的稳定运行。
多维数据模型GBase 8a支持多维数据模型,可以方便地进行数据的分析和查询。
它提供了丰富的数据分析函数和查询语言,可以进行复杂的数据操作和统计分析。
多维数据模型可以帮助用户更好地理解和利用数据。
技术白皮书指南GBase 8a的技术白皮书指南提供了详细的技术架构和实施指南,帮助用户更好地了解和使用GBase 8a数据库。
sql group by 高级用法
sql group by 高级用法
通过使用SQL中的GROUP BY语句,可以将数据按照指定的列进
行分组,并对每个分组进行合计计算。
除了基本的GROUP BY语法外,
还有一些高级用法,包括:
1. 在GROUP BY语句中使用表达式:可以在GROUP BY语句中使
用表达式而不是列名。
例如,可以使用YEAR(date)将日期分组为年份。
2. 在GROUP BY语句中使用多个列:可以将GROUP BY语句中的
多个列名称用逗号分隔,以便按多个列进行分组。
例如,可以将数据
按照年份和月份进行分组。
3. 对组进行过滤:可以在GROUP BY语句后面使用HAVING子句
来过滤出现在结果集中的组。
HAVING子句中的条件与WHERE子句中的
条件非常相似,但HAVING子句是在分组后执行的。
4. 使用GROUP BY ROLLUP:可以使用GROUP BY ROLLUP来生成一个子总计行。
ROLLUP关键字会生成一个额外的行,该行汇总所有组的
合计,并提供单独组的小计。
例如,可以使用GROUP BY ROLLUP将数
据按照年份和月份进行分组,并生成年份小计和总计。
5. 使用GROUP BY CUBE:可以使用GROUP BY CUBE生成一个包含所有可能的组合的结果集。
CUBE关键字生成一个结果集,该结果集包
含所有可能的组合,并提供所有组和整个结果集的合计。
这些高级GROUP BY用法可帮助从SQL查询中获得更多的信息和
更精确的结果。
GBase8s(GDCA)课堂练习题及答案总结
GBase8s(GDCA)课堂练习题及答案总结引言GBase8s(GDCA)作为一种国产分布式数据库,以其高性能、高可用性和高安全性在众多场景下得到了广泛应用。
为了帮助同学们更好地理解和掌握GBase8s的使用,本文将提供一组课堂练习题及答案,旨在巩固理论知识,提高实际操作能力。
一、练习题1. 选择题(1)以下哪项不是GBase8s(GDCA)的主要特点?A. 高性能B. 高可用性C. 低安全性D. 高兼容性(2)GBase8s支持哪种类型的分布式存储?A. 分区存储B. 集群存储C. 网格存储D. 文件存储(3)在GBase8s中,哪个组件负责处理查询请求和事务管理?A. 数据库引擎B. 存储引擎C. 事务管理器D. 查询优化器2. 填空题(1)GBase8s支持多种数据类型,包括________、________、________等。
(2)在GBase8s中,________是指将数据分布到不同的节点上,以提高系统性能和可靠性。
(3)GBase8s提供了________、________、________等多种事务隔离级别。
3. 简答题(1)请简述GBase8s的分布式事务处理机制。
(2)请解释GBase8s中的数据分区策略及其优势。
(3)如何通过GBase8s实现高可用性?二、答案及解析1. 选择题(1)答案:C解析:GBase8s(GDCA)作为一种高性能、高可用性和高安全性的分布式数据库,低安全性显然不是其主要特点。
(2)答案:A解析:GBase8s支持分区存储,即将数据分布到不同的分区中,以提高系统性能和可靠性。
(3)答案:A解析:在GBase8s中,数据库引擎负责处理查询请求和事务管理,而存储引擎负责数据的存储和检索。
2. 填空题(1)答案:整数、浮点数、字符串解析:GBase8s支持多种数据类型,包括整数、浮点数、字符串等,以满足不同应用场景的需求。
(2)答案:数据分区解析:在GBase8s中,数据分区是指将数据分布到不同的节点上,以提高系统性能和可靠性。
南大通用GBase8s国产数据库架构
GBase8s架构_01_简介1数据库管理系统概览▪数据库管理系统如GBase8s在架构上是非常类似Unix操作系统。
它包含三个主要部分组成,过程管理,内存管理,磁盘存储管理。
Unix的作业系统是设计用来处理“文件”(File) 类型的数据。
而数据库系统,是专门用来处理“表”(Table or relation)的数据类型。
▪每个“文件”是由无数的字符所组成。
每个“表”是由许多的“列”(Row)所组成。
由于他们被设计来处理不同的数据类型。
Unix操作系统或数据库管理系统的数据都有自己的方法来优化他们的组件,但他们基本的方式是非常相似。
▪GBase8s架构将分为如下四个方面进行介绍–架构概览– GBase8s Architecture–进程/多线程结构– Process/Multithreading Structure–内存结构– Memory structure–存储结构– Disk Storage structure2GBase8s架构概览Fan In for OLTP – (多到少)少数进程能同时处理数千笔交易,避免数千进程运行于操作系统之上Fan Out for DSS/OLAP –– (少到多)一件大型事务能拆成上百个小事务来并行处理GBase8s的实现多线程架构- 更少的进程进行数据库管理系统的活动- 一个进程可以为多个应用程序提供工作线程- 过程可以根据需要动态分配- 更好的可扩展性,更多的客户可以用最低限度的额外资源服务3GBase8s 服务器的部件(component)▪进程–执行数据库服务器实例(instance)请求的任务▪共享内存–缓存数据表的数据–维护和控制着进程所需的资源▪磁盘–存储了数据表的数据和数据库服务器的系统信息如下两张图介绍了这三种部件的职责和关系:GBase8s架构_02_进程及多线程结构4基于进程的数据库服务器的缺陷▪每个进程使用了一些时间片,如下图所示:多个进程一个接一个地运行。
南大通用GBase 8s的常用基础SQL语句(一)
南大通用GBase 8s的常用基础SQL语句(一)eg1. 创建不记录日志的库testdb,参考语句如下:CREATE DATABASE testdb;eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH BUFFERED LOG;eg3. 创建无缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH LOG;eg4. 创建ANSI的数据库(记录日志时无缓冲,SQL总在事务之中,拥有者名字被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH LOG MODE ANSI;2、创建普通数据表eg1、如下语句创建了一个集团信息表cti_vccinfo:create table cti_vccinfo(vccid CHAR(6) not null,vccname VARCHAR(255),effective INTEGER default0not null,agentmax INTEGER default0not null,ivrmax INTEGER default0not null,updatekey VARCHAR(30),primary key (vccid) constraint PK_CTI_VI);3、创建临时数据表临时数据表不在system catalog里注册。
一个临时数据表只对对应的某个session或connection可见,在对应的session或connection结束时被自动清除。
如果dbspace存在的话,临时数据表将建于临时dbspace中。
缺省情况下,是没有日志的。
临时数据表支持索引。
eg1:如下创建一个customer_temp的表,语句如下:CREATE TEMP TABLE customer_temp (num SERIAL NOT NULL,name CHAR(15),create_time DATETIME YEAR TO FRACTION(3));eg2:也可以将正式表中customer中的数据通过select......into temp语句将数据导入到临时首先,创建customer普通数据表,建表语句如下:CREATE TABLE customer (num SERIAL NOT NULL,name CHAR(15),create_time DATETIME YEAR TO FRACTION(3));接着,在普通数据表customer中插入三条记录,语句如下:insert into customer (name, create_time) values('amigo', '2010-11-17 15:41:00');insert into customer (name, create_time) values('xiexingxing', '2010-11-17 15:42:00');insert into customer (name, create_time) values('amigoxie', '2010-11-17 15:43:00');最后,通过select......into temp语句将普通数据表customer中的数据导入到临时表中的字段为select出的字段),参考语句如下所示:SELECT num, name, create_time FROM customer into TEMP customer_temp;4、创建主键约束1)主键约束定义在一个数据列或一组数据列上;2)主键的值是不允许重复的;3)主键的值不允许为NULL。
GBase8s管理工具之SQL编辑器使用简介
GBase8s管理工具之SQL编辑器使用简介GBase8s 数据库的管理工具GBaseDataStudio以图形化界面对数据库进行日常的操作、管理。
此管理工具是一个C/S结构的软件,安装简便,只需要获取安装包解压后即可使用。
使用本管理工具管理GBase8s的数据库,当新建数据库连接时,需要选择的连接类类型为“GBase 8s”,然后点“下一步”,填写连接数据库的信息,执行“下一步”,直到连接建立完成。
本管理器提供了SQL编辑器用于编写SQL语句和执行SQL语句。
使用查询编辑器能够以SQL命令的方式与数据库服务器交互。
1. 打开sql编辑器打开SQL编辑器有一下几种方式:✧通过工具栏中的“SQL编辑器”按钮;✧在“数据库导航”中,单击数据库下的“表”节点,右键单击某张表,选择“在SQL控制台读取数据”;✧通过菜单栏中的“SQL编辑器”,点击“SQL编辑器”菜单,点击“新建脚本”或者选择最近打开的SQL脚本;✧通过菜单栏中“SQL编辑器”,点击“新建SQL编辑器”菜单;2.编写和执行SQL语句SQL编辑器的中间区域是一个文本编辑框用来编辑SQL脚本。
在编写过程中,输入关键字,显示内容提示(支持小写字母)。
如下图图1 使用内容提示功能2.1 执行SQL脚本SQL脚本写完后,编辑完成后,您可以单击工具栏中的“执行 SQL 脚本”按钮(见图2)或者使用快捷键“Alt+X”,管理工具将会把 SQL 语句发送到数据库服务器去执行。
默认情况下执行后的结果将显示在 SQL 编辑器下部区域中的执行结果面板中。
如下图3所示:图2 执行SQL脚本按钮图标图3 执行SQl语句结果2.2刷新结果集刷新查询结果,sql 编辑器的查询条件刷新结果集。
2.3应用过滤条件输入结果集过滤条件,点击“应用过滤条件”,如下图所示:图 4 结果集过滤2.4移除所有过滤接图5的结果集过滤,点击“移除所有过滤”按钮,显示结果如下图所示:图 5移除所有过滤2.5自定义过滤点击“自定义过滤”,弹出窗口中输入过滤条件,也可以自定义,点击“确定”,结果集中会显示过滤后的结果。
- 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规则保持一致;➢其他表达式情况与现有系统保持一致。