在 SQL 被引入的 47 年中,它經(jīng)歷了許多數(shù)據(jù)庫的誕生和消亡,也經(jīng)歷了許多數(shù)據(jù)處理方式的誕生和消亡。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供
景縣網(wǎng)站建設(shè)、景縣做網(wǎng)站、景縣網(wǎng)站設(shè)計、景縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、景縣企業(yè)網(wǎng)站模板建站服務(wù),10年
景縣做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
以下為譯文:四十七年前,兩位年輕的IBM研究人員在數(shù)據(jù)庫上提出了一種新的語言,這是一種關(guān)系型語言,它奉行一切數(shù)據(jù)可以被聲明性地操作和容易操作的思想。自Don Chamberlin和Ramond Boyce出版《SEQUEL:結(jié)構(gòu)化英語查詢語言》一書后的幾年里,關(guān)系模型和SQL已經(jīng)擴展并被大量的技術(shù)所采納,如OLTP、OLAP、對象數(shù)據(jù)庫、對象關(guān)系數(shù)據(jù)庫,甚至NoSQL等等。SQL同時也啟發(fā)了非關(guān)系數(shù)據(jù)庫的查詢語言設(shè)計:如SQL for Object-Database(用于對象數(shù)據(jù)庫的SQL),SQL for Object-Relational(用于對象關(guān)系型數(shù)據(jù)庫的SQL),SQL for XML、SQL for Spatial、SQL for Search、SQL for JSON、SQL for Timeseries、SQL for Streams等等。每個BI工具都使用各種各樣的SQL與數(shù)據(jù)交互。實際上,SQL是最成功的第四代語言。
“SQL是一種只有它自己的力量才能超越它的神秘手段。”——Lukas Eder
正如Don最近所說的,SQL是基于關(guān)系代數(shù)的基礎(chǔ),目的是通過提供一個類似于英語的查詢語言來更簡單地實現(xiàn)以下目標(biāo):
- 聲明性的語言和流程(而不是程序性的)
- 使語言可組合以幫助輕松編寫復(fù)雜的查詢
- 和Edger F Codd開發(fā)的關(guān)系模型共同工作
雖然大數(shù)據(jù)試圖為數(shù)據(jù)倉庫擴展和替換關(guān)系型系統(tǒng),但它們試圖使用相同的SQL語言。Hive, Impala、Drill、BigSQL使用的語言都深受SQL啟發(fā),優(yōu)化器和執(zhí)行類似于SQL的MPP執(zhí)行。他們還定期添加新的SQL功能。所有這些都發(fā)生在你能想到的每種類型的數(shù)據(jù)存儲和模型上。SQL中數(shù)據(jù)存儲格式、數(shù)據(jù)模型和查詢處理的分離帶來了顯著的好處。在SQL被引入的45年中,它經(jīng)歷了許多數(shù)據(jù)庫的誕生和消亡,也經(jīng)歷了許多數(shù)據(jù)處理方式的誕生和消亡。支持NoSQL運動的一些人暗示SQL和SQL數(shù)據(jù)庫不能將會消亡,即使是無意的。但SQL陣營已經(jīng)邁步前進,Don Chamberlin最近說道:“當(dāng)一種語言得到了普遍認可,以至于其他語言開始將自己定義為不是那種語言時,它必須做得非常好?!绷硪环矫?,數(shù)據(jù)庫只是轉(zhuǎn)向了No-SQL。雖然目前對No-SQL的定義是“Not Only SQL”,但最初的想法是不使用SQL,而代之以其他語言和框架,如map-reduce。然而十年后,每個流行的NoSQL數(shù)據(jù)庫都有了一個SQL變體:如Couchbase的N1QL,Cassandra的CQL,Elastic的ElasticSearch。你會說,“MongoDB沒有SQL”。我會說,“瞇眼想一想!你會看到一個非常簡單的SQL實現(xiàn)。” 通過在MongoDB中使用一個簡單的,有些程序化的,特別的設(shè)計,一些松散組合性的查詢,優(yōu)化以及許多創(chuàng)新都可以使用SQL完成。雖然關(guān)系模型非常成功,但是數(shù)據(jù)庫支持各種數(shù)據(jù)模型:如JSON, Graph, XML, Timeseries, Spatial, Wide-column, Columnar, Document等等。大多數(shù)(如果不是全部)數(shù)據(jù)庫都有自己的SQL版本。如N1Q1(SQL for Jason)、SQL/XML、SQL from InfluxDB、SQL/Spatial、CQL in Cassandra等等,甚至NoSQL數(shù)據(jù)庫也實現(xiàn)了SQL和SQL啟發(fā)的查詢語言。即使在新的酷炫的“數(shù)據(jù)科學(xué)”世界中,SQL技能也是強烈推薦的。Lukas Eder在他的“must-see”談話中闡述了這一點。有關(guān)他的談話,請參見相關(guān)鏈接。
現(xiàn)在,NoSQL數(shù)據(jù)庫相關(guān)的SQL項目要比SQL數(shù)據(jù)庫的項目多。
SQL 為何會成功?
- 聲明性:你只需要聲明輸出,查詢引擎就會找出執(zhí)行查詢的最佳方式。優(yōu)化器,特別是1979年P(guān)at Selinger等人發(fā)明的基于成本的優(yōu)化器,幫助持續(xù)地改進性能。這為每個新進入者提供了一個很高的標(biāo)準(zhǔn)。最近一篇關(guān)于Apache Hive的論文就是一個復(fù)雜性和完善涉及的例子為什么SQL如此成功?
- SQL不僅用于“查詢”,還用于更新數(shù)據(jù)、執(zhí)行事務(wù)。存儲過程,UDF通過將過程語言與聲明性SQL相結(jié)合來擴展訪問范圍。
- SQL具有可塑性。它已經(jīng)多次標(biāo)準(zhǔn)化,每次都會添加一本功能齊全的書,一個充滿語法的商店,以及一個充滿關(guān)鍵詞的詞典。當(dāng)然,并非所有的SQL都是相同的。即使是RDBMS上的傳統(tǒng)SQL實現(xiàn)也不完全兼容,除非您小心地編寫SQL使其兼容。通過所有這些,SQL的原始精神得以保留。SQL的一個進化的例子是SQL++。Don Chamberlin和Mike Carey教授討論了支持復(fù)雜數(shù)據(jù)模型的需求,使用戶和開發(fā)人員可以輕松訪問JSON中的數(shù)據(jù)。Don寫的書《SQL++ for SQL users:A Tutorial》介紹了SQL++的最新發(fā)展,SQL++這種語言是為靈活的JSON數(shù)據(jù)模型上的數(shù)據(jù)處理而設(shè)計的,它保持了與SQL的兼容。
- 就像它所借用的英語一樣,SQL對新數(shù)據(jù)類型、訪問方法和用例的新思想和擴展持開放態(tài)度。
- SQL與數(shù)據(jù)表示的獨立性使其可以用于非關(guān)系數(shù)據(jù):CSV, JSON和所有大數(shù)據(jù)格式。有些人把關(guān)系模型表示的剛性和SQL的剛性混為一談。實際上,對于任何給定的Schema,SQL允許你對任何數(shù)據(jù)格式執(zhí)行select-join-group-aggregate-project操作
評估SQL支持
既然SQL無處不在,那么你就需要在支持級別上進行盡職調(diào)查。
- 找出每個工作負載的特征和目標(biāo)。例如,交互式應(yīng)用程序,或交互式分析,或批量分析,或BI工作負載等等。
- 支持的聲明反映了操作能力。
- 在表達式(標(biāo)量、聚合、布爾值)、聯(lián)接(內(nèi)聯(lián)、左聯(lián)/右聯(lián)/全聯(lián))、子查詢、派生表、排序和分頁(LIMIT / OFFSET)方面的語言能力。
- 索引:沒有正確索引的SQL只是一個圖靈機器原型。
- 優(yōu)化器:查詢重寫,選擇正確的訪問路徑,創(chuàng)建最佳執(zhí)行路徑是使得SQL語言成為成功的第4代語言的原因。有些具有基于規(guī)則的優(yōu)化器,有些具有基于成本的優(yōu)化器,而有些則兩者都有。評估優(yōu)化器的質(zhì)量至關(guān)重要。典型的基準(zhǔn)(TPC-C、TPC-DS、YCSB、YCSB-JSON)在這里對你沒有幫助。
- 正如我們常說:“數(shù)據(jù)庫有三個重要方面:性能、性能和性能”。測量工作負載的性能很重要。YCSB和擴展的YCSB-JSON將使評估更容易。
- SDK:豐富的SDK和語言支持,加快你的開發(fā)速度。
- BI工具支持:對于大型數(shù)據(jù)分析,通過標(biāo)準(zhǔn)數(shù)據(jù)庫連接驅(qū)動程序來支持BI工具通常非常重要。
N1QL的創(chuàng)建者Gerald Sangudi曾經(jīng)說過,SQL是成功的,因為它代表了數(shù)據(jù)處理的基本操作。SQL支持一組豐富的操作:select-join-nest-unnest-group-aggregate-having-window-order-paginate-set-ops。這是我們(或機器)在指定數(shù)據(jù)操作時的想法嗎?雖然還有待觀察,但像Python和Java這樣的語言正在為數(shù)據(jù)的這些操作添加運算符。也許,其他人也會效仿。SQL已經(jīng)進入了關(guān)系型數(shù)據(jù)庫模型不曾涉足的領(lǐng)域??梢院敛豢鋸埖卣f:
SQL已死,但SQL將永存!
本文題目:SQL已死,但SQL將永存!-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://jinyejixie.com/article14/dedcde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、移動網(wǎng)站建設(shè)、軟件開發(fā)、用戶體驗、網(wǎng)頁設(shè)計公司、企業(yè)建站
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)