云数据仓库实践:AWS Redshift在大数据储存分析上的落地经验分享

在这里插入图片描述

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。
🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。
🏆本文已收录于PHP专栏:数据库与数据仓库
🎉欢迎 👍点赞✍评论⭐收藏

文章目录

  • 🚀一、关于数据仓库
    • 🔎1.1 数据整合与一致性
    • 🔎1.2 支持复杂查询和分析
    • 🔎1.3 提高决策支持能力
  • 🚀二、AWS Redshift的特点
    • 🔎2.1 高性能
    • 🔎2.2 弹性扩展
    • 🔎2.3 完全托管
    • 🔎2.4 安全性
    • 🔎2.5 一体化分析解决方案
  • 🚀三、RedShift的常见实践问题解答
    • 🔎3.1 RedShift和MySQL有什么不同?
    • 🔎3.2 RedShift实现怎删改查怎么写?
    • 🔎3.3 怎么把MySQL的数据放进RedShift?
    • 🔎3.4 RedShift为什么很多时候会插入失败?
    • 🔎3.5 RedShift如何进行查询优化?
    • 🔎3.6 RedShift能做实时数仓与实时计算么?
    • 🔎3.7 电商网站可以用Redshift存储数据么?
    • 🔎3.8 Redshift支持多大规模的存储?
    • 🔎3.9 如何维护数据库的数据正确性?
  • 🚀四、常见的一些数据库操作分享
    • 🔎4.1 创建表
    • 🔎4.2 数据的增删改查
    • 🔎4.3 判断语句
    • 🔎4.4 类型转化
    • 🔎4.5 数值运算
    • 🔎4.6 字符串操作
  • 🚀五、总结


🚀一、关于数据仓库

数据仓库是用于存储、管理和分析组织内部和外部数据的集中化系统。它的主要作用是将多个数据源中的结构化和非结构化数据整合到一个统一的位置,以便进行跨部门的数据分析和决策支持。数据仓库还具有以下几个重要的作用:

在这里插入图片描述

🔎1.1 数据整合与一致性

数据仓库将来自不同数据源的数据进行整合,并保持数据的一致性和准确性,确保用户可以从一个统一的位置访问和分析数据。

🔎1.2 支持复杂查询和分析

数据仓库提供强大的查询和分析功能,使用户能够进行复杂的数据挖掘、统计分析和报表查询,以发现数据中的模式、关联和趋势。

🔎1.3 提高决策支持能力

数据仓库为组织的决策层提供实时和历史数据的分析报告,支持企业管理者做出准确的决策和制定战略。

一些成熟的大数据仓库产品包括AWS RedshiftGoogle BigQueryMicrosoft Azure Synapse AnalyticsIBM Db2 Warehouse 等,他们的主要特点如下:

在这里插入图片描述
这些大数据仓库产品在架构、性能、可扩展性、集成能力、安全性等方面有所差异。具体选择哪种产品取决于组织的需求、预算、数据规模和技术栈等因素。在下表中,我们展示了这些产品的一些主要特点和区别。
在这里插入图片描述
我们实际真的的企业业务可能非常复杂,这就需要一款非常贴合场景的数据仓库产品来更好的做数据驱动。

在这里插入图片描述

当然国内也有用到的比较多的例如HiveClickHouse等数据产品,都能够解决一些特定领域的问题,今天本文重点论述一下aws上这一款云数据仓库Redshift,是众多使用aws作为云服务并且用到数据仓库的首选产品。

🚀二、AWS Redshift的特点

AWS Rdshift是亚马逊网络服务(Amazon Web Services)提供的一种完全托管的云数据仓库解决方案。它是基于列存储的关系型数据库,专门用于处理大规模数据集Redshift旨在通过实现高度可扩展的并行查询引擎,支持高性能的数据分析和报表查询。

在这里插入图片描述

以下是Redshift的主要特点和优势:

🔎2.1 高性能

Redshift利用列存储方式、压缩、并行化查询等技术,提供了出色的查询性能。它可以在大规模数据集上执行复杂的分析查询,支持高并发访问。

🔎2.2 弹性扩展

Redshift可以根据需求自动扩展存储和计算资源,以应对不同规模的数据工作负载。这种弹性扩展的能力使其适用于处理大量数据的情况。

🔎2.3 完全托管

Redshift是一种完全托管的云服务,AWS负责处理硬件和软件的配置、管理和维护。用户无需关心底层的基础设施管理,可以专注于数据分析和查询。

🔎2.4 安全性

Redshift提供了一系列安全性功能,包括数据加密、访问控制和网络隔离。这有助于保护数据的机密性和完整性。

🔎2.5 一体化分析解决方案

Redshift可以与其他 AWS 服务(如S3Glue)以及第三方工具(如TableauPowerBI)无缝集成,为用户提供一体化的分析解决方案。

🚀三、RedShift的常见实践问题解答

🔎3.1 RedShift和MySQL有什么不同?

在这里插入图片描述

下面是使用Markdown表格展示Redshift和MySQL的不同之处:

方面RedshiftMySQL
架构列存储行存储
主要用途数据仓库解决方案,大规模数据分析和报表查询在线事务处理(OLTP)和常规关系型数据库需求
数据处理能力处理大规模数据集和复杂查询,适用于数据分析和报表低延迟和高并发处理能力,适用于在线交互式应用和事务处理
扩展性自动扩展存储和计算资源,弹性扩展能力需手动进行水平或垂直扩展
托管方式由AWS完全托管,无需自行管理和维护可自行部署在服务器上,也可选择云托管服务
数据一致性较弱的数据一致性和事务支持强大的事务支持和数据一致性保证

需要注意的是,RedshiftMySQL使用的查询语言不同。Redshift使用的是类似于PostgreSQLSQL方言,而MySQL使用的是标准的SQL语言。不过大部分情况下是通用的。

🔎3.2 RedShift实现怎删改查怎么写?

这个和主流的关系型数据库差不多。大家可以参见我这一篇文章AWS RedShift实战应用SQL大全及经验分享。

🔎3.3 怎么把MySQL的数据放进RedShift?

RedShiftAWS s3结合的非常好,可以利用mydumperMySQL数据导出后,处理成一定规则的数据文件,传输到s3,然后通过Copy命令直接拷贝到RedShift。拷贝的命令如下:

copy student_score from 's3://xxxx/student_score/'
access_key_id '' 
secret_access_key '' 
ACCEPTINVCHARS AS ' ' TRUNCATECOLUMNS IGNOREBLANKLINES delimiter '\t' 
gzip region 'us-east-1'
-- 其中注意delimiter要根据实际文件里面的分隔符来确定

🔎3.4 RedShift为什么很多时候会插入失败?

Redshift提倡大批次处理插入,如果批次太小很频繁可能会导致写入失败,这个时候建议先将数据放入缓冲区或者文件,然后文件积累到一定量,在通过上面说到的Copy命令到数据库,这才是一个最佳实践。

🔎3.5 RedShift如何进行查询优化?

首先查询的时候要保证表的量够小,所以要使用一些任务调度的方式,将大表转化成小表,尤其是行为数据这种表,实际上很多业务查询的时候用不到这一整张表,这个时候需要我们独立成特定的小表。另外注意要关注整个数仓的负载,当别的任务执行过多的时候,当前任务的算力必然会被分担。

🔎3.6 RedShift能做实时数仓与实时计算么?

在这里插入图片描述
当然这是可以的,不过要借助一些其他的工具和技术来实现。毕竟数据从产生到进入数据仓库还是要经过一系列的过程。下面是一些实践的用法:
在这里插入图片描述

🔎3.7 电商网站可以用Redshift存储数据么?

完全OK的,Redshift的查询是要先解释查询语句才能进行查询,查询的速度还是比较慢的,比MySQL或者说Clickhoue慢的多,当然这个说法不一定准确,但你应该能了解我的意思,所以给网站服务一般还是不能直接查Redshift,还是得依赖一些缓存作为支撑,不过这个取决于具体的业务设计。行为数据如何进库,参考我上面提到的方式。

🔎3.8 Redshift支持多大规模的存储?

AWS官方宣传的是PB级别的存储,目前我们的规模在几百TB,每天支撑数百亿级别的数据清洗,数据分析,数据挖掘任务,还是比较可以的,对大量报表以及系统业务做到了不错的支撑。

🔎3.9 如何维护数据库的数据正确性?

如果要把业务数据库的数据放进Redshift,可以通过在业务库放一个last_update_time字段,通过这个字段的变化来增量同步数据进去,如果实在不放心,也可以每天进行一次全量数据覆盖,先删除再写入,这样配合起来用,同时也可以抽样进行两边的数据对比,进行一个数据监控。

🚀四、常见的一些数据库操作分享

🔎4.1 创建表

Redshift有自己独特的建表语句,大体上看上去,和常见的关系型数据库差不多,另外它可以定义索引,但是不具备索引约束

CREATE TABLE "public"."users" (
  "user_id" "int4",
  "name" "varchar",
  "gender" "int4",
  "age" "numeric"
)
WITH OIDS;

🔎4.2 数据的增删改查

增删改查和MySQL差不多

-- 增加数据
insert into users(user_id, name, gender, age) 
values (1, 'xiaomin', '男', '12');

--查询数据
select * from users where name='xiaoming';

--修改数据
update users set age=13 where name = 'xiaoming';

--删除数据
delete from users where name='xiaoming';

🔎4.3 判断语句

case when很多时候用来代替if,下面演示统计学生的name,如果为null或空字符串,用unkonw显示

select 
   case when name is null then 'unkown' 
        when name = '' then 'unkown'
        else name end as name 
from users

🔎4.4 类型转化

Redshift是强类型的,这点和MySQL还是有些区别,因为其底层是Java的,所以查询及匹配要求类型对应。

cast(create_time as timestamp) -- 字符串转化为时间戳
cast(student_id as interger) -- 将字符串转化为整形

🔎4.5 数值运算

下面演示了一个求客单价的逻辑,用户总用的消费金额/总共用户数得到客单价,最后再四舍五入规范一下数据。

-- 这里演示类型转化的除法运算,以及保留两位小数的用法
select 
  cast(total_amount as numeric)/cast(total_users as numeric) as avg_user_amount,
  round(avg_user_amount, 2) as avg_user_amount1
  from ···

🔎4.6 字符串操作

字符串拼接,下面用||将三个字符串进行顺序组合。

select id || '-' || name || '-' || age from id_name_age

字符串截取,下面演示了获取用户名前5个字符的写法。

select substring(name,0,5) from users

大小写转化,下面演示了将用户名转化为小写

select lower(name) as name, age from users

🚀五、总结

本文从主流的数据仓库出发进行讲解,然后重点分析了一下AWS Redshift这款产品的特点,及其在数据分析领域的优劣势。然后根据平时在工作用的实际应用实践,给出了常见的一些疑惑问题解答。最后通过一些日常使用的SQL分享,让大家来初识这一款数据仓库。如果想要深入学习大数据或者数据挖掘,可以继续去官网学习相关技术。

在这里插入图片描述

高山仰止,景行行止,学无止境,感谢阅读,我们下次见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/175526.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超级会员卡积分收银系统源码 会员卡+积分商城+收银功能+多门店系统 附带完整的搭建教程

线上线下的融合已经成为趋势。在这个过程中,会员卡积分收银系统成为了许多企业不可或缺的一部分。该系统以超级会员卡为基础,结合积分商城、收银功能以及多门店系统,为企业提供了一站式的解决方案,帮助企业实现线上线下会员一体化…

Python 第一行代码 —— 打印 hello world

第一个程序 print ("Hello world!")这种程序虽然简单,却有其用途:如果它能够在你的系统上正确地运行,你编写的任何 Python 程序都将如此。 如果没有看到这样的输出,请检查你输入的每个字符。你是不是将 print 的首字母…

sap系统连接其它系统

本文来自博客园,作者:Lovemywx2,转载请注明原文链接:https://www.cnblogs.com/1187163927ch/p/8669859.html JAVA连接ORACLE数据库 1,首先需要在Oracle安装完成之后新建一个用户 --新建用户 create user chenh iden…

C盘变红怎么办?一个快速解决C盘快满的方法

前情提要 通常解决C盘快满的方法是: 找到C盘—右击选择“属性”—选择“详细信息”—卸载不常用的软件或者清除临时文件 缺点:成效甚微 今日重点 1.背景知识:微信是我们日常工作和生活都离不开的工具,我们每天使用微信会产生大量…

Java线程的学习

本来我以为这可能只是Java里的一小块知识点,但当我搜索自己关注的Up主的网课时,觉得还是开一个系列来记录好了。我的记录绝不仅仅是照搬课程中的内容,我会带上自己的理解以及示例代码、并且是按照本人的专业课老师上课的节奏来记录&#xff0…

【开源】基于Vue和SpringBoot的教学过程管理系统

项目编号: S 054 ,文末获取源码。 \color{red}{项目编号:S054,文末获取源码。} 项目编号:S054,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 教师端2.2 学生端2.3 微信小程序端2…

近期为何事故频发,企业安全生产如何保障?

近期,多地陆续发生了一系列企业安全生产事故,给企业和员工带来了严重的生命和财产损失,引发了社会各界对安全生产问题的广泛关注。安全生产是企业发展的重要保障,然而,企业在追求经济效益的过程中,往往忽视…

单链表OJ题--6.链表分割

6.链表分割 链表分割_牛客题霸_牛客网 (nowcoder.com) /* 解题思路 创建两个链表,分别存放小于x的节点和大于等于x的节点,分别进行尾插 */ class Partition { public:ListNode* partition(ListNode* pHead, int x) {if(pHead NULL)return NULL;struct …

AMESim|Make failed:Unable to create an excutable for the system

最近在AMESIM与MATLAB进行联合仿真的时候遇到如下问题: Make failed:Unable to create an excutable for the system. 看了网上的解决办法如下 配置环境变量重装AMESIM,有顺序要求,首先是VS,然后是AMESIM与MATLAB。在AMESIM安装…

无法创建 8192 MB 的匿名分页文件: 系统资源不足,无法完成请求的服务。

好久没用VMware Workstation,今天突然要用,发现所有的虚机在启动的时候提示都提示: 无法创建 XXXX MB 的匿名分页文件:页面文件太小,无法完成操作。 未能分配主内存。 模块"MainMem"启动失败。 未能启动…

手写promis(2)-- 链式编程篇

目录 链式编程 处理异常 和普通内容 链式编程---处理返回promise 链式编程---处理重复引用 链式编程--rejected 链式编程--处理padding状态 链式编程 处理异常 和普通内容 1.返回promise实例:在原本then方法里边创建新promise2.获取返回值:把原本…

淘宝商品详情页面数据(商品详情数据,商品sku数据,商品价格数据,商品优惠券数据,商品评论数据)接口代码流

淘宝API接口可以运用到多种业务场景中,以下列举了一些主要的场景: 商品信息展示:通过调用淘宝API详情接口,可以获取商品的详细信息,如商品标题、价格、库存、销量、评价等数据。这些信息可以用于在自己的网站或应用程…

WIN10 WIN11 12代 13代 大小核;性能核;电源选项;P-core,E-core;

WIN10 WIN11 12代 13代 大小核;性能核;电源选项;P-core,E-core; WIN10 WIN11 12代 13代 大小核;性能核;电源选项;P-core,E-core;说明:方法:1。右键开始菜单,选择“Window…

arcgis中投影文件(.prj)和地理转换文件(.gtf)存储路径

1、投影文件(自定义的.prj)的存储路径 C:\Users\14635\AppData\Roaming\ESRI\Desktop10.5\ArcMap\Coordinate Systems 2、地理转换文件(.gtf)--自定义 C:\Users\14635\AppData\Roaming\ESRI\Desktop10.5\ArcToolbox\CustomTransfo…

早安,朋友!每天问候语祝你天天好心情,事事都顺意

1、今天的风儿轻柔无比,今天的花儿香飘万里;今天的鸟儿十分欢喜,今天的云儿满载笑意;今天的事儿万分顺利,今天的人儿如此甜蜜,所有美好的一切同我的早安连在一起,祝你天天好心情,事事…

护眼灯什么价位的好?适合学生入手的护眼台灯推荐

据60年前的统计,中国人口的近视率约为10%至20%。 国家卫健委发布的中国首份眼健康白皮书显示,我国小学生近视率为47.2%,初中生近视率为75.8%,大学生近视率超过90%。如今,“低头族”随处可见,近视人群日益增…

污水处理智能化:污水处理拓扑图的未来发展趋势

随着城市化进程的不断加速,城市污水处理已经成为了一个重要的问题。污水处理不仅关系到城市环境的质量,还直接影响着人们的生活质量和健康。污水处理拓扑图作为一种新型的污水处理技术,已经被广泛应用于各种污水处理设施中。本文将介绍污水处…

【shell】shell指令学习

仅供本人自学,完全从自己可以理解的角度写的,知识点都是copy网上已有的学习资料,侵权请联系本人删除,谢谢。 1. 文本资料学习 学习Linux,从掌握grep、sed、awk开始吧。 Linux文本三剑客超详细教程—grep、sed、awk …

排序算法--选择排序

实现逻辑 ① 第一轮从下标为 1 到下标为 n-1 的元素中选取最小值,若小于第一个数,则交换 ② 第二轮从下标为 2 到下标为 n-1 的元素中选取最小值,若小于第二个数,则交换 ③ 依次类推下去…… void print_array(int a[], int n){f…