SQL 已死,但 SQL 將永存!
在 SQL 被引入的 47 年中,它經歷了許多資料庫的誕生和消亡,也經歷了許多資料處理方式的誕生和消亡。
“SQL是一種只有它自己的力量才能超越它的神秘手段。”——Lukas Eder
宣告性的語言和流程(而不是程式性的) 使語言可組合以幫助輕鬆編寫複雜的查詢 和Edger F Codd開發的關係模型共同工作
現在,NoSQL資料庫相關的SQL專案要比SQL資料庫的專案多。
SQL 為何會成功?
宣告性:你只需要宣告輸出,查詢引擎就會找出執行查詢的最佳方式。最佳化器,特別是1979年Pat Selinger等人發明的基於成本的最佳化器,幫助持續地改進效能。這為每個新進入者提供了一個很高的標準。最近一篇關於Apache Hive的論文就是一個複雜性和完善涉及的例子為什麼SQL如此成功? SQL不僅用於“查詢”,還用於更新資料、執行事務。儲存過程,UDF透過將過程語言與宣告性SQL相結合來擴充套件訪問範圍。 SQL具有可塑性。它已經多次標準化,每次都會新增一本功能齊全的書,一個充滿語法的商店,以及一個充滿關鍵詞的詞典。當然,並非所有的SQL都是相同的。即使是RDBMS上的傳統SQL實現也不完全相容,除非您小心地編寫SQL使其相容。透過所有這些,SQL的原始精神得以保留。SQL的一個進化的例子是SQL++。Don Chamberlin和Mike Carey教授討論了支援複雜資料模型的需求,使使用者和開發人員可以輕鬆訪問JSON中的資料。Don寫的書《SQL++ for SQL users:A Tutorial》介紹了SQL++的最新發展,SQL++這種語言是為靈活的JSON資料模型上的資料處理而設計的,它保持了與SQL的相容。 就像它所借用的英語一樣,SQL對新資料型別、訪問方法和用例的新思想和擴充套件持開放態度。 SQL與資料表示的獨立性使其可以用於非關係資料:CSV, JSON和所有大資料格式。有些人把關係模型表示的剛性和SQL的剛性混為一談。實際上,對於任何給定的Schema,SQL允許你對任何資料格式執行select-join-group-aggregate-project操作
評估SQL支援
找出每個工作負載的特徵和目標。例如,互動式應用程式,或互動式分析,或批次分析,或BI工作負載等等。 支援的宣告反映了操作能力。 在表示式(標量、聚合、布林值)、聯接(內聯、左聯/右聯/全聯)、子查詢、派生表、排序和分頁(LIMIT / OFFSET)方面的語言能力。 索引:沒有正確索引的SQL只是一個圖靈機器原型。 最佳化器:查詢重寫,選擇正確的訪問路徑,建立最佳執行路徑是使得SQL語言成為成功的第4代語言的原因。有些具有基於規則的最佳化器,有些具有基於成本的最佳化器,而有些則兩者都有。評估最佳化器的質量至關重要。典型的基準(TPC-C、TPC-DS、YCSB、YCSB-JSON)在這裡對你沒有幫助。 正如我們常說:“資料庫有三個重要方面:效能、效能和效能”。測量工作負載的效能很重要。YCSB和擴充套件的YCSB-JSON將使評估更容易。 SDK:豐富的SDK和語言支援,加快你的開發速度。 BI工具支援:對於大型資料分析,透過標準資料庫連線驅動程式來支援BI工具通常非常重要。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545820/viewspace-2668449/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL已死? - thenewstackSQL
- SQL Server 的死鎖SQLServer
- [翻譯]:SQL死鎖-阻塞探測SQL
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer
- DevOps已死?2024年的DevOps將如何發展dev
- Flash已死,但這些古老的Flash遊戲還在努力活著遊戲
- SQLServer 如何收集資料以排除 SQL 死鎖問題SQLServer
- 面試官:請用SQL模擬一個死鎖面試SQL
- 無法復現的“慢”SQL《死磕MySQL系列 八》MySql
- SQL 中的一些小巧但常用的關鍵字SQL
- 【SQL】17 SQL 檢視(Views)、SQL Date 函式、SQL NULL 值、SQLView函式Null
- 已安裝 SQL Server 2005 Express 工具。若要繼續,請刪除 SQL Server 2005 Express 工具SQLServerExpress
- Slave SQL執行緒與PXB FTWRL死鎖問題分析SQL執行緒
- 在 SQL Server 中查詢活動連線和死鎖SQLServer
- SQL------SQL效能分析SQL
- SQL注射/SQL Injection漏洞SQL
- 【SQL】19 SQL函式SQL函式
- transqlate:將任何SQL轉換為PostgreSQL方言SQL
- T-SQL——將字串轉為單列SQL字串
- 如何將模組化應用於 SQLSQL
- SQL Server 中將字串按數字排序SQLServer字串排序
- flink將bathch dataset 轉換為sql操作BATSQL
- Spark SQL,如何將 DataFrame 轉為 json 格式SparkSQLJSON
- sql 注入將會是一個笑話SQL
- SATA介面已死:PCI-E SSD將成市場主流
- 【SQL】13 SQL 別名、SQL 連線(JOIN)、SQL INNER JOIN 關鍵字、SQL LEFT JOIN 關鍵字、SQL RIGHT JOIN 關鍵字、SQL FULL OUTER JSQL
- SQL Server 資料庫查詢死鎖的處理步驟SQLServer資料庫
- 如何捕獲和記錄SQL Server中發生的死鎖SQLServer
- 【SQL】9 SQL INSERT INTO 語句SQL
- 【SQL】10 SQL UPDATE 語句SQL
- 【SQL】11 SQL DELETE 語句SQLdelete
- 【SQL】Oracle 19c SQL隔離詳解(SQL Quarantine)SQLOracle
- SQLSQL
- 透過MySQL Workbench 將 SQL Server 遷移到GreatSQLMySqlServer
- T-SQL——將字串轉換為多列SQL字串
- 將 SQL轉換成 Laravel Query Builder 程式碼SQLLaravelUI
- SQL疑難雜症【2】解決SQL訂閱過程中找不到已經建立的訂閱SQL
- 【SQL】SQL中if條件的使用SQL