【电商核心业务实战】(6) 订单系统历史数据归档方案设计与实现

发布时间:2026/8/14 22:23:03

【电商核心业务实战】(6) 订单系统历史数据归档方案设计与实现
电商核心业务实战 · 系列文章目录(1) 电商项目核心订单系统设计与实现(2) 电商促销流程设计与实现(3) 分布式唯一ID 实战(4) 订单系统读写分离方案设计与实现(5) 订单系统分库分表方案设计与实现(6) 订单系统历史数据归档方案设计与实现(7) 电商项目订单支付实战(8) 使用RocketMQ优化订单超时取消流程(9) 分布式事务在电商项目中的应用场景分析与实战如何归档历史数据订单数据会随着时间一直累积前面我们说过预估订单的数量每个月订单2000W一年的订单数可达2.4亿三年可达7.2亿。数据量越大数据库就会越慢这是为什么我们需要理解造成这个问题的根本原因。无论是增、删、改、查中的哪个操作其本质都是查找数据因为我们需要先找到数据然后才能操作数据。无论采用的是哪种存储系统一次查询所耗费的时间都取决于如下两个因素查找的时间复杂度。数据总量。查找的时间复杂度又取决于如下两个因素查找算法。存储数据的数据结构。这两个因素也是面试问题中经常考察的知识。所以面试官并不是非要问一些用不上的问题来为难求职者这些知识点不是用不上而是求职者很多时候不知道怎么用。大多数做业务的系统采用的都是现成的数据库数据的存储结构和查找算法都是由数据库来实现的对此业务系统基本上无法做出任何改变。我们知道 MySQL 的 InnoDB 存储引擎其存储结构是 B树查找算法大多数时候是对树进行查找查找的时间复杂度就是 O(log n)这些都是固定的。我们唯一能改变的就是数据总量了。所以解决海量数据导致存储系统慢的问题方法非常简单就是一个拆字把大数据拆分成若干份小数据学名称为分片( Shard)。拆开之后每个分片里的数据就没那么多了然后让查找尽量落在某一个分片上以此来提升查找性能。存档历史订单数据订单数据一般保存在 MySQL 的订单表里说到拆分 MySQL 的表前面我们不是已经讲到了分库分表吗分库分表很多时候并不是首选的方案应该先考虑归档历史数据。以京东为例可以看到在我的订单中查询时分为了近三个月订单、今年内订单、2021年订单、2020年订单等等这就是典型的将订单数据归档处理。所谓归档也是一种拆分数据的策略。简单地说就是把大量的历史订单移到另外一张历史订单表或数据存储中。为什么这么做呢订单数据有个特点具备时间属性的并且随着系统的运行数据累计增长越来越多。但订单数据在使用上有个特点最近的数据使用最频繁超过一定时间的数据很少使用这被称之为热尾效应。因为新数据只占数据总量中很少的一部分所以把新老数据分开之后新数据的数据量就少很多查询速度也会因此快很多。虽然与之前的总量相比老数据没有减少太多但是因为老数据很少会被访问到所以即使慢一点儿也不会有太大的问题而且还可以使用其他的存储系统提升查询速度。这样拆分数据的另外一个好处是拆分订单时系统需要改动的代码非常少。对订单表的大部分操作都是在订单完成之前执行的这些业务逻辑都是完全不用修改的。即使是像退货退款这类订单完成之后的操作也是有时限的这些业务逻辑也不需要修改还是按照之前那样操作订单即可。基本上只有查询统计类的功能会查到历史订单这些都需要稍微做些调整。按照查询条件中的时间范围选择去订单表还是历史订单中查询就可以了。很多大型互联网电商在逐步发展壮大的过程中长达数年的时间采用的都是这种订单拆分的方案正如我们前面看到的京东就是如此。商城历史订单服务的实现商城历史订单的归档由 tulingmall-order-history 服务负责其中比较关键的是三个 Service既然是历史订单的归档归档到哪里去呢我们可以归档到另外的 MySQL 数据库也可以归档到另外的存储系统这个看自己的业务需求即可在我们的系统中我们选择归档到 MongoDB 数据库。对于数据的迁移归档我们总是在 MySQL 中保留3个月的订单数据超过三个月的数据则迁出。前面我们说过预估每月订单2000W一张订单下的商品平均为10个如果只保留3个月的数据则订单详情数为6亿分布到32个表中每个表容纳的记录数刚好在2000W左右这也是为什么前面的分库分表将订单表设定为32个的原因。在我们的实现中OperateDbServiceImpl 负责读取 MySQL 的订单数据和删除已迁出的订单OperateMgDbServiceImpl 负责将订单数据批量插入 MongoDBMigrateCentreServiceImpl 负责进行调度服务。在进行数据迁移的过程需要注意以下两点分布式事务考察迁移的过程我们是逐表批次删除对于每张订单表先从 MySQL 从获得指定批量的数据写入 MongoDB再从 MySQL 中删除已写入 MongoDB 的部分这里存在着一个多源的数据操作为了保证数据的一致性看起来似乎需要分布式事务。但是这里并不需要分布式事务解决的关键在于写入订单数据到 MongoDB 时我们要记住同时写入当前迁入数据的最大订单ID让这两个操作执行在同一个事务之中。这样在 MySQL 执行数据迁移时总是去 MongoDB 中获得上次处理的最大 OrderId作为本次迁移的查询起始ID当然数据写入 MongoDB 后还要记得删除 MySQL 中对应的数据。在这个过程中我们需要注意的问题是尽量不要影响线上的业务。迁移如此大量的数据或多或少都会影响数据库的性能因此应该尽量选择在闲时迁移而且每次数据库操作的记录数不宜太多。按照一般的经验对 MySQL 的操作的记录条数每次控制在10000以下是比较合适在我们的系统中缺省是2000条。更重要的是迁移之前一定要做好备份这样的话即使不小心误操作了也能用备份来恢复。如何批量删除大量数据在迁移历史订单数据的过程中还有一个很重要的细节问题如何从订单表中删除已经迁走的历史订单数据虽然我们是按时间迁出订单表中的数据但是删除最好还是按 ID 来删除并且同样要控制住每次删除的记录条数太大的数量容易遇到错误。这样每次删除的时候由于条件变成了主键比较而在 MySQL 的 InnoDB 存储引擎中表数据结构就是按照主键组织的一棵 B树同时 B树本身就是有序的因此优化后不仅查找变得非常快而且也不需要再进行额外的排序操作了。为什么要加一个排序的操作呢因为按 ID 排序后每批删除的记录基本上都是 ID 连续的一批记录由于 B树的有序性这些 ID 相近的记录在磁盘的物理文件上大致也是存放在一起的这样删除效率会比较高也便于 MySQL 回收页。关于大批量删除数据还有一点需要注意一下执行删除语句后最好能停顿一小会因为删除后肯定会牵涉到大量的 B树页面分裂和合并这个时候 MySQL 本身的负载就不小了停顿一小会可以让 MySQL 的负载更加均衡。

相关新闻

【电商核心业务实战】(5) 订单系统分库分表⽅案设计与实现

【电商核心业务实战】(5) 订单系统分库分表⽅案设计与实现

2026/8/14 22:23:03

📚 电商核心业务实战 系列文章目录 (1) 电商项目核心订单系统设计与实现 (2) 电商促销流程设计与实现 (3) 分布式唯一ID 实战 (4) 订单系统读写分离方案设计与实现 (5) 订单系统分库分表方案设计与实现 (6) 订单系统历史数据归档方案设计与实现 (7) 电商项目订单支…

从Spark API使用者到性能调优专家:原理、实战与避坑指南

从Spark API使用者到性能调优专家:原理、实战与避坑指南

2026/8/14 22:23:03

如果你正在学习大数据处理,或者工作中需要处理海量数据,那么“Spark”这个名字你一定不陌生。但很多初学者,甚至一些有经验的开发者,在面对Spark时,常常陷入一个误区:以为只要会写几行 spark.read.csv() …

C语言学习之数据结构 :基本概念

C语言学习之数据结构 :基本概念

2026/8/14 22:13:03

数据结构 一 .基本概念 1.数据结构 数据结构:存储具有一种或或多种特定关系的数据的集合(如何组织和存储数据) 程序设计 数据结构 算法 2.数据与数据之间的关系 逻辑结构:数据元素与元素之间的关系 集合 :数据元素与…

3分钟搞定Android Studio中文汉化:终极免费汉化指南

3分钟搞定Android Studio中文汉化:终极免费汉化指南

2026/8/14 23:43:06

3分钟搞定Android Studio中文汉化:终极免费汉化指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 深夜打开 Android…

Copilot能换成本地吗?深入解析本地化替代方案与技术实践

Copilot能换成本地吗?深入解析本地化替代方案与技术实践

2026/8/14 23:43:06

引言:云端AI助手的便利与隐忧 Copilot的普及与价值:简述GitHub Copilot等云端AI编程助手如何改变开发者的工作流。“换成本地”的需求背景: 数据安全与隐私顾虑:企业敏感代码、个人项目不愿上传至云端。网络与延迟问题&#xff1a…

Awoo Installer:Nintendo Switch游戏安装终极指南

Awoo Installer:Nintendo Switch游戏安装终极指南

2026/8/14 23:43:06

Awoo Installer:Nintendo Switch游戏安装终极指南 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer Awoo Installer 是一款专为Nintendo …

DNS解析MX记录设置步骤和注意事项

DNS解析MX记录设置步骤和注意事项

2026/8/14 23:43:06

企业邮箱能否正常收发邮件,取决于域名系统中MX记录的配置是否正确。不少企业购买邮箱服务之后,因为MX记录设置出错,出现邮件收不到或发不出的情况,影响业务沟通。下面国科云将详细介绍MX记录的基本概念、配置步骤、优先级规则以及…

小龙虾免配置版直接使用引导,TopClaw解压即用三分钟享全部技能

小龙虾免配置版直接使用引导,TopClaw解压即用三分钟享全部技能

2026/8/14 23:43:06

说实话,我见过太多人因为“配置”这两个字,把一个好用的工具硬生生劝退了。明明是个挺方便的玩意儿,结果一看下载页面的教程,密密麻麻写了一大堆环境变量、路径设置、依赖安装,瞬间就没了折腾的心思。我以前也帮朋友远…

聚焦 AI 数据治理与可观测,AWS 中国峰会有哪些 Data for AI 技术内容可看?

聚焦 AI 数据治理与可观测,AWS 中国峰会有哪些 Data for AI 技术内容可看?

2026/8/14 23:33:06

数据团队想了解 Data for AI,AWS峰会有哪些内容可以看?五类演讲补齐数据、成本与生产治理针对数据工程、数据平台、BI分析、知识管理、AI运营团队的Data for AI体系搭建需求,2026亚马逊云科技中国峰会分论坛3:Data for AI是核心学…

比较好的亚太EMBA,问了6位校友师资差别真的挺大

比较好的亚太EMBA,问了6位校友师资差别真的挺大

2026/8/13 11:01:28

比较好的亚太EMBA核心差异先看什么?对于希望兼顾工作与系统管理能力提升的亚太区高管而言,筛选匹配度高的EMBA项目时,师资配置是决定学习体验与实际收获的核心要素之一。我们结合3-4个公开信息透明、办学历史较长的亚太区主流EMBA项目特点&am…

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

2026/8/14 10:48:24

备考海外游学的亚洲EMBA面试,核心要围绕项目国际化设计逻辑、个人跨文化管理经验匹配度两个维度准备,避免把游学模块等同于普通旅游参访的认知偏差。不少备考者花3个月对比6份资料,却容易忽略面试官对“国际视野落地能力”的考察——比如香港…

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA,问了二十位校友聊透人脉价值

2026/8/13 17:17:06

比较好的国内EMBA核心差异体现在哪些方面?比较好的国内EMBA的核心长期价值,很大程度上依托于校友网络的连接质量与资源生态的活跃度,这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息,从课程、师…

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

2026/8/14 0:01:53

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

2026/8/14 0:01:54

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

2026/8/14 0:01:54

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/8 5:07:31

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/9 13:42:46

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/14 19:35:14

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…