分析型数据库ads学习记录
一、ADS基础概念
1. ADS定义与特点
定义:阿里云分析型数据库(AnalyticDB for SQL,简称ADS)是阿里巴巴自主研发的高性能实时数据仓库服务,主要用于大规模在线分析(OLAP)场景。
特点:
实时和高并发:能够处理万亿级别的数据,支持实时数据分析。
兼容MySQL:支持SQL92标准,可以高效轻松地分析和集成数据。
分布式计算:采用分布式计算技术,具有强大的实时计算能力。
多租户隔离:支持多租户的资源隔离、认证、审计等,确保数据安全。
2. ADS架构原理
ADS的基础架构分为计算集群和管控集群两大板块,前端机接受MySQL和REST的访问,计算节点承载计算存储和计算,度节点负责将数据合理的摆放和组合。
3. 基本数据库对象及概念
数据库:ADS中的最顶层对象,按数据库进行资源的分配、隔离和管理。
表组:一系列数据表的集合,便于表的分类和管理,表组分为维度表组和事实表组。
维度表组:由系统自动创建,用于存储需要经常关联的小数据量表。
事实表组:由用户创建,用于存储大数据量的事实表。
4. 表类型
事实表:存放大量数据的表,支持两级分区(HASH分区和LIST分区),单表最大支持1024列和数千亿行数据。
维度表:用于存储少量且不变的数据,可以被缓存以加速查询。
二、ADS使用技巧与注意事项
1. 非分区表关联问题
ADS目前仅支持分区列之间的关联,且分区数必须相同,如果需要与其他表关联,建议将小数据量的表建成维度表。
2. LIMIT限制
ADS不支持带偏移量的LIMIT,最多只能取出前1万条数据,对于真实分页需求,可以考虑使用其他方法实现。
3. Count(distinct columnName)支持
需要在后台配置中新增enableUdfSysGroupDistinctConcat
参数并设置为false,才能使count distinct即时生效。
4. UNION限制
ADS仅支持分区列的UNION,带group by的聚合函数结果或查询出的非分区列结果不能使用UNION。
5. Group-By与Order-By优化
如果Group-By条件包含分区列,则应放到第一列以确保精确性和性能,Order-By表达式的第一列如果不是分区列,性能会随排序列或表达式取值增加而降低。
三、ADS实践步骤
1. 创建实例
登录阿里云控制台,寻找并进入ADS服务页面,按照向导创建一个新的ADS实例,并配置必要的参数,例如实例规格、存储类型等。
2. 设计表结构
根据业务需求在ADS控制台上创建表,注意合理设计表结构以优化查询性能。
3. 数据导入
可以使用DataHub、MaxCompute、DTS等工具将数据导入到ADS中。
4. 使用JDBC连接ADS
准备MySQL的JDBC驱动包,在BI工具中新建一个JDBC数据连接,配置URL、用户名、密码等信息,测试连接成功后即可开始使用ADS进行数据查询。
5. 基本查询与性能调优
ADS支持标准的SQL查询语言,可以根据查询性能监控和日志调整查询策略或表设计以优化查询效率。
6. 监控与管理
利用ADS提供的监控功能监控查询性能、资源使用情况等,定期备份数据并在必要时恢复数据。
四、相关问题与解答栏目
问题1:如何在ADS中实现真实分页?
答:由于ADS不支持带偏移量的LIMIT,且最多只能取出前1万条数据,因此无法直接实现真实分页,对于真实分页需求,可以考虑使用其他方法,如在应用层面进行分页处理或将数据导出后在外部系统中进行分页。
问题2:为什么打平关联语句会比子查询快?
答:打平关联语句时,关联的维度表成为右表,join时走索引,因此查询速度较快,而子查询情况下,维度表作为左表(子查询会自动将其处理为左表),实时表作为右表,由于实时部分的数据没有强大的索引支持,只能走扫描方式,导致查询速度较慢。
各位小伙伴们,我刚刚为大家分享了有关“分析型数据库ads学习记录”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/671108.html