日前,中国PostgreSQL数据库生态大会在北京顺利召开,会上公布了2022年度PostgreSQL中国技术评选获奖名单,凭借对PostgreSQL中国生态的重大推动与贡献,腾讯云TDSQL斩获“最佳数据库产品”奖。

一、简介
1. 中国数据库发展历史和现状

2. 国产当自强, 数据库自主可控破在眉睫
基础软件“皇冠上的明珠” 三大“卡脖子”技术的大动脉 计算产业之“根” 大数据发展之“魂”
3. 国产数据库该如何去O?
4. TDSQL Oracle兼容能力概述
对内置数据类型、内置系统函数、PLSQL等语法层面兼容 对分区表、递归查询、DBlink、伪列等功能层面兼容
JDBC配合内核能力做用法兼容 OCI对oracle接口用法做应用层兼容 Pro*C在嵌入式SQL做代码层兼容
异构数据库静态对象、应用SQL差异性评估 异构迁移自动改造 Oracle数据迁移和数据同步
二、内核层面
Oracle兼容能力
1. 数据类型兼容
数值类型:NUMBER、FLOAT、BINARY_FLOAT、BINARY_DOUBLE 字符类型:CHAR、NCHAR、VARCHAR2、NVARCHAR2、LONG 大对象类型:BLOB、CLOB、NCLOB 兼容了DATE、TIMESTAMP、INTERVAL等 其他如:RAW、LONG RAW、BFILE、 ROWID、UROWID
2. SQL语法兼容
语法支持:MERGE INTO、UPDATE支持SUBQUUERY、CONNECT BY、INSERT ALL/FIRST、FORCE VIEW、PIVOT/UNPIVOT子句、OFFSET…FETCH子句等 增强了分区功能,例如:MERGE/SPLIT分区,DEFAULT分区维护 各种伪列支持:ROWNUM、CONNECT BY相关伪列 如:LEVEL等 支持HINT功能 同义词、DBLINK、系统函数、系统表支持 空串与NULL等价
3. PL/SQL语法兼容
存储过程、函数的创建,如:以IS作为PLSQL块定义开始、可以用/作为定义结束 存储过程、函数支持COMMIT、ROLLBACK事务控制 兼容游标属性支持:isopen、found、notfound、rowcount 函数、存储过程支持OUT出参,打破原有限制 支持集合类型、包、CREATE TYPE 其他PL语句支持,如:BULK COLLECT、语句LABEL 支持预定义的系统包:dbms_output、dbms_assert、dbms_lob、存储过程调试包dbms_debug等
4. 层次查询
树的深度遍历 增加Connect By算子,实现递归执行 优化器From表生成两个Path 将WHERE条件下推到不同的Path上 支持level、connect_by_isleaf、 connect_by_root、 sys_connect_by_path等

5. MERGE INTO
MERGE INTO语法支持: 优化器针对MERGE INTO生成LEFT JOIN,source table 作为left表 扩展ModifyTable算子功能,增加CMD_MERGE 执行器增加ExecMerge,当tuple与merge条件match时,更新tuple或删除tuple;当tuple与merge条件不match的时候,插入新的tuple


6. ROWID & ROWNUM
建表支持指定 WITH ROWID参数 更新时,新元组的ROWID值不变 ROWID列存在索引,以ROWID查询时加快查询速度


7. 分区表能力
分区类型支持RANGE、LIST、HASH分区,以及这些类型的组合分区 支持对分区的单独访问,例如SELECT * FROM 表 PARTITION(子分区) 支持分区键更新 新增分区后,自动维护DEFAULT分区 支持分区合并、分裂

8. PL/SQL - 语法
以IS作为代码块的起始定义 使用/作为结束定义结束 使用END procname作为函数代码块结束、等

以AS作为代码块的起始定义 使用;作为定义结束 使用$$定义整体代码块、等

9. PL/SQL - PACKAGE
支持公共、私有包变量定义 支持包定义自定义类型 支持包初始化模块 包初始化块等

10. PL/SQL - 自治事务
自治事务由主事务启动;自治事务运行时,主事务挂起 自治事务与启动它的主事务相互独立 自治事务可以用在存储过程、函数、匿名块以及触发器中 如果自治事务与主事务产生锁冲突,系统启动死锁检测,自治事务报告异常


三、驱动层面应用兼容
1. JDBC规范适配
实现了 JDBC4.0、JDBC4.1、JDBC4.2 规范 适用于 PostgreSQL 8.2 及以上版本 适用于 TDSQL数据库所有版本 基于 JAVA6 和 JAVA8 平台编译构建,适配 JAVA6、JAVA7、JAVA8 及以上平台使用
2. JDBC实现兼容
3. TDSQL OCI功能兼容
4. TDSQL Pro*C功能兼容
四、Oracle to TDSQL迁移
1. 迁移工程面临问题解决

1. 成本高工作量大,可通过数据库迁移平台提供简单易用的数据库迁移平台,减少人工手动操作。
2. 迁移技术复杂,可通过专业化的研发和运维实践解决,腾讯联合生态多年数据库运维和研发经验工程师的技术积累。
3. 兼容程度不明确,通过自动化覆盖评估迁移改造,平台化的数据库对象和应用评估功能,全面完整的迁移评估报告。
4. 迁移过程无标准化流程,通过标准化异构迁移流程,从评估、改造、迁移、校验等标准化和经检验的迁移流程。
2. 迁移工具技术架构

3. 兼容性评估

应用端发送给源端执行的SQL评估 评估效果和运行时间、抓取得SQL有关
4. 迁移全流程介绍

5. 双轨运行方案
增加回退选择 增加业务可靠性 增加数据保护
流量镜像复杂性 数据映射复杂性 增加迁移复杂性

6. TDSQL成功去O部分案例

生产环境更新表结构效率提升50%,数据库扩展性得到提升 高度Oracle兼容能力帮助业务短期迁移上线 同城容灾双中心,提升系统的可靠性
汇聚系统最大性能3.9w条/秒查询速度 物理节点超过300台
﹀
﹀
﹀

金融数字化转型落地实践,腾讯云数据库的三问三答
↓↓点击阅读原文,了解更多优惠
文章转载自腾讯云数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




