成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析構(gòu)建SQL-to-SQL的翻譯器

運維 數(shù)據(jù)庫運維
如果你愛一個人,就讓他寫SQL,因為那是天堂。如果你恨一個人,就讓他寫SQL,因為那是地獄。

[[356455]]

如果你愛一個人,就讓他寫SQL,因為那是天堂。

如果你恨一個人,就讓他寫SQL,因為那是地獄。

天堂,是因為他如此簡單,又功能強大,可以極大簡化你的程序。

地獄,是因為他如此紛繁,復(fù)雜,還有各種方言標(biāo)準(zhǔn),而且不通用,當(dāng)你試圖切換數(shù)據(jù)庫產(chǎn)品的時候,什么叫生不如死 ......

那我們就不能構(gòu)建一個統(tǒng)一的數(shù)據(jù)庫語言么?這個真不能,不是技術(shù)上不能,而是利益趨勢,大家堅守自己的方言堡壘,而且越建越高。

ORM或許是解決這個問題的一個途徑,正如其名,既然是對象關(guān)系映射,未免就會是一套機械、呆板的程序,我們只能將關(guān)系和實體映射出來,所以,這并非是解決問題的根本途徑,但不能否認它確實是最受歡迎,使用最廣泛,代價最小的方案,沒有之一。

那我們是不是能從SQL語言翻譯的角度來解決這個問題呢?即在將SQL拋給數(shù)據(jù)庫執(zhí)行之前,進行一次翻譯工作?

我們可以對SQL進行語法分析,形成一顆AST(抽象語法樹),然后遍歷解析

我們在遍歷語法樹的時候,就進行一次翻譯轉(zhuǎn)換,形成其他方言的SQL。

這個方案也許不盡善盡美,但是至少解決了一個類似“同聲傳譯”的問題。

對上述模型進一步演化,在AST層面進行雙向轉(zhuǎn)化,那這個實現(xiàn)是不是就看起來非常優(yōu)雅了?

我們已經(jīng)定制了一條看似合理的Roadmap,那么如何將其實現(xiàn)落地呢?

下表,是我對可完成上述任務(wù)的框架進行的一些總結(jié)

個人是十分推崇Calcite的,因為其本身更像是一個沒有物理引擎的數(shù)據(jù)庫引擎,這可能聽起來有點滑稽,但是確實,他可以很好的解析SQL,并生成執(zhí)行計劃,如果你想,也可以針對其進行你希望的優(yōu)化,這就讓我們的控制力大大加強了,至少在數(shù)據(jù)庫之上,就可以“為所欲為”了。

Durid提供的方言包,比較多,上手比較容易(文末附錄里,貼出了一個查詢的AST,結(jié)構(gòu)還是挺清晰的),不過如果想達到AST層面的轉(zhuǎn)換,對整套API需要進行一定的手術(shù)才行。

Antlr 可以說是非常強大的,他是單純的語法解析工具,但是其語法文件比起javacc來,何止是平易近人,簡直就是平易近人... 而且,shardingsphere,presto都是基于其開發(fā)的。在代碼倉庫里,也有很多線程的語法文件,可以使用,不過要達到上述目的,也需要走很長的路。

本文轉(zhuǎn)載自微信公眾號「麒思妙想 」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系麒思妙想 公眾號。

 

責(zé)任編輯:武曉燕 來源: 麒思妙想
相關(guān)推薦

2021-04-08 20:14:41

SQL流程設(shè)計

2023-08-07 08:00:00

開源ChatGPTSQL

2016-12-21 08:40:53

微軟萬能翻譯器

2009-09-17 17:34:23

linq to sql

2009-09-10 18:02:23

LINQ to SQL

2009-09-16 17:11:35

LINQ To SQL

2009-09-15 10:12:37

LINQ To SQL

2009-09-14 09:46:00

LINQ to SQL

2009-09-17 18:05:15

linq to sql

2011-09-02 14:05:25

SQL Server性能調(diào)優(yōu)

2010-04-09 12:20:11

Oracle SQL

2009-09-14 17:40:47

LINQ To SQL

2009-07-03 17:48:34

JSP頁面翻譯

2009-07-06 18:18:41

SQL Server全

2009-09-10 10:09:46

LINQ to SQL

2009-09-18 14:25:36

LINQ to SQL

2009-09-18 14:09:57

SQL CLR存儲過程

2009-03-13 10:03:34

2009-09-14 19:20:22

LINQ TO SQL

2011-07-27 09:57:24

SQL TraceOracle
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91精品一区二区三区久久久久 | 天天夜干| 国产成人av在线 | 亚洲国产精品美女 | 欧美激情视频网站 | 欧美xxxx黑人又粗又长 | 国产一区久久精品 | 一区二区在线看 | 久久久久久国产精品免费免费狐狸 | 成人三级影院 | 成人小视频在线观看 | 亚洲一区在线日韩在线深爱 | 国产在线观看一区二区三区 | 午夜精品福利视频 | 自拍视频精品 | 亚洲在线久久 | 蜜桃传媒av| 国产精品视频不卡 | 国产成人精品久久 | 中文字幕啪啪 | 日韩欧美在线观看 | 亚洲一区在线播放 | 色婷婷综合久久久中字幕精品久久 | 一区二区三区在线免费观看视频 | 欧洲一级毛片 | 午夜av电影 | 亚洲一区二区久久 | 亚洲日韩中文字幕 | 午夜电影日韩 | 日韩av电影在线观看 | 一本一道久久a久久精品综合 | 黄片毛片免费观看 | 九九伦理电影 | 欧美韩一区二区 | 欧美在线播放一区 | 成人在线观看欧美 | 91精品中文字幕一区二区三区 | 国产成人精品一区二区三 | 最新日韩在线视频 | 毛片韩国 | 国产成人一区二区三区精 |