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

news2024/12/23 4:16:59

在这里插入图片描述

🏆作者简介,黑夜开发者,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分享,让大家来初识这一款数据仓库。如果想要深入学习大数据或者数据挖掘,可以继续去官网学习相关技术。

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RNA structures】RNA-seq 分析: RNA转录的重构和前沿测序技术

文章目录 RNA转录重建1 先简单介绍一下测序相关技术2 Map to Genome Methods2.1 Step1 Mapping reads to the genome2.2 Step2 Deal with spliced reads2.3 Step 3 Resolve individual transcripts and their expression levels 3 Align-de-novo approaches3.1 Step 1: Generat…

C语言------接续符和转义符

接续符和转义符--------- \ C语言中的\符号可以表示接续符和转义符。 C语言中的接续符( \ )放在一行代码的结尾,可以将下一行的内容提到这一行来。 \符号还有另一个作用 — 转义符。 C语言中的转义符()主要用于表示无回显字符,也可用于表示常规字符。 …

原型链继承

方式一:原型链继承 1.套路: (1)定义父类型构造函数 (2)给父类型的原型添加方法 (3)定义子类型的构造函数 (4)创建父类型的对象赋值给子类型的原型 &…

基于SpringBoot的家具商城管理系统

基于SpringBoot的家具商城管理系统的设计与实现【文末源码】 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 家具详情 通知公告 登录界面 管理员界面 摘要 一段关于基于…

Windows下安装PyTorch(GPU版本)

PyTorch环境配置及安装 初步机器学习,这里记录下一些学习经过,之后以便于自己查看,同时欢迎各位大佬点评,本节是机器计算的一个包的安装和简单验证。 1.流程 确定自己的硬件信息-确定电脑有英伟达(NVIDIA&#xff…

给视频批量添加背景图,轻松简单的操作方法

当我们需要给多个视频添加相同的背景图片时,一个一个地添加未免太过于繁琐和低效。幸运的是,我们可以使用固乔剪辑助手这款软件来实现批量添加背景图片的操作。下面就是详细的步骤指南。 首先,我们需要在浏览器搜索“固乔科技”,然…

面试官心声:个个都说会自动化,结果面试一问细节全露馅了

今年我们部门计划招聘几名自动化测试工程师,为此我进行了面试和培训,发现了一个让我感到担忧的趋势,许多候选人可以轻松地回答有关脚本编写、元素定位、框架API等问题。然而一问到实际项目,比如“如何从0开始搭建自动化体系”、“…

【C语言】用函数实现模块化程序设计

前言:如果把所有的程序代码都写在一个主函数(main函数)中,就会使主函数变得庞杂、头绪不清,使阅读和维护程序变得困难。此外,有时程序中要多次实现某一功能,如果重新编写实现此功能就会使得程序冗长、不精炼。 &#x…

day02_numpy_demo

Numpy Numpy的优势ndarray属性基本操作 ndarray.func() numpy.func()ndarray的运算:逻辑运算、统计运算、数组间运算合并、分割、IO操作、数据处理,不过这个一般使用的是pandas Numpy的优势 Numpy numerical数值化 python 数值计算的python库,用于快…

Node.js--》简易资金管理系统后台项目实战(后端)

今天开始使用 node vue3 ts搭建一个简易资金管理系统的前后端分离项目,因为前后端分离所以会分两个专栏分别讲解前端与后端的实现,后端项目文章讲解可参考:前端链接,我会在前后端的两类专栏的最后一篇文章中会将项目代码开源到我…

arduino 记录

​ 知识整理 Arduion U8G2简要说明 u8g2显示分为全页显示与分页显示和U8X8的无ram显示 全页显示需要单片机提供1024字节的ram,分页显示分为需要256字节和125字节的ram U8X8不需要ram,但不可画图,只能显示文字 全页使用 clearbuff senddbuff 分页…

javaweb中的转发与重定向

2023.10.22 在一个web应用中应该如何完成资源的跳转? 转发重定向 转发和重定向有什么区别? 转发是由服务器端进行的页面跳转,而重定向是由浏览器端进行的页面跳转。 ①代码上的区别: 转发: // 获取请求转发器对象…

Sublime Text forMac/Windows:高效代码编辑器的终极指南

你是否曾为寻找一款高效、强大且用户友好的代码编辑器而感到困扰?现在,让我们一起探索Sublime Text的魅力。Sublime Text是一款流行的代码编辑器,以其强大的功能和简洁的设计赢得了开发者的喜爱。本文将带你了解Sublime Text的各项特性&#…

1、VMware虚拟机及网络配置

一、VMware虚拟网络编辑器 1、选择NAT模式并配置子网 2、进入NAT设置,配置网关 3、宿主机网络适配器设置 二、创建虚拟机 在这里插入图片描述 三、开启虚拟机,安装操作系统 在该网段内配置静态ip,指定网关为前面NAT配置的网关地址…

游戏找不到msvcr100dll怎么办,分享5个有效修复方法

一、游戏找不到msvcr100dll会造成的困扰 在当今的数字时代,电子游戏已经成为了我们生活中不可或缺的一部分。它们为我们提供了娱乐和放松的机会,让我们能够在忙碌的生活中找到乐趣。然而,当我们在玩游戏时,可能会遇到一些技术问题…

【性能测试】MySQL慢查询原因/排查思路+SQL优化与性能定位思路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Mysql慢查询现象、…

十四天学会C++之第八天:文件操作

1. 文件的打开和关闭 文件操作的基本概念。打开文件:使用fstream库打开文件以供读写。关闭文件:确保文件在使用完毕后正确关闭。 文件的打开和关闭:C 文件操作入门 在C编程中,文件操作是一项重要的任务,可以读取和写…

Java日志系统之Log4j2

Log4j2介绍 Log4j2是Log4j的升级版,参考Logback的优秀设计并修复了一些问题。主要优点有: 异常处理,在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。性能提升&am…

Java高级编程----集合

集合 集合概述Collection接口List接口简介ArrayList集合Set接口简介Hash Set接口简介Map接口简介TreeMap集合Properties集合 集合概述 为了在程序中可以保存数目不确定的对象,Java提供了一系列特殊类,这些类可以存储任意类型的对象,并且长度…

使用java mail SMTPTransport发送邮箱,本地秒到,一上服务器就20-30s左右,生产环境直接发送失败。

一、代码 pom文件 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--pom.xml添加javax.mail的引用&#xff0c;或者项目引入…