數(shù)十年專注企業(yè)數(shù)字化轉(zhuǎn)型、智能化升級、企業(yè)上云解決方案服務(wù)商
工單提交 騰佑科技咨詢熱線咨詢熱線: 400-996-8756
百度云服務(wù)中心騰佑科技公司
云服務(wù)器活動 服務(wù)器租用 服務(wù)器托管 機(jī)柜租賃 帶寬租賃
  • 最新資訊
  • 熱門資訊
  • 最熱資訊
智能建站

百度智能云天工TSDB的SQL引擎正式對外開放

發(fā)布時間:2019-05-31 作者:Admin5

簡述:經(jīng)過二十多年的發(fā)展,伴隨著AI、大數(shù)據(jù)、云計算等技術(shù)的突飛猛進(jìn),物聯(lián)網(wǎng)的價值逐漸凸顯,成為了互聯(lián)網(wǎng)和傳統(tǒng)公司爭相布局之地。而作為物聯(lián)網(wǎng)領(lǐng)域數(shù)據(jù)存儲的首選,時序數(shù)據(jù)庫也進(jìn)入人們的視野。 百度智能云在時序

  經(jīng)過二十多年的發(fā)展,伴隨著AI、大數(shù)據(jù)、云計算等技術(shù)的突飛猛進(jìn),物聯(lián)網(wǎng)的價值逐漸凸顯,成為了互聯(lián)網(wǎng)和傳統(tǒng)公司爭相布局之地。而作為物聯(lián)網(wǎng)領(lǐng)域數(shù)據(jù)存儲的首選,時序數(shù)據(jù)庫也進(jìn)入人們的視野。

  百度智能云在時序數(shù)據(jù)庫領(lǐng)域布局較早。早在2016年7月,百度智能云就在其天工物聯(lián)網(wǎng)平臺上發(fā)布了TSDB,這是國內(nèi)首個多租戶的分布式時序數(shù)據(jù)庫產(chǎn)品,能夠支持制造、交通、能源、智慧城市等多個產(chǎn)業(yè)領(lǐng)域。2018年5月,百度智能云天工平臺在TSDB上加持了SQL引擎,成為首個支持SQL的云上時序數(shù)據(jù)庫服務(wù),至此用戶可以更加熟悉方便地對數(shù)據(jù)進(jìn)行操作,同時充分利用SQL函數(shù)的計算能力,挖掘數(shù)據(jù)價值。

百度智能云

  本月,百度智能云天工TSDB的SQL引擎正式對外開放,所有套餐用戶均可使用SQL查詢功能。接下來,本文會從以下幾個方面帶你全方位的了解百度智能云天工TSDB上的SQL生態(tài)。

  為什么TSDB需要SQL支持?

  百度智能云天工TSDB一直有完整的API接口查詢支持,在此基礎(chǔ)上,現(xiàn)在又正式開放了SQL引擎,其中的原因有以下幾個方面:

  首先,SQL的學(xué)習(xí)成本較低,對于技術(shù)人員而言,更符合日常使用習(xí)慣;即使是非技術(shù)人員,學(xué)習(xí)起來也很容易上手,可以省去熟悉API的學(xué)習(xí)成本。

  其次,從可支持查詢的場景而言,因為API接口的格式相對固定,雖然可以支持絕大部分的查詢場景,但是相對來說,不如SQL可表達(dá)的語義豐富,一個典型的場景是TSDB中多個metric的聯(lián)合查詢,使用SQL中的join即可很方便的實現(xiàn)。

  再者,SQL生態(tài)可以更方便的對接BI系統(tǒng),通過SQL查詢功能,TSDB數(shù)據(jù)庫可以和現(xiàn)有的BI平臺實現(xiàn)無縫對接。

  最后,無論是傳統(tǒng)的數(shù)據(jù)存儲服務(wù)或者計算框架,都有自己對應(yīng)的SQL生態(tài),例如HiveSql,SparkSql。百度智能云天工TSDB作為專注于時序數(shù)據(jù)的存儲服務(wù),也應(yīng)該有對應(yīng)的SQL生態(tài)。

  TSDB SQL引擎能做什么?

  TSDB支持標(biāo)準(zhǔn)ANSI SQL語義,查詢數(shù)據(jù)的體驗與傳統(tǒng)的SQL體驗一樣簡潔明了。用戶使用TSDB的SQL引擎,可以像API接口一樣訪問TSDB的時序數(shù)據(jù),同時還可以利用SQL強(qiáng)大的計算函數(shù)能力。

  讓我們先通過一個簡單的示例,來了解下如何在TSDB上使用SQL:

  假設(shè)有一個智能電表監(jiān)控的物聯(lián)網(wǎng)集成方案,采集了智能電表的各個監(jiān)控點的數(shù)據(jù)。在TSDB中這樣組織(如下圖),metric為SmartMeter,表示TSDB存的是智能電表的數(shù)據(jù),每個電表有power和current兩個域(field),用兩個tag,即meterID和city,來代表每個數(shù)據(jù)點來自哪個電表ID和城市。電表每5s上傳一次功率值和電流值。

百度智能云

  可以將上表看成一個二維表,針對二維表來寫SQL語句。

百度智能云

  做完這些基礎(chǔ)工作后,我們來看具體場景下如何應(yīng)用SQL語句來解決問題。

  ?應(yīng)用場景一:要過濾功率值大于400、電流值小于5,電表ID為2345HDYE的數(shù)據(jù):

  select timestamp, power, current,MeterID, City from SmartMeter where power > 400 and current<5 and MeterID= ' 2345HDYE'。

  得到數(shù)據(jù)如下:

百度智能云

  ?應(yīng)用場景二:電表ID為2345HDYE的電表中,返回每10秒的功率平均值:

  select time_bucket(timestamp, '10seconds') as TIME, avg(power) as AVG_POWER, current, City from SmartMeter groupby time_bucket(timestamp, '10 seconds') order by TIME;

  得到數(shù)據(jù)如下:

百度智能云

  從上面的示例可以看到,用戶可以像訪問RDS一樣使用SQL訪問TSDB,支持字段過濾,排序,分組,聚合等常用操作。同時因為時序數(shù)據(jù)的特性,還可以使用time_bucket來計算帶時間窗口的聚合函數(shù)。

  除了以上示例中所提到的,TSDB SQL的查詢功能盡可能的和API查詢接口對齊,這樣用戶就可以在兩種查詢方式上靈活切換,具體包括:

  ? 所有類型的域的查詢:TSDB現(xiàn)在支持整型、浮點型、字符串類型和Bytes類型。

  ? 對于原始數(shù)據(jù)的掃描、支持filter、orderBy、limit等常用語義。

  ? 對于函數(shù)計算場景,支持SUM、AVG、COUNT等常用聚合函數(shù),并支持按照tag、時間窗口等分組;同時支持包括floor、abs等常用的計算函數(shù)。

  除了以上和API接口保持一致的功能之外,TSDB SQL還支持:多metric的join操作,可用于不同metric之間的聯(lián)合查詢。

  TSDB SQL引擎性能優(yōu)化

  數(shù)據(jù)查詢引擎的架構(gòu)一般分為存儲層和計算層,前者負(fù)責(zé)對接數(shù)據(jù)源和原始數(shù)據(jù)的讀取;后者負(fù)責(zé)生成查詢計劃并做優(yōu)化,以便更高效地從存儲層獲取數(shù)據(jù)。在這一部分,我們將介紹TSDB SQL引擎在計算層進(jìn)行的查詢優(yōu)化方面的工作。

  計算層對查詢計劃的優(yōu)化主要分為:基于成本的優(yōu)化(Cost-Based Optimization)和基于規(guī)則的優(yōu)化(Rule-Based Optimization)。使用CBO時,計算層會在多個查詢計劃間挑選一個成本最低的查詢計劃執(zhí)行,在評估成本時可能需要用到存儲層提供的一些數(shù)據(jù)相關(guān)信息。而使用RBO更多的是使用一些規(guī)則,在對原始查詢計劃做等價變換的基礎(chǔ)上,不斷優(yōu)化出性能更優(yōu)的查詢計劃,其中比較常見的規(guī)則有謂詞下推,列裁剪等等,這里以謂詞下推為例作下簡要介紹。

  謂詞下推(Predicate Pushdown)的思路是通過將SQL語句中WHERE 子句中的謂詞移到盡可能離數(shù)據(jù)源靠近的位置,從而能夠提早進(jìn)行數(shù)據(jù)過濾并有可能更好地利用索引。下面通過一個例子來說明:

  繼續(xù)利用上一章節(jié)中的場景,假設(shè)我們除了SmartMeter這個metric之外,還有另外一個metric來記錄電表的溫度:

百度智能云

  現(xiàn)在需要join這兩個metric來對特定的電表進(jìn)行聯(lián)合查詢,SQL語句如下:

  select * from martMeter joinSmartTemperature on SmartMeter.MeterID = SmartTemperature.MeterID where MeterID= ' 2345HDYE';

  針對上述的SQL語句,會生成如下左圖的原始查詢計劃:虛線以上可以認(rèn)為是計算層生成的查詢計劃,虛線以下對應(yīng)存儲層的數(shù)據(jù)源。這個查詢計劃使用TableScan算子將兩個metric的數(shù)據(jù)掃描出來,然后完成join操作,并在join之后的結(jié)果上做“MeterID= ' 2345HDYE”的條件過濾,最后輸出結(jié)果。

百度智能云

  而右圖是經(jīng)過"謂詞下推"優(yōu)化之后的查詢計劃,可以看到,filter算子也就是“MeterID = ' 2345HDYE”的過濾,被下推到了TableScan算子下面,這樣的調(diào)整有什么好處呢?

  首先,TableScan算子不再需要對原始數(shù)據(jù)進(jìn)行全表掃描,只需要獲取經(jīng)過“MeterID = ' 2345HDYE”過濾之后的數(shù)據(jù),從數(shù)據(jù)量來說得到了縮減。

  其次,如果SmartMeter和SmartTempreture作為數(shù)據(jù)源,本身就對MeterID這個字段的過濾有優(yōu)化的話,查詢性能就能得到進(jìn)一步的提升,這也就是上面提到的更好的利用數(shù)據(jù)源的索引。

  最后,由于TableScan輸出的數(shù)據(jù)量減少了,需要join的數(shù)據(jù)量也就減少了。

  可以看到,謂詞下推是通過盡可能移動過濾表達(dá)式至靠近數(shù)據(jù)源的位置,來減少算子之間需要傳遞的數(shù)據(jù)量,進(jìn)而優(yōu)化查詢計劃。TSDBSQL現(xiàn)已支持timestamp,field以及tag上絕大部分的謂詞下推,并且實現(xiàn)了OrderBy,Limit下推等一系列優(yōu)化規(guī)則;同時在一些聚合函數(shù)場景下,SQL支持通過分布式計算來優(yōu)化查詢計劃的執(zhí)行,這里暫不一一展開。

  相信通過本文的介紹,大家已經(jīng)對使用SQL引擎訪問百度智能云天工TSDB有了一定的了解。目前,百度智能云團(tuán)隊仍在不斷完善TSDB上的SQL生態(tài),比如通過JDBC/ODBC來連接TSDB等。未來,SQL生態(tài)將延伸到天工的其他產(chǎn)品上,比如物管理服務(wù)等,從而實現(xiàn)天工產(chǎn)品的多數(shù)據(jù)源一站式SQL查詢。

點擊展開全文

鄭州騰佑科技有限公司(以下簡稱“騰佑科技”)成立于2009年, 總部位于鄭州,是 一家致力于互聯(lián)網(wǎng)服務(wù)業(yè)的高新技術(shù)企業(yè),公司主營業(yè)務(wù)以互聯(lián)網(wǎng)數(shù)據(jù)中心、云計算、人 工智能、軟件開發(fā)、安全服務(wù)“互聯(lián)網(wǎng)+”行業(yè)解決方案及行業(yè)應(yīng)用等相關(guān)業(yè)務(wù)。

售前咨詢熱線:400-996-8756

備案提交:0371-89913068

售后客服:0371-89913000

熱門活動

百度云服務(wù)中心
  • 熱門資訊
  • 隨便看看