原標題:只需一步,DLA開啟TableStore多元索引查詢加速!
Data Lake Analytics(簡稱DLA)在構建第一天就是支持直接關聯分析Table Store(簡稱OTS)里的數據,實現存儲計算分離架構,滿足用戶基于SQL接口分析Table Store數據需求。
玩轉DLA+OTS:https://ots.console.aliyun.com/index#/demo/cn-hangzhou/dla
王燁:DLA如何分析Table Store的數據
DLA控制臺:https://openanalytics.console.aliyun.com/
這是DLA與Table Store在生態中的關系,作為存儲計算分離架構,DLA負責主要的SQL算子計算,而Table Store則負責部分計算(由DLA下推下來)和核心存儲功能。
目前,Table Store的寬數據表結構(https://help.aliyun.com/document_detail/89879.html)中的列, 主要分成兩部分:主鍵(所有主鍵都不可改,也不為空;其中第一主鍵是物理分區鍵),非主鍵列(可改可覆蓋可為空,可有可無):
假設有張表tbl(主鍵:pk1,pk2;非主鍵:col1,col2),當DLA收到這樣的SQL時:
DLA就會基于Table Store的SDK接口下發相關的查詢:
1)查詢tbl表數據,其中只查詢pk2、pk3、col3這幾個列;
2)按照pk1做分區裁剪,只下推查詢到pk1=123所在的分區;
3)下推 pk1 =123、pk2 >='2019-01-10'和col4 ='zzz' 這三個條件;
4)如果當前分區的數據很大,則會切分出多個分片,并行查詢;
這里,最關鍵的條件就是 pk1 =123,DLA基于這個第一主鍵(分區鍵)條件來篩選OTS的目標分區然后下發查詢條件。其他支持的分區條件有
針對上面的表結構,如果遇到如下的SQL:
因為pk1并沒有出現在條件中,無法做分區裁剪,因此目前DLA會先將整個TableStore的表切好分片,然后下推其他條件,并行獲取每個分片的數據并做計算。這樣的問題就是:
無論是計算成本還是延時,都會影響客戶的體驗。
而多元索引是基于倒排索引(https://en.wikipedia.org/wiki/Inverted_index)來設計和實現的:
因此,DLA全面升級了,支持直接以SQL方式訪問Table Store的多元索引(https://help.aliyun.com/document_detail/91974.html)
從而來加速查詢。
對DLA的客戶來說,只需一步,就可以使用DLA來訪問Table Store的多元索引。因為目前統計信息采集及優化器等原因,暫時還不支持自動判斷多元索引,所以需要利用DLA的hint來主動開啟(DLA的hint機制:https://zhuanlan.zhihu.com/p/55068247):
其中,索引開關有幾種模式:
另外,早期客戶給DLA做的角色授權策略里并沒有這些新增的多元索引接口,因此老客戶需要重新給DLA做跨云服務訪問的角色授權,[戳這里>>>](https://ram.console.aliyun.com/#/role/authorize?request=%7B%22Requests%22:%20%7B%22request1%22:%20%7B%22RoleName%22:%20%22AliyunOpenAnalyticsAccessingOTSRole%22,%20%22TemplateId%22:%20%22OTSRole%22%7D%7D,%20%22ReturnUrl%22:%20%22https:%2F%2Fopenanalytics.console.aliyun.com%2F%22,%20%22Service%22:%20%22OpenAnalytics%22%7D)
雖然Table Store多元索引很好用,但他也不是銀彈,需要合理的使用。有幾個場景的約束:
當然,針對傳統數據庫的索引中的一些特性,在DLA中也盡量采納進來,比如Covering Index(http://literatejava.com/sql/covering-indexes-query-optimization/) 來避免隨機查詢主表,DLA和Table Store也支持,比如這樣的SQL:
這里col1和col2都在索引中,而pk1和pk2也間接在索引中,因此這個SQL完全可以在索引上完成過濾和輸出,從而避免回主表查詢。
除了多元索引之外,目前Table Store團隊也在積極地推廣二級索引(https://help.aliyun.com/document_detail/91935.html),幫助用戶更好的使用Table Store。未來DLA也會將這塊能力集成進來,這樣DLA可以幫助用戶在主表、二級索引表、多元索引表之間最優化選擇,幫助客戶提升性能并且降低成本。
未來,DLA需要實現預先采集更多的統計信息,免去用戶主動添加hint的麻煩,完全自動化的選擇和路由,做到真正的數據庫體驗。
未來,DLA還需要下推更多的計算到Table Store上,實現更好的”近存儲計算“,比如聚合能力下推、函數下推、支持全文索引等等,讓用戶使用DLA+Table Store獲得更好的體驗。
------------------------------------
本文作者:Roin
原文鏈接:https://yq.aliyun.com/articles/712733?utm_content=g_1000071446
本文為云棲社區原創內容,未經允許不得轉載。返回搜狐,查看更多
責任編輯: