Amazon Redshift数据库
Amazon Redshift介绍
Amazon Redshift是一种可轻松扩展的完全托管型PB级数据仓库,它通过使用列存储技术和并行化多个节点的查询来提供快速的查询性能,使您能够更高效的分析现有数据。使用云端Amazon Redshift服务,您无需管理庞大的服务器集群,分析数据的成本不到传统解决方案的十分之一。
Amazon Redshift使用列存储技术改善I/O效率并跨过多个节点平行放置查询,从而提供快速的查询性能。Redshift使用标准的PostgreSQL JDBC和ODBC驱动程序,从而使您能够使用各种常见SQL客户端。数据加载速度与集群大小呈线性关系。
作为AWS的服务之一的Redshift有哪些优势呢?
1、完全托管,快速上手
使用Redshift云服务,您可以根据业务需要在几分钟内建立几个到几十个节点的数据仓库集群,立刻开始您的数据分析的任务,也能根据需求随时增加或减少集群资源。Redshift是完全托管平台,承担了大量的集群管理、数据库管理、监控、集群健康检查、备份、升级等工作,让您能专注业务分析,无需花大量时间在服务器管理,安全及数据备份等工作上。
2、为数据仓库而优化的架构
Amazon Redshift基于企业级PostgreSQL数据库,有大规模并行处理(MPP)结构,MPP可以通过将数据分布到各个计算节点来解决海量数据的处理难题。在Redshift中,每个集群有一个管理节点和多个计算节点。集群内部使用私有、高速、 低延时的网络连接。每个计算节点都有单独的CPU,内存和附加存储,并且每个计算节点有多个分区,您的数据被分布保存在计算节点的多个分区内,因此每个分区的数据量大大减少,您的查询会在多个分区并行执行,大大的增加了查询的效率。
注:MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似),详情点击;https://blog.csdn.net/qq_42189083/article/details/80610092
3、查询优化
Redshift提供了针对MPP架构的查询优化引擎,被编译后的SQL分布在多个计算节点的分区内并行执行,并且最大化的利用了列式存储的优势,因此在复杂的多表连接查询的情况下,查询优化器通常能有很大的性能提升。
4、高性能
很多用户使用Redshift获得了几十倍甚至上百倍的查询加速,Redshift为您提供非常搞笑的查询性能,除了上面讲的专为数据仓库而优化的架构外,还有以下优势:
4.1、列式存储
很多数据库使用行式存储,此时如果要基于某个列求和,需要加载整张表的数据,而Redshift列式存储只需要加载一列的数据,磁盘的IO以及内存的消耗都显著减少,增加了性能。由于数据仓库中的大部分查询只是扫描整张表中的部分字段,因此Redshift列式存储特别适合数据仓库查询,另外列式存储索引比传统索引能提供5倍以上的压缩效果和10倍以上的性能提升。
4.2、数据压缩
作为一个列式数据仓库,Redshift还支持列数据压缩,数据压缩减少了磁盘占用空间,减少了读写I/O、减少了内存占用空间,并提高了查询的性能。由于Redshift同列的数据类型相同,有些值也相同,因此Redshift的压缩率很高
5、成本低
使用Redshift无需昂贵的服务器及管理人员成本,仅按使用量付费,并且可以通过购买预留实例来进一步减少成本,实际成本只有传统数据仓库分析的十分之一。
6、安全
创建Redshift集群的时候,可以选择启用加密来保护数据仓库中的数据,启用加密后,所有的数据库、系统表及备份数据都会被加密,保障了数据的安全。连接Redshift的时候,您也可以使用SSL连接,保障网络传输安全。另外AWS也通过身份管理IAM,虚拟网络VPC,防火墙安全组等保护您数据的安全 。
7、负载性能监控
Redshift监控让您能了解集群运行的细节,比如您可以随时检查集群节点的CPU、内存、网络、存储的使用状况,了解节点当前负载,确保您使用合适的资源来满足当前的业务需求。Redshift和云监控CloudWatch服务高度集成,CloudWatch能够监测Redshift的各种指标,也可以设置警报,在集群出现故障时第一时间通知您。CloudWatch简单易用,是保障集群健康的重要环节。
8、数据迁移到Redshift
不管您的数据是否在云中,都能轻松的使用Redshift分析现有数据,对于传统的没有使用云的用户,只需要先将数据文件上传到AWS中。AWS提供了多种途径将云中的数据加载到Redshift中,下面介绍几种:
8.1、从S3中加载数据
传统的用户可以将数据文件通过上传到AWS的云存储S3上。对于敏感数据,可以在上传前加密数据或者使用S3云端加密功能,因此无需担心数据安全。Redshift提供了命令自动将S3中的数据并行加载到Redshift中。
8.2、从Dynamo DB中加载数据
您也可以将数据加载AWS的NoSQL数据库(Dynamo DB)中,Dynamo DB中的数据可以实时或者批量的导入到Redshift。
8.3、从EMR中加载数据
EMR是AWS基于hadoop框架的大数据处理服务,通过大数据处理平台加工后的数据,可以使用Redshift命令将HDFS中的数据加载到Redshift中。
8.4、通过SSH从远程服务器加载数据
Redshift也提供了命令从云中或您数据中心主机上通过SSH连接加载数据。
AWS提供了丰富的功能帮助您将数据中心或云中的数据加载到Redshift中,加载完成后您就可以在Redshift中建立模型,分析数据,使用AWS的QuickSight、Elasticsearch Service等服务显示报表,也可以在AWS的Market Place中寻找行业BI工具分析和显示数据。