原标题:只需一步,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
本文为云栖社区原创内容,未经允许不得转载。返回搜狐,查看更多
责任编辑: