轉自infoQ!html
根據 O’Reilly 2016年數據科學薪資調查顯示,SQL 是數據科學領域使用最普遍的語言。大部分項目都須要一些SQL 操做,甚至有一些只須要SQL。前端
本文涵蓋了6個開源領導者:Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto,還加上Calcite、Kylin、Phoenix、Tajo 和Trafodion。以及2個商業化選擇Oracle Big Data SQL 和IBM Big SQL,IBM 還沒有將後者改名爲「Watson SQL」。sql
(有讀者問:Druid 呢?個人回答是:檢查後,我贊成Druid 屬於這一類別。)數據庫
不像關係型數據庫,SQL 引擎獨立於數據存儲系統。相對而言,關係型數據庫將查詢引擎和存儲綁定到一個單獨的緊耦合系統中,這容許某些類型的優化。另外一方面,拆分它們,提供了更大的靈活性,儘管存在潛在的性能損失。apache
下面的圖1展現了主要的SQL 引擎的流行程度,數據由奧地利諮詢公司Solid IT 維護的DB-Engines提供。DB-Engines 每個月爲超過200個數據庫系統計算流行得分。得分反應了搜索引擎的查詢,在線討論的說起,提供的工做,專業資歷的說起,以及tweets。後端
來源:DB-Engines,2017年1月 http://db-engines.com/en/ranking緩存
雖然Impala、Spark SQL、Drill、Hawq 和Presto 一直在運行性能、併發量和吞吐量上擊敗Hive,可是Hive 仍然是最流行的(至少根據DB-Engines 的標準)。緣由有3個:服務器
在下面的圖2中能夠看出,相對於領先的商業數據倉庫應用,用戶對頂尖的SQL 引擎更感興趣。併發
來源:DB-Engines,2017年1月 http://db-engines.com/en/rankingoracle
對於開源項目來講,最佳的健康度量是它的活躍開發者社區的大小。以下面的圖3所示,Hive 和Presto 有最大的貢獻者基礎。(Spark SQL 的數據暫缺)
來源:Open Hub https://www.openhub.net/
在2016年,Cloudera、Hortonworks、Kognitio 和Teradata 陷入了Tony Baer 總結的基準測試之戰,使人震驚的是,供應商偏心的SQL 引擎在每個研究中都擊敗了其餘選擇,這帶來一個問題:基準測試還有意義嗎?
AtScale 一年兩次的基準測試並非毫無根據的。做爲一個BI 初創公司,AtScale 銷售銜接BI 前端和SQL 後端的軟件。公司的軟件是引擎中立的,它嘗試儘量多的兼容,其在BI 領域的普遍經驗讓這些測試有了實際的意義。
AtScale 最近的關鍵發現,包括了Hive、Impala、Spark SQL 和Presto:
Alex Woodie 報告了測試結果,Andrew Oliver 對其進行分析。
讓咱們來深刻了解這些項目。
在2016年,Hive 有100多人的貢獻者。該團隊在2月份發佈了Hive 2.0,並在6月份發佈了Hive 2.1。Hive 2.0 的改進包括了對Hive-on-Spark 的多個改進,以及性能、可用性、可支持性和穩定性加強。Hive 2.1 包括了Hive LLAP(」Live Long and Process「),它結合持久化的查詢服務器和優化後的內存緩存,來實現高性能。該團隊聲稱提升了25倍。
2012年,Cloudera 推出了Impala,一個開源的MPP SQL 引擎,做爲Hive 的高性能替代品。Impala 使用HDFS 和HBase,並利用了Hive 元數據。可是,它繞開了使用MapReduce 運行查詢。
。。。
9月,Cloudera 發佈了一項研究結果,該研究比較了Impala 和Amazon Web Services 的Redshift 列存儲數據庫。報告讀起來頗有意思,雖然主題一向的須要注意供應商的基準測試。
。。。
2012年,由Hadoop 分銷商的領導者之一MapR 領導的一個團隊,提出構建一個Google Dremel 的開源版本,一個交互式的分佈式熱點分析系統。
2015年,兩位關鍵的Drill 貢獻者離開了MapR,並啓動了Dremio,該項目還沒有發佈。
。。。
Facebook 工程師在2012年發起了Presto 項目,做爲Hive 的一個快速交互的取代。在2013年推出時,成功的支持了超過1000個Facebook 用戶和天天超過30000個PB級數據的查詢。2013年Facebook 開源了Presto。
Presto 支持多種數據源的ANSI SQL 查詢,包括Hive、Cassandra、關係型數據庫和專有文件系統(例如Amazon Web Service 的S3)。Presto 的查詢能夠聯合多個數據源。用戶能夠經過C、Java、Node.js、PHP、Python、R和Ruby 來提交查詢。
。。。
pass