阿里云组件的更新频率很快,存在部分内容描述与现版本不一致的情况,最新版本特性请参考阿里云官方文档。
阿里云官方帮助文档链接:https://help.aliyun.com/
阿里云各组件简介:https://blog.csdn.net/yiqiu3812/article/details/107076659
目录
1 ADS
1.1 简介
云原生数据仓库AnalyticDB MySQL版(简称ADB,原分析型数据库MySQL版),是阿里巴巴自主研发的海量数据实时高并发在线分析云计算服务,使得您可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索。
云原生数据仓库AnalyticDB又称ADB又被称为ADS,以下仅用ADS。
1.2 UPDATE_TYPE相关
UPDATE_TYPE可设置数据的更新方式,可设置为batch(批量更新数据)和realtime(实时更新数据),默认值是batch,当设置为batch时,如果支持增量导入,必须指二级分区。
UPDATE_TYPE=realtime时必须指定主键并且不能有二级分区。
UPDATE_TYPE=realtime时只能通过insert/delete实时更新数据,注意不能进行update操作。
1.3 ECU相关
弹性计算单元(Elastic compute units,简称ECU),是ADS中实例计算能力的元单位。ECU由内存容量和磁盘容量组成。ADS有高性能和大存储两种ECU。
高性能ECU:以字母C或者H开头的ECU为高性能实例,数据存储在SSD中。适用对性能要求高、查询并发高的业务场景。
大存储ECU:以字母S开头的ECU为大存储实例,采用SSD/HDD分层存储,热点数据存储在SSD中,冷数据存储在HDD中。适用并发稍低、性能要求不高(查询响应时间超过10秒以上)的场景。
用户可通过DDL语句alter database set ecu_count=N来修改ECU的个数。
注意:扩容或者缩容不是瞬间的同步操作。一个ADS库不可以同时使用两种类型的ECU。
1.4 最终一致性
ADS进行实时插入和删除时,不支持事务,并且遵循最终一致性的设计,所以分析型数据库不能作为OLTP系统使用。注意是最终一致性而不是会话一致性。
当updatetype=realtime时,对于不同主键数据的多次变更,ADS不保证先执行的变更会比后执行的变更优先查询到。由于遵循最终一致性,所以当业务端暂停数据写入的若干时间后,ADS会保证数据的一致性。对于同一主键数据的多次变更,ADS会遵循ADS返回语句执行成功的顺序进行。
1.5 分布式策略
ADS中数据根据分区列进行分布式的存储和计算。
1.6 逻辑计划节点
SelectNode表示这个select中最终输出表达式的相关信息,例如select要输出的表达式集合。
GroupNode表示Group By语句的相关信息,例如group by的列,having的表达式等。
OrderByNode表示Order By的列信息,例如列名,顺序等。
JoinNode表示逻辑Join树的信息,例如join的on条件。
TableNode表示分区表的信息,例如参与计算的列,表名等。
注意,ExecutorNode不属于逻辑计划节点。
1.7 聚集列相关
在分析型数据库MySQL版中,数据存储支持按一列或多列进行排序(先按第一列排序,第一列相同情况下使用第二列排序),以保证该列中值相同或相近的数据保存在磁盘同一位置,这样的列我们称之为聚集列。
当以聚集列为查询条件时,由于查询结果保存在磁盘同一位置,可以减少输入/输出I/O(Input/Output)次数。分析型数据库MySQL版中主聚集列只有一列,因此需要选择最合适的列作为主聚集列。
创建表的时候可以指定一列或者若干列作为聚集列,用户的Query的条件中会指定聚集列的内容或者范围,那么这样的查询性能便会有较大的提升,一个分区内聚集列内容相同的数据会尽可能的分布在相同的区块内存。
需要注意的是聚集列在建表后修改,修改后DB不会在后台自动刷新数据,修改后要等到下次装载数据完毕后生效。
聚集列能智能提升查询性能。
1.8 索引
智能自动索引会自动为导入数据的每一列创建符合该列情况的索引类型,无需用户显示指定创建索引或者索引类型。
1.9 多值列
多值列用于表示一个列中(Cell)有多个不确定的值,一个多值列字段可以包含多种ADB支持的数据类型。一个表中可以定义一个或多个多值列,多值列可以作为筛选条件,也可以进行分组或者参与连接过滤等。
多值列支持in、contains等查询。
ADS的多值列,不允许在不经由WHERE子句中用IN/CONTAINS进行枚举筛选的情况下直接在SELECT/GROUP BY中使用。
1.10 优化策略
ADS的高度智能优化策略是CBO,ADS分析型数据库拥有高度智能的CBO(Cost Based Optimization)优化策略。
1.11 连接方式
ADS支持使用版本为5.4系列的mysql-jdbc驱动、支持安装了php-mysql-5.1.x模块的php环境、支持mysql5.6的客户端、支持用户管理控制台中的DMS、支持Navicat、DBeaver、DBVisualizer、SQLWorkBeanch/J、BI可视化工具、MySQL命令行工具连接ADS集群。也可以通过配置集群连接地址、端口、数据库账号等信息连接地址端口、数据库账号等信息连接ADS。
1.12 用户权限
用户是被授权的数据库用户,由数据库拥有者授权时添加,无需开通ADS服务。
支持ACL,不支持policy授权。
不可以删除用户,可以回收用户。
1.13 表连接
ADS不支持right join、semi join、full join,不支持没用on条件的子句,支持笛卡尔积。
1.14 ECU
使用用户管理控制台来创建ADS时,需要提供ECU的存储、内存、数量、vCPU。
用户在创建数据库时需要根据自己的需求选择这个数据库的ECU型号,以及初始的ECU数量(必须是偶数个,至少两个),ECU型号DB创建后不可修改,ECU数量可以在使用中随时调整(扩容/缩容)。
1.15 优点
ADS无需预先建模。
1.16 维表表组
ADS的维表表组中存放的表的特点包括需要和任何表关联、数据量较小的特点,目前有且仅有一个,并且在ADS数据库建立时会自动创建,用户不可修改和删除。
1.17 建表限制
ADS创建普通表时,一个普通表组最多可以创建256个普通表,一张普通表至少有一级Hash分区并且分区数不能小于8个,一个普通表最多不能超过1024列。
2 ODPS
2.1 简介
MaxCompute(原ODPS)是一项大数据计算服务,它能提供快速、完全托管的PB级数据仓库解决方案,使您可以经济并高效的分析处理海量数据。
下面会全程用ODPS代指MaxCompute。
2.2 权限管理
权限管理操作均是对效果(授权、撤销)、对象(如表、资源等)、主题(用户或是角色)、操作(读、写、删除等)的组合描述。权限不属于ODPS的访问控制元素。
当项目空间的Owner决定对另一个用户授权时,需要先将该用户添加到子集的项目空间中来,只有添加到项目空间中的用户才能被授权。
当一个用户被移除后,该用户有关的ACL授权仍然会被保留。一旦该用户以后被再添加到该项目空间时,该用户的历史的ACL授权访问权限将被重新激活。
2.3 用户认证
ODPS中用户认证(Authentication)的主要功能是检查请求(Requiest)发送者的真实身份,包含以下几个认证:正确验证消息发送方的真实身份、正确验证接收到的信息在途中是否被篡改、正确验证用户状态,包括是否欠费等。不提供用户个性化信息验证。
2.4 权限管理
ODPS中通过安全授权,可以在一个项目空间中访问另一个项目空间。
一个用户可以拥有多个项目空间的权限。
一个账号可以创建多个项目空间,最多不能超过10个。
当一个用户被移除后,与该用户有关的ACL授权仍然会被保留。一旦该用户以后被再添加到该项目空间时,该用户历史的ACL授权访问权限将被重新激活。
没有被使用的角色才可以被删除。角色是一组访问权限的集合,admin为缺省角色。相比Owner,Admin不能