订单表大数据处理实战

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 前言:也许大数据,大并发,大流量在许多coder中还是一个比较遥远的事情。碰巧我最近经手的一个项目就有着大数据的问题(一天100w条数据左右)虽说不能算超级大,也算是需要做些特殊处理才能应付。

前言:

也许大数据,大并发,大流量在许多coder中还是一个比较遥远的事情。碰巧我最近经手的一个项目就有着大数据的问题(一天100w条数据左右)虽说不能算超级大,也算是需要做些特殊处理才能应付。
首先交代下背景:
首先大数据的表是一张订单表,订单表中有,交易金额,收益等字段,需要在后台做三种以上的统计

  1. 今日统计
  2. 昨日统计
  3. 累计统计

在这样大数据出现之前,使用的解决方案一直是将订单全部存在一张表里。然后统计的时候,就直接查询全表,做聚合查询。
这样处理在数据量不大的情况下确实是没问题,只是在新的订单量迅速增大,对数据表的读写和统计都有不小的挑战!

1. 水平分表

首先从数据表入手,经过我们思考,我们选择对数据表分表。分表的时机为按量分表,比如我们发现,订单表马上要到500w数据时,我们就新建下一张订单表(当然这是自动的)

这样做的好处就是,数据表的读取性能会比较好,而且不会在数据超级大的时候发生写入挂起的情况。始终让订单表处于一个高性能的状态。

当启用新表时,我们相应的创建订单方法和修改订单方法也要随着改变,要对新的数据表进行操作,这里就涉及到我上一篇文章《模型初始化踩坑记》 这里就不再赘述了。

2. 停机统计

搞定了对订单的新增和修改,就来到了本次项目的难点了,那就是对订单的统计。也是进过了很久的思考与讨论。发现我们的订单统计有一个特点:那就是很多地方都需要全表统计。如果我们先分表,然后再连表查询,这无疑就是脱了裤子。。。
那么经过我们的套路,我们设想出一套机制

停机统计机制流程图

这样做的目的是为了将一天的订单分为两个部分,一个是8:30之前,一个是8:30之后的。这样就可以很好的规避数据表切换导致的统计漏掉。这样每天只统计今日0 ~ 8:30和昨日8:30 ~ 23:59。通过计算,就可以得到昨日的统计,累计的统计(截止于今日8:30)

3.结合停机统计的实时统计

那么有人可能会问,那么8:30之后的订单如何统计呢?当然,我这里的机制最多能统计到当日8:30的数据,有很多的数据需要时效性,也就是实时的反应出订单的数据。那么这里我就要介绍第二套机制

实时统计流程图

根据当前时间的判断,走向两个case,拿到停机时段的统计数据,再结合,实时统计的数据。就可以得到完整的统计订单数据。虽然这个步骤看上去有些复杂。这就像是压缩文件,当你压缩一个1b的文件时,压缩出了70几b的压缩包。当我们的订单数据达到了1000w,甚至更多。那种看似简单的只统计聚合查询订单表便变得非常的慢。这一套逻辑虽然查询次数多一些。但是查询速度会有一个上限。这个上限就是我们切换数据表。随后读取的就是新的数据表,速度会非常快。
如果使用实时查询订单表,开始订单不多的时候,会很快。当订单越来越多时。查询速度会呈正函数形式向上递增。

本次介绍,主要是介绍一个思路。如果有更好的思路欢迎大家交流。由于涉及公司业务,代码就不便展示了。希望得到大神指点
谢谢

以上

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
5月前
|
SQL 分布式计算 数据可视化
滴滴出行大数据数仓实战
滴滴出行大数据数仓实战
228 0
滴滴出行大数据数仓实战
|
13天前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
29 3
|
4月前
|
数据采集 大数据
大数据实战项目之电商数仓(二)
大数据实战项目之电商数仓(二)
106 0
|
2月前
|
数据采集 人工智能 安全
AI大数据处理与分析实战--体育问卷分析
本文是关于使用AI进行大数据处理与分析的实战案例,详细记录了对深圳市义务教育阶段学校“每天一节体育课”网络问卷的分析过程,包括数据概览、交互Prompt、代码处理、年级和学校维度的深入分析,以及通过AI工具辅助得出的分析结果和结论。
|
2月前
|
大数据 API 数据处理
揭秘!Flink如何从默默无闻到大数据界的璀璨明星?起源、设计理念与实战秘籍大公开!
【8月更文挑战第24天】Apache Flink是一款源自Stratosphere项目的开源流处理框架,由柏林理工大学等机构于2010至2014年间开发,并于2014年捐赠给Apache软件基金会。Flink设计之初即聚焦于提供统一的数据处理模型,支持事件时间处理、精确一次状态一致性等特性,实现了流批一体化处理。其核心优势包括高吞吐量、低延迟及强大的容错机制。
53 1
|
2月前
|
分布式计算 大数据 分布式数据库
"揭秘HBase MapReduce高效数据处理秘诀:四步实战攻略,让你轻松玩转大数据分析!"
【8月更文挑战第17天】大数据时代,HBase以高性能、可扩展性成为关键的数据存储解决方案。结合MapReduce分布式计算框架,能高效处理HBase中的大规模数据。本文通过实例展示如何配置HBase集群、编写Map和Reduce函数,以及运行MapReduce作业来计算HBase某列的平均值。此过程不仅限于简单的统计分析,还可扩展至更复杂的数据处理任务,为企业提供强有力的大数据技术支持。
49 1
|
2月前
|
API C# Shell
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
62 0
|
3月前
|
分布式计算 Apache Spark
|
3月前
|
分布式计算 Java 大数据
实战:基于Java的大数据处理与分析平台
实战:基于Java的大数据处理与分析平台
|
4月前
|
消息中间件 分布式计算 Hadoop
大数据实战项目之电商数仓(一)
大数据实战项目之电商数仓(一)
221 0