ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AWS数据服务怎么选?用“数据大超市”看懂9个核心服务

AWS数据服务怎么选?用“数据大超市”看懂9个核心服务 AWS的数据服务我前前后后用了快五年从最开始只会开一台 EC2 装 MySQL到现在手边十几个项目跑在 S3、Redshift、Athena 这些服务上。每次有新同事问我“这堆 AWS 数据服务到底怎么选”我都觉得光看官方文档很难讲清楚——S3 和 EFS 都是存文件的RDS 和 DynamoDB 都是存数据的Redshift 和 Athena 都能跑 SQL那它们到底谁替谁你说换谁都能干可真上了生产环境选错一个后面的账单和运维成本能让人怀疑人生。所以我一直习惯把 AWS 这套数据服务想成一个“数据大超市”从商品进场、仓储、上架、销售、盘点到最后的经营管理报表每个环节都有对应的“柜台”。你把数据当成商品把业务当成超市运营这套服务的分工瞬间就清晰了。这篇就用这个思路把 9 个常用的 AWS 数据服务串起来讲一遍——顺便把我这几年踩过的坑也一块儿倒出来。适合刚上手 AWS、或者已经在用但没时间系统梳理的朋友看完全文你至少能搞清楚每个服务在什么场景下“非它不可”什么场景下“换一个更省钱”。1. 为什么用“数据大超市”来理解 AWS 数据服务先说一个很多人都会遇到的问题AWS 官网上数据相关的服务有几十个光看名字根本分不清。EC2 还能猜到是虚拟机但 S3、RDS、DynamoDB、Redshift、Athena、Glue、Kinesis、EMR、QuickSight 这一串单看英文缩写完全没概念。就算把每个服务单独的文档看一遍也很难在脑子里形成一张“完整地图”因为它们彼此之间是协作关系不是独立存在的。你不可能只用一个服务解决数据问题大多数真实业务都要同时用四五个。把 AWS 数据服务看成超市最大好处是能把“数据从哪来、到哪去、存哪里、给谁看”这条链路理顺。超市要运营至少要经历这几个环节进货数据进入系统、仓储原始数据存放、上架业务使用的数据、中央台账经营分析数据、盘点查询临时取数、加工处理ETL/清洗、流水线实时数据流、成品加工复杂分析和店长看板可视化报表。这 9 个环节恰好对应了我今天要讲的 9 个核心服务。用超市做映射不是为了好玩而是为了让你在选型的时候有一个“先定位、后选型”的习惯——拿到一个需求先问它是仓储、是台账还是流水线再决定用哪个服务。定位对了后面基本不会跑偏。这个类比还有一个实际好处方便记忆每个服务的“性格”。S3 就是仓库什么东西都能丢进去但你不能在仓库里做复杂查询RDS 就像生鲜冰柜讲究新鲜和一致放久了会坏查起来快但容量有限DynamoDB 就像是超市里的快消品货架东西小、来来往往特别快只靠主键就能定位但想做复杂报表就很吃力。你把服务的“性格”记住了选型的时候自然就顺手了。2. 逛一圈货架逐个拆解 9 大核心数据服务下面把这 9 个服务一个一个过一遍。每个我只会讲你最该知道的三件事它是干什么的、适合放什么数据、不适合干什么。深度不会到源码级别但足够支撑你做日常架构选型。2.1 仓储中心Amazon S3 负责装一切原始数据S3Simple Storage Service是整个超市的大库房。它存的是对象也就是“文件级别”的数据图片、视频、日志文件、备份、数据集什么都能放。S3 单个对象最大支持 5TB存储空间无限大设计上就是让你把几乎不需要删除的东西都往里丢。它的耐用性做到了 99.999999999%也就是外界常说的“11 个 9”这个数字你可以不用算只需要知道文件放进去基本不会丢。S3 最大的特点不是“能存”而是“便宜且分层”。拿伊利诺伊州北部区域为例标准存储的价格大约 0.023 美元/GB/月而冷归档存储最低能到 0.00099 美元/GB/月差了二十多倍。所以正确的用法是热数据放标准层超过 30 天没访问的挪到低频层90 天以上没动的转归档层全程用生命周期策略自动转不需要人工干预。我见过很多团队把日志往 S3 一丢就不管了几个月后看账单发现存储费比计算费还高其实就是没配生命周期。这块儿你只要记住一句S3 是拿来放“任何暂时不想删的东西”的但它不适合拿来当数据库用因为你没法在 S3 上做条件查询、更新、事务操作每次想取一条数据都得先“把整个对象拉下来”非常憋屈。S3 还有一个非常大的用处是当“数据湖的底座”。后面讲的 Athena、Redshift Spectrum、Glue、EMR全部可以直接从 S3 读数据所以只要数据进了 S3就等于进了整个 AWS 分析生态。你可以把它理解为只要货进了仓库超市里任何一个柜台都能拿这些货去用。2.2 生鲜冰柜Amazon RDS 保存需要事务的业务数据RDSRelational Database Service是一个托管式关系型数据库你选 MySQL、PostgreSQL、SQL Server 或者 MariaDB 引擎AWS 帮你把安装、补丁、备份、故障切换全包了。为什么我拿它比作生鲜冰柜因为关系型数据库最大的特点就是“数据要有 ACID 特性”——订单状态、账户余额、库存数量这些数据必须实时准确不能含糊。就像冰柜里的三文鱼必须一直保持在特定温度状态必须新鲜不能断链。你买的时候它就在货架上状态清清楚楚。RDS 适合的场景很明确企业核心交易系统、订单数据、用户账户、财务数据。它有强一致性的保证支持 Join、事务、索引这些关系型数据库该有的能力业务代码基本不用改就能迁上来。我做过一个小型电商项目订单表、用户表、商品表都放在 RDS for MySQL 上当时选它的理由是团队最熟 SQL而且 RDS 自带主从切换主库挂了能自动拉起备库省了一大笔运维心力。不过 RDS 也有明显边界它是一个“单机数据库”的思路横向扩展能力有限数据量到了几 TB 以后单库压力会越来越大读写分离只能缓解读压力写压力还是集中在一个主实例上。数据量真的到了那个规模就得考虑把历史数据搬去仓库也就是后面的 Redshift让 RDS 只保留热数据。另外一个实际经验RDS 的存储空间一定要开启“自动扩容”不然磁盘满了数据库会直接拒写整个业务瞬间瘫痪。这个坑我踩过一次凌晨两点被报警吵醒跑过去一看就是存储满了。2.3 快消品货架Amazon DynamoDB 主打大流量低延迟DynamoDB 是 AWS 的 NoSQL 托管服务键值存储主打的是高并发、低延迟、自动扩展。如果说 S3 是仓库、RDS 是冰柜那 DynamoDB 就是超市收银台旁边的口香糖货架——东西不大但每一秒都有人在拿存取速度极快。它适合存会话信息、用户购物车、设备状态、游戏排行榜这类“单点查取、幂等写”的数据。DynamoDB 单表能扛每秒数百万请求而且不用你操心分库分表对新手极其友好。DynamoDB 的计费方式是按读写容量单位看RCU/WCU你买多少吞吐它就给你多少能力。设计表时要特别注意“分区键”的选择因为数据是按分区键拆到不同存储节点上的。如果分区键取值就集中在少数几个值比如按“用户类型”做分区键结果 90% 是同一个类型就会出现典型的热分区问题——一部分节点忙死一部分闲死整体性能上不去。我见过一个 IoT 项目设备状态写入 DynamoDB本来压力不大但因为分区键选成了设备型号几千台设备写的都是那两三个型号结果大量请求超时后来改成按设备 ID 做分区键问题直接消失。DynamoDB 不适合做什么不适合做复杂查询、不适合做多表关联、不适合需要事务跨度很大的业务。它本质上是一个“查找表”你告诉它一个 key它秒回一个 value。如果你要用它做报表分析、做多维度筛选那完全是在逆着它的设计思路走性能和成本都会很难看。2.4 中央台账Amazon Redshift 承载企业分析型负载Redshift 是 AWS 的托管数据仓库列式存储专为跑大规模分析 SQL 设计。回到超市比喻里它是总部的中央台账室——店里每天卖了什么、哪个品类卖得好、库存周转率怎么样全都在这个办公室汇总处理。Redshift 适合放“用于分析的结构化数据”比如订单明细累计几年几亿条、用户行为日志汇总表、财务宽表。它最大的优势是列式存储、MPP大规模并行处理架构跑几十亿行数据的聚合查询速度比在 RDS 上快一到两个数量级。我自己的经验是凡是业务数据过了“几千万行”这个规模且查询模式以扫描、聚合、分组为主就应该把数据搬进 Redshift让 RDS 专心扛在线交易让 Redshift 专心做分析。这个“交易库和分析库分离”的架构几乎是 AWS 数据方案的标配。Redshift 性能调优的核心是两个 Key分布键DISTKEY和排序键SORTKEY。DISTKEY 决定了数据怎么分布到各个计算节点选错了会导致数据倾斜SORTKEY 决定了数据存储和跳过的顺序选对了能大幅减少扫描量。新手最容易犯的错是根本不设置 SORTKEY结果全表扫描数据量一大就慢得没法用。还要记住Redshift 是分析库不是事务库。它的写入方式最好是批量导入不适合频繁的单行插入或更新。很多人在 Redshift 上做实时写入结果被它蹩脚的 UPDATE 性能搞崩溃。正确做法是把数据攒成批用 COPY 命令从 S3 批量灌进去。2.5 扫码查价员Amazon Athena 直接用 SQL 查 S3Athena 是一个 Serverless 的交互式查询服务它能直接对着 S3 里的文件跑 SQL不用建任何数据库实例。超市里的查价员拿扫码枪对着货架一扫价格就出来了——Athena 就是那个扫码枪数据放在 S3框架替你解析你只要写 SQL 就行。它的核心价值在于省掉了“数据先加载到数据库”的环节原始文件放 S3建个表映射立刻能查。非常适合快速探查日志、临时数据分析、给数据工程师做数据验证。Athena 的计费方式是“按扫描的数据量收费”大约 5 美元/TB。这句话隐含的意思就是每次查询都要尽量避免扫大量数据。三个关键优化手段第一用分区表按日期把日志拆成多个分区目录查询时只扫对应分区第二用列式存储格式Parquet只读需要的列第三压缩数据减小文件体积。如果这些都不做直接拿原始 JSON 日志建表查询一次全表扫描可能就是几美元而同样数据换成 Parquet 加分区可能是几美分。我见过一个客户把一个月查询账单从一千多美元优化到一百美元左右核心就是做了这三件事一点没砍业务。Athena 适合什么适合“想快速看两眼数据”的场景比如某个日志文件里的报错分布、某个 CSV 的汇总结果。但如果是持续性的高频报表就不适合了——每次扫描都要付钱而且查询延迟比起专门的数仓还是要高。高频稳定的查询应该把数据落到 Redshift 或 QuickSight SPICE 缓存里。2.6 理货员AWS Glue 负责清洗、转换、装载Glue 是 AWS 的 ETL 托管服务Extract, Transform, Load即抽取、转换、加载。超市里的理货员把进货来的散装商品拆包、清洗、称重、贴标、分装再送到对应货架——Glue 干的就是这个活只不过对象是数据。它自带数据目录Data Catalog能自动爬取 S3 里的文件结构识别表结构你在 Athena、Redshift Spectrum 里能直接看到 S3 上的数据靠的就是 Glue 数据目录在背后做元数据登记。真正让 Glue 值钱的是它的开发能力你可以写 PythonPySpark或 Scala 脚本做去重、格式转换、字段映射、数据清洗然后把结果写回 S3 或者写入 Redshift。一个很常见的任务链是原始日志在 S3 → 每天定时 Glue 作业跑一次清洗过滤 → 结果写到 S3 的 Parquet 分区 → Redshift 用 COPY 把结果加载进仓。这里面 Glue 是无服务器按量计费的不用你开一台常驻的机器跑调度成本低、还省心。Glue 的坑主要在两个一是作业启动慢冷启动可能要几十秒甚至几分钟不适合分钟级延迟的链路二是资源配比容易浪费默认 DPU数据计算单元数量开得多跑得快但账单也高开得少又容易任务超时需要根据数据量反复调。我的习惯是先开小规格跑一遍看执行时间和资源利用率再逐步往上加。2.7 传送带Amazon Kinesis 处理实时数据流Kinesis 是 AWS 的实时流处理服务核心是把“源源不断产生的数据”像传送带一样送进系统。超市每天晚上都要盘点但实时销售趋势、门口客流高峰、货架缺货预警这些信息是要靠传送带实时送到后台的——Kinesis 就是这条传送带。它家族里有三个主要产品Kinesis Data Streams原始流数据管道、Kinesis Data Firehose流式数据转存到 S3/Redshift以及 Kinesis Data Analytics对流做 SQL 实时分析。实际使用里最经典的组合是“数据源 → Data Streams → 实时消费 → 同时接 Firehose 把同一份数据落 S3 存档”。比如一个移动 App每次点击产生一条事件事件进 Kinesis实时消费程序做在线用户数统计Firehose 把原始事件另存到 S3 备用。这样一份数据既满足了实时需求又存档下来了后面要做离线分析随时可以取。Kinesis 的读端按 Shard分片数量计费每个 Shard 能支撑每秒 1MB 读和 2MB 写。Shard 数量开少了数据进不来会丢开多了闲置也烧钱。最常见的问题是 Shard 数量是提前定好的流量涨了扩容要手动分裂做不到瞬间弹性所以评估峰值流量时要留点冗余。如果你只需要“把流式数据简单转存不想做复杂实时计算”其实可以直接上 Firehose连 Shard 都不用管写入端到 S3/Redshift 全自动省心非常多。2.8 中央厨房Amazon EMR 批量生产复杂数据结果EMRElastic MapReduce是 AWS 上的大数据处理平台托管了 Hadoop、Spark、Hive、Presto 等开源大数据框架。它相当于超市的中央厨房——常规货架上的商品是供应商送来的成品而半成品菜、标品熟食是厨房里批量加工出来的。EMR 的作用就是批量加工处理 PB 级数据、跑机器学习特征工程、做复杂的图计算、大规模日志清洗这些用 Spark 或 Hive 跑比用 SQL 直查要灵活得多。为什么有了 Glue 还要用 EMR区别在于“框架”与“复杂度”。Glue 适合轻量 ETL 和简单清洗但它本质是封装好的 Spark 作业适合不太复杂的数据处理EMR 则是一个开箱即用的完整大数据集群你可以自由安装各种组件、写各种复杂的分布式计算程序控制粒度更高。如果一个任务既要读 S3、又要做复杂的 Spark ML 管道、还要自定义算子用 EMR 更顺手。代价是你要有集群的运维意识——虽然 AWS 帮你装好了组件但节点数量、规格、Auto Scaling 规则都得自己定。EMR 最有价值的使用方式是按需启动用完就关。比如每周日凌晨跑一个推荐模型重训任务开一个 10 节点的 EMR 集群跑两小时跑完关掉成本只按使用时长算。很多人不敢用 EMR 是因为不知道“集群关了数据会不会丢”——只要你把结果写回 S3集群本身是无状态的随便关。这里有一条铁律EMR 集群务必确认数据落盘到 S3/Redshift不要只留在 HDFS 本地否则集群一关所有中间结果直接蒸发。2.9 店长看板Amazon QuickSight 让数据变成图表QuickSight 是 AWS 的 BI商业智能可视化工具Serverless 架构拖拽式做仪表盘。超市的店长不需要看底层数据表他需要一张看板今日销售额、客单价、各品类占比、库存预警——QuickSight 就是这块看板。它可以连接到 Redshift、Athena、S3、RDS 等一堆数据源把查询结果渲染成图表然后通过链接分享给业务同事不用每人发一份 Excel。QuickSight 的核心引擎叫 SPICE它是 QuickSight 自带的内存列式缓存。你从 Redshift 抽数到 SPICE 以后报表查询不再打数据库速度非常快也不会把源数据库压垮。这个设计很聪明数据库负责算SPICE 负责存算好的结果报表只是读缓存。我建议所有 QuickSight 报表连接都尽量把数据集刷进 SPICE尤其是业务方要高频刷新的大屏否则每次看报表都实时去查 Athena 或 Redshift账单和性能都受不了。QuickSight 适合什么适合中小团队快速搭内部报表体系几十分钟就能出一个能看的驾驶舱。它的短板是高级自定义能力不强复杂的图表类型、自定义 CSS、复杂的交叉过滤做起来不如 Tableau 或者 Power BI 灵活。所以如果团队已经有成熟的 Tableau 生态也不必硬切 QuickSight按需选型就好。3. 真实场景实操从 0 到 1 搭一套数据接收与分析链路前面像逛超市一样把 9 个服务都转了一遍如果只记住“每个服务是干嘛的”其实还不够。真正考验人的是一个需求来了怎么把这几件工具组合起来。我拿一个比较典型的“电商订单日志分析平台”来走一遍完整设计这个例子几乎能把上面 9 个服务全串进去你可以当模板直接用。3.1 先搞清楚数据长什么样再决定放哪个柜台做架构设计第一步不是选服务而是画数据流。在一个典型的中型电商场景里至少有四类数据在跑用户账号与订单主数据、商品图片和文件、App 点击行为流、运营分析汇总。我把它们一一映射到上面 9 个服务订单主数据订单表、用户表、支付流水强一致、事务性要求高。放在 RDS for MySQL负责在线交易。数据量单表两千万行以内都没太大问题超过这个规模再考虑分表或拆历史库。图片与文件商品图、用户头像、退款凭证、导出报表。全部丢 S3配合 CloudFront 做 CDN 加速。这个环节要注意 S3 的存储分层策略热图片放标准层超过 30 天的临时导出文件直接配生命周期规则转低频。实时行为流App 点击、浏览、搜索事件。用 Kinesis Data Streams 接收实时消费者计算在线人数Firehose 把原始事件转存 S3 的日志分区目录。这里我建议在 Data Streams 的消费者代码里做一次轻量清洗过滤比如去掉爬虫流量既减小下游存储成本也让后面分析的数据质量更高。离线分析与报表所有历史订单明细、日志数据全部通过 Glue 作业从 S3 清洗后写入 Redshift作为企业级分析仓库日常临时探查用 Athena 直接查 S3 原始数据最终业务报表通过 QuickSight 连接 Redshift 或 SPICE 展示。EMR 在这个场景里不是主角但如果你后面要做用户个性化推荐、购买序列预测就可以每周定时启动 EMR 跑一次 Spark 任务把特征数据算好写回 S3再导进 Redshift。这张架构图画出来以后你会发现每个服务各管一段谁也不抢谁的活。这个“各管一段”的思路很重要——很多人做数据架构喜欢“一个库干所有事”最后系统到处是瓶颈。3.2 选型决策表按数据特征对号入座为了方便直接抄作业我把选型逻辑整理成一张决策表。哪怕你是第一次接触 AWS按照这张表去对号入座也能在十分钟内定出基本方案数据特征推荐服务核心理由不建议用强一致、事务、高并发写入RDSACID 保证SQL 生态成熟DynamoDB最终一致海量对象文件如日志、图片S3无限存储低成本生态对接好RDS容量有限超高并发 KV 读写按 key 查询DynamoDB自动扩展毫秒级延迟RDS单机扩展难离线分析、大宽表、累计历史数据Redshift列式存储MPP 并行查询快RDS查询性能不足临时查 S3 原始数据不想建库AthenaServerless按扫描量计费Redshift加载成本高定时清洗、格式转换、ETL 调度Glue托管Python/PySpark 灵活EMR复杂度高流式数据实时接收与落地Kinesis专为流式设计生态完整Glue批处理思路大规模分布式计算、ML 特征工程EMR自定义框架自由度最高Glue能力受限BI 报表、可视化驾驶舱QuickSightServerlessSPICE 缓存快Athena无图表能力这张表不是死的。比如日志分析你用 Athena 也可以长期跑只不过账单可能比较肉疼订单数据你塞进 DynamoDB 技术上也能跑但事务写起来很痛苦。先按表选再根据成本与性能反馈微调是最稳的路径。3.3 一条最小链路的手把手配置过程我拿“App 点击日志进 S3然后用 Athena 跑一个 PV/UV 统计”这个小需求把实操步骤列出来中间每一步我都给你拆清楚为什么这么做。这个链路虽然小但它覆盖了 S3、Kinesis Firehose、Glue 数据目录、Athena 四个服务是你理解整张大图最快的入口。第一步创建 S3 桶并按日期分目录。桶名比如app-click-logs-bucket目录结构设计成logs/year2025/month02/day17/。分区目录的命名一定要用keyvalue这种形式Athena 才能自动识别分区。很多新手随手建目录叫20250217那后续 Athena 每次都用手动添加分区脚本麻烦查询性能也差。第二步创建 Kinesis Firehose 传输流。目标选 S3动态分区打开分区键选你日志里的时间字段。Firehose 会自己把数据按小时切成小文件放到 S3你再在 Athena 里通过分区“假装”数据是按日组织的。Firehose 落地 S3 时会自动给文件加时间前缀所以这里只需要把前缀设成logs/即可。如果担心原始 JSON 格式解析麻烦可以让 Firehose 直接做一次转换成 Parquet前提是你先在 Glue 控制台建好表结构。这一步能省掉后面大量查询时间和费用。第三步用 Glue Crawler 识别 S3 上的数据结构。在 Glue 里建一个 Crawler指向 S3 的logs/目录让它自动跑一遍识别出字段名、类型注册到 Data Catalog。跑完以后你去 Athena 里应该已经能看到一张logs表能直接select *了。第四步Athena 查询。比如算某天 PVselect count(*) from logs where dt 2025-02-17算 UV 就是count(distinct user_id)。注意 where 条件里必须带上分区字段千万不能省否则 Athena 会全表扫描整个 S3账单直接翻倍。整套链路从创建 S3 桶到 Athena 能出数熟练之后二十分钟以内就能搭完。这个最小链路的价值在于你以后不管是加 Redshift、加 QuickSight 还是加 EMR都是在这个底座上做加法。4. 常见问题与避坑手册用了这么多年 AWS 数据服务踩坑经验比成功经验更值钱。下面这些问题是新团队最常遇到的我按服务整理成速查表每一项都是我或者同行真实遇到过的后面附的解法也都是验证过的。4.1 高频异常与兜底方案现象可能原因兜底方案Athena 单次查询费用高得吓人没有按分区过滤、读非列式格式补充分区字段、转 Parquet、启用列裁剪DynamoDB 频繁出现 400 限流RCU/WCU 配置不足开自动扩展或改用 On-Demand 模式Redshift 查询越来越慢SORTKEY 没设、数据倾斜重建表设置合理 DISTKEY/SORTKEYRDS 磁盘满导致写入失败没开自动扩容开启存储自动扩展预留空间Kinesis 数据丢失Shard 数量不足写入超限按峰值流量预留 1.5 倍 Shard配置重试Glue 任务反复超时DPU 配置过小调整 DPU 数量拆分大作业为多个小作业EMR 跑完数据没了结果只写在 HDFS 本地改脚本所有结果写 S3 或 Redshift这里面最容易被忽视的是 DynamoDB 的 On-Demand 模式。很多人不知道 DynamoDB 有按量付费模式还傻傻地设 RCU/WCU 上限结果业务一搞活动流量上来直接被限流。其实对大多数中小项目直接用 On-Demand 模式是最省心的——它自动扩容收费按实际读写量走单价略高但不用操心容量规划。只有流量非常稳定且有成本压力的时候才值得回去用预置容量模式。4.2 成本控制的三条铁律AWS 数据服务最大的杀手不是性能差而是“账单失控”。我见过不少团队架构没毛病就是月底账单拍桌子。控制成本其实就三条铁律第一能存 S3 的不要放进数据库。比如原始日志、历史流水、临时结果这类数据冷热分明且很少被直接在线访问放 S3 配置生命周期策略成本能比放 RDS 低一个数量级。很多人喜欢把所有的表都塞进 RDS 或 Redshift结果大部分数据八百年没人查还占着昂贵的存储空间。第二能扫分区的不要全表扫。无论是 Athena 还是 Redshift查询一定要带分区或过滤条件。Athena 按扫描量计费少扫 90% 的数据就是省 90% 的钱Redshift 虽然按集群计费但扫描量直接决定查询速度查询慢了集群就得加节点加节点就是加钱。第三用完就关的不要常驻。EMR 临时集群、EC2 测试实例、Redshift 开发集群这些应该随用随启、随用随关。尤其是 EMR完全可以在每天固定时间触发启动跑完任务自动关闭省下的成本非常可观。我有个项目原来 EMR 常驻一个月成本 800 美元改成定时启动、任务结束自动关直接降到 200 美元出头功能一点没减。4.3 架构选型时最容易犯的三个错误第一个错误把 RDS 当数据仓库用。业务数据到了几千万行报表 SQL 天天在 RDS 上跑联表聚合主库 Load 飙到 90%。这不是 RDS 不行是用错了场景。正确做法是一开始就设计“OLTP 用 RDSOLAP 进 Redshift”的分离架构通过 Glue 或 nightly 任务把数据同步过去哪怕数据量不大也值得养成这个习惯避免后面拆架构的痛苦。第二个错误为了“全面”把 9 个服务全用上。我真的见过有人为了把每个 AWS 服务都体验一遍给只有三十万行数据的项目上了全套 EMR Kinesis Redshift结果每个月维护成本比业务成本还高。架构应该是“需求倒推”只有实时流才上 Kinesis只有 PB 级离线计算才上 EMR只有几亿行明细分析才上 Redshift。数据规模没到那个量级用 Athena 加 S3 就够了省下的钱买点排骨不香吗第三个错误忽视数据分区策略。S3 目录分区、Athena 表分区、Redshift 的 SORTKEY这些都是“一劳永逸”的事情一开始没设计好后面改起来痛不欲生。比如 S3 日志分区如果没按日期分后面要做按天统计每次查询都要扫几个月的数据时间和钱都在燃烧。我强烈建议任何数据进入 S3 的那一刻就按日期和业务维度把目录结构定好不要事后再补。5. 写在最后一点个人的选型心得最后分享一个我自己反复用的小技巧。AWS 数据服务不是越贵越好也不是功能越全越好关键是让数据的“形状”和服务的“性格”匹配上。我这些年养成了一个习惯拿到一个数据需求先问三个问题数据是结构化还是半结构化、写入是高频还是低频、查询是单条定位还是全量汇总。这三个问题基本能把服务范围缩小到两三个候选再配合账单和延迟指标做最终决策基本不会跑偏。这 9 个服务里我最想推荐你先深入掌握的是 S3 和 Athena。它们几乎零成本起步、按量付费、不涉及运维能让你在一天内就把“数据上云”的价值跑通。等数据真的多了再慢慢引入 Redshift、Glue、Kinesis 这些重武器。我刚开始接触 AWS 的那段时间就是从 S3 加 Athena 起步慢慢摸索出这套超市方法论后来做任何数据架构心里都有一张地图。希望这篇也能成为你的那张地图让你在面对 AWS 琳琅满目的数据服务时不再看花了眼。
返回列表