过去去O
是需要讨论的事,当今去O
是已经在行动的事实。
从上图看Oracle
很强大,要去O
对企业来说挑战很大,之前对Oracle
依赖越多、越大,去O
难度越多、越大。
阿里基于过去10年去O
长征路程形成了一套成熟的去O
解决方案:
ADAM + DTS + PolarDB
ADAM: Advanced Database&Application Migration
(以下简称ADAM) 是一款把数据库和应用迁移到阿里云(公共云或专有云)的产品,显著地降低了上云的技术难度和成本,尤其是Oracle数据库应用。ADAM全面评估上云可行性、成本和云存储选型,内置实施协助,数据、应用迁移等工具,确保可靠、快速上云。
DTS: 数据传输服务
(Data Transmission Service) DTS支持关系型数据库、NoSQL、大数据(OLAP)等数据源间的数据传输。 它是一种集数据迁移、数据订阅及数据实时同步于一体的数据传输服务。数据传输致力于在公共云、混合云场景下,解决远距离、毫秒级异步数据传输难题。 它底层的数据流基础设施为阿里双11异地多活基础架构, 为数千下游应用提供实时数据流,已在线上稳定运行6年之久。 您可以使用数据传输轻松构建安全、可扩展、高可用的数据架构。
PolarDB: PolarDB
是阿里巴巴自主研发的下一代关系型分布式云原生数据库,目前兼容三种数据库引擎:
MySQL、PostgreSQL、高度兼容Oracle语法。 计算能力最高可扩展至1000核以上,存储容量最
高可达 100T。经过阿里巴巴双十一活动的最佳实践,让用户既享受到开源的灵活性与价格,又享
受到商业数据库的高性能和安全性
我们今天重要讨论和介绍的是 ADAM
ADAM
ADAM
: Advanced Database&Application Migration
(以下简称ADAM) 是一款把数据库和应用迁移到阿里云(公共云或专有云)的产品,显著地降低了上云的技术难度和成本,尤其是Oracle数据库应用。ADAM全面评估上云可行性、成本和云存储选型,内置实施协助,数据、应用迁移等工具,确保可靠、快速上云。
功能
- 采集:客户
数据库机器信息
、Oracle
、DDL
、SQL
等数据收集 - 画像:根据采集客户信息画像。如:
客户机器性能
、容量
、Oracle特性
- 评估报告:根据采集的信息ADAM给出改造迁移评估报告
- 数据库改造迁移:迁移经过
ADAM
改造之后的DDL
DDL解析揭秘
今天主要讲解ADAM
失败转换DDL
、SQL
词法分析(Lexer)
是计算机科学中将字符序列转换为标记(token)序列的过程,供语法分析器调用
标记(Token)
标记是一个字串,是构成源代码的最小单位。 从输入字符流中生成标记的过程叫作标记化(tokenization),在这个过程中,词法分析器还会对标记进行分类。
词法分析器通常不会关心标记之间的关系,词法分析器能够将字串识别为标记,但并不保证字串是否符合整个语法。
针对如下查询语言表达式:
SELECT * FROM DUAL WHERE ID = 1 AND NAME = 'name';
将其标记化后可以得到下表内容:
语素 | 标记类型 |
---|---|
SELECT | SELECT 关键词标识符 |
- |
*
关键词标识符Token FROM |FROM
关键词标识符Token DUAL| 标识符Token WHERE |WHERE
关键词标识符 ID | 标识符Token = |=
关键词标识符Token AND |AND
关键词Token NAME | 标识符Token ‘name’ |文本值
Token ; |SEMI
标识符Token
语法分析根据词法分析的Token进行语法分析。可识别判断Token是否符合语法规则。
词法分析代码示例如下:
语法分析(Parser)
根据某种给定的形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。
如上,针对查询语言表达式:
SELECT * FROM DUAL WHERE ID = 1 AND NAME = 'name';
SELECT
关键词标识号Token, 语法分析知道根据SELECT
语法来分析后续文本。- 根据
Select语法
分析*
关键词标识符Token 等后面的Token
算符优先分析
在语法分析当中有些表达式
组合是有优先级
的。
如下所示:
E: E (+、-) E (+/-) E
E: E (*、/) E E (*、/) E
+
、-
、*
、/
中 *
、/
优先级比 +
、-
高,*
、/
优先组合
分析我们可以得到如下表达式:
E: T (+、-) T (+、-) T
T: X (*、/) X (*、/) X
- 语法分析拿到第一个token,分析生成对应的对象
- 语法分析拿到第二个token,分析是
+
、-
Token - 语法分析调用分析
*
、/
的语法分析
语法分析伪代码:
抽象语法树(AST)
抽象语法树
(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构
语法分析生成生成抽象语法树, 语法树具体如下:
转换
分析源数据库DDL
、SQL
转换对应的目标库DDL
、SQL
针对查询语言表达式,把 绑定变量:id
变成 ?
:
SELECT * FROM DUAL WHERE ID = :id
只需要把语法树中的 定变量
语法对象替换成 ?
语法对象,如下: