GaussDB 数据库分析
GaussDB:开源数据库。华为的 Gauss 数据库是一个开源数据库,基于 PostgreSQL9.2 开发。我们知道 PostgreSQL 本身就是一个开源数据库品牌。
分布式:
GaussDB:三大产品线系列。高斯数据库研发始于 2011 年。目前已经开发有三个产品系 列:GaussDB 100、GaussDB 200、GaussDB 300。
GaussDB 100:主要以 OLTP 为主。GaussDB 100 研发开始于 2011 年,与后面的 GaussDB 200/300 不同,GaussDB 100 并不是一个分布式数据库。GaussDB 100 包括 两条线,一条产品线是基于单机版开源数据库 PostgreSQL 研发的产品,另一条线是自研 内核的 GaussDB 100 产品。后面这一条线是近几年华为研发的产品。目前该产品已经应 用在招商银行。 GaussDB 100 主要是 OLTP,即事务型数据库。
GaussDB 200:以 OLAP 为主,兼顾 OATP。华为 GaussDB 200 开始于 2012 年,在基 于传统关系型数据库的 SQL 引擎和事务强一致性等基础上,进行了分布式、并行计算的 改造。历时 6 年,打造了一款架构领先的分析型数据库,为各行业 PB 级海量数据分析提 供有竞争力的解决方案。GaussDB 200 既可以适用于 OLTP,也可以应用于 OLAP。
GaussDB 300:: HTAP,OLTP 和 OLAP。GaussDB 300 是一个分布式并行关系型数据 库系统,是企业级分布式 HTAP 数据库(Hybrid Transaction and Analytical Process,混 合事务和分析处理)。GaussDB 300 架构上着重构筑传统数据库的企业级能力和互联网分 布式数据库的高扩展和高可用能力,完全兼容 SQL 标准,提供百万级 TPMC 的交易处理 能力和企业级可靠性。
GaussDB 200/300 都是基于开源数据库 PostgreSQL 研发,虽然是基于开源数据库,但 已经对开源代码进行了大量修改,在很大程度上接近于自研。GaussDB 200/300 既可以 支持 OLTP 也可以支持 OLAP,也是华为投入精力最大、研发时间最长的产品线。目前已 经在工商银行和民生银行应用。
GaussDB在工商银行的使用,
GaussDB数据库目前在建行也在使用和推广中,目前主要在信用卡的国产化改造中使用。根据官方的介绍是:依托GaussDB强大的数据存储与处理能力,为信用卡核心系统提供高性能和安全可靠的综合表现。GaussDB是进行了联机分析类交易。此外建行也在进行GoldenDB、OceanDB使用,并且建信金科开发了以Mysql开源为基础的自己的分布式数据库。
下面列了一下Oracle和 GaussDB的SQL语法差异
Oracle | GaussDB | |||
类别 | 子类 | 描述/相关语法 | 是否兼容 | 描述说明 |
DML | INSERT | 兼容SQL标准的INSERT语句:single_table_insert: INSERT into_caluse values_clause|subquery | 是 | |
UPDATE | 兼容SQL标准的UPDATE语句:UPDATE table_clause SET where_clause returning_clause; | 是 | ||
DELETE | 兼容SQL标准的DELETE语句:DELETE FROM table_expr where_clause returning_clause; | 是 | ||
MERGE INTO | 普通的MERGE INTO语句:MERGE INTO table USING table ON condition WHEN MATCHED UPDATE WHERE WHEN NOT MATCHED INSERT WHERE | 是 | ||
SELECT | 兼容SQL标准的SELECT语句:SELECT … FROM … WHERE.. GROUP BY .. ORDER BY .. HAVING … LIMIT .. | 是 | ||
START WITH CONNECT BY | 否 | 使用WITH RECURSIVE递归改写 | ||
集合操作 | 是 | |||
排序 | 是 | |||
AP函数CUBE ROLLUP | 是 | |||
外连接操作符(+) | 是 | |||
DUAL表 | 是 | |||
对象 | index | btree索引 | 是 | |
bitmap索引(将rowid以bitmap形式储存) | 否 | |||
partitioned索引(包含分区,每个分区包含索引列出现的每个值) | 否 | |||
表达式索引 | 否 | 支持,语法不同 | ||
domain索引(具体应用相关的类型的索引) | 否 | |||
package | 包括编程对象、存储过程、函数的合集 | 否 | ||
database link | 访问其它数据库的功能 | 否 | 通过EC实现类似功能 | |
table | 符合SQL标准的基本表功能 | 是 | ||
其它表属性,例如:shareded table, duplicated, on commit选项 | 部分兼容 | 部分存储参数、关键字存在差异 | ||
partition | range分区 | 是 | ||
list分区 | 否 | |||
hash分区 | 否 | |||
多层分区 | 否 | |||
trigger | 触发器 | 否 | 支持,语法不同 | |
role | 包含某些权限的角色 | 否 | 支持,语法不同 | |
user | 使用数据库的用户 | 是 | ||
statistic | 单列统计信息 | 否 | 支持,语法不同 | |
多列统计信息 | 否 | 支持,语法不同 | ||
表达式统计信息 | 否 | |||
tablespace | 符合SQL标准的基本表空间功能 | 是 | ||
其它表空间属性,例如:undo/permanent/temporary选项 | 否 | |||
tablespace set,逻辑存储单元 | 否 | |||
schema | oracle使用create schema语句同时创建多个表和视图,以及赋权操作 | 否 | 支持,语法不同 | |
sequence | SQL标准支持的sequence用法 | 是 | ||
其它sequence选项,例如:cycle, keep, order, global | 否 | |||
audit | 对登录和SQL语句进行审计 | 否 | 支持,语法不同 | |
procedure/function | SQL标准支持的函数定义语法 | 是 | ||
将Java/library纳入数据库对象进行管理 | 否 | |||
view | 符合SQL标准的基本视图功能 | 是 | ||
updatable view(可更新视图) | 否 | |||
synonym | 同义词 | 是 | ||
directory | 目录 | 是 |