简介:数据处理和存储系统建设方案是面向智能化管控平台的技术规划类文档,适用于化工园区相关主管部门、系统集成工程师及方案规划人员,解决计算、存储、网络带宽等资源的量化测算与软硬件选型问题。文档从系统结构和用户构成切入,以300个用户规模及3至5年扩展需求为前提,演示数据库服务器TPC-C峰值能力、CPU总核数以及3台分布式服务器的推算过程;同时梳理系统数据、业务数据和非结构化数据增量,建议按三年8.1TB容量规划存储;还分析平台用户、物联网感知和视频监控三类传输需求,据此估算企业接入带宽。压缩包内为1个doc文档,约183KB,目录覆盖系统结构、数据计算、数据存储、数据传输和软硬件设备选型等章节,并附设备配置表。已有222人学习下载,可作为园区智能管控平台建设、立项报告或采购技术要求中的测算模板与选型依据。
1. 数据处理和存储系统建设方案:先算清三笔账再买设备
做政企项目最怕的不是设备参数选低了,而是方案里的数字自己对不上。评审专家翻两页就会发现:前一张表算出来是 5760,后一段写需求是 11798,最后又是一句 396 核——三个数谁都没错,但口径对不上,整份方案的严谨性就崩了。这份《10数据处理和存储系统建设方案》是围绕化工园区智能化管控平台做的容量规划,用户规模 300,分化工企业、政府园区职能部门、互联网公众三类,资源估算覆盖 3-5 年。真正核心的只有三笔账:数据库服务器的 TPC-C 运算量、存储容量年增量、网络传输带宽。适合正在写可研报告、技术方案和招投标文件的一线从业者照着拆、照着算。
2. 从用户构成到 TPC-C 参数:300 个用户的负载怎么拆
2.1 三类用户对应三套业务系统,并发模型完全不同
方案把 300 个用户分成三类,但真正决定算力需求的是“在线并发”,不是“注册总量”。同一套平台里,化工企业用户做数据报送,政府园区职能用户盯驾驶舱和审批,互联网公众用户刷门户和小程序,这三类人的操作频率、事务类型、会话时长完全不一样。
我一般拿到这类项目,先画一张用户行为表:
| 用户类别 | 典型行为 | 负载特征 |
|---|---|---|
| 化工企业用户 | 产业数据填报、文件上传 | 批量、定时、数据量大 |
| 政府园区职能用户 | 数字驾驶舱、协同审批 | 查询多、并发集中、长会话 |
| 互联网公众用户 | 门户浏览、小程序访问 | 请求多、单请求轻、峰值难预测 |
在线用户数和注册用户数之间要乘一个并发系数。方案里 300 注册用户,应用系统取 50 在线、门户小程序取 50 在线、IOC 指挥中心取 20 在线,合计并发 120 左右,在线率约 40%。这个比例对政企内网系统偏低,对公众访问偏高,属于经验值,写方案时要标注清楚“在线率按 40% 估算”这个假设,否则评审会问。
2.2 TPC-C 七个参数:在线用户、操作次数、事务数怎么取值
TPC-C 是 TPC 委员会发布的事务处理基准,用来估算数据库服务器的峰值处理能力。这套测算方法在政企数据库选型里用了很多年,核心是七个参数:
U1 同时在线用户数,N1 每个在线用户每分钟发起的操作请求数,T1 平均每次更新操作产生的事务数,T2 平均每次查询操作产生的事务数,T3 平均每次分析操作产生的事务数,T4 平均每次其它操作产生的事务数,再叠加忙时倍数、经验系数和冗余系数。
方案原文对三个业务系统给出的在线数和操作次数是:
| 业务系统 | U1 在线用户数 | N1 每分钟操作次数 |
|---|---|---|
| 应用系统 | 50 | 8 |
| 门户、小程序等访问 | 50 | 32 |
| IOC 指挥中心 | 20 | 7 |
注意一个小细节:原文说“更新、查询、分析、其它各占 1/4”,这句话容易被误读成四个 T 值相等。不是。“各占 1/4”说的是操作请求按次数等分,但每类操作落到数据库里产生的事务个数不同,更新一条记录可能要写三张表,查询可能只读两张表,分析会更复杂。具体 T1-T4 必须在开发阶段做事务埋点统计,测算阶段用对称起步值就可以,后面再校准。
2.3 一个快速量级自检:先判断在线用户数是否合理
我拿到任何一套参数,先不做复杂计算,先做量级自检。300 个注册用户,并发 120,每个用户每分钟 8-32 次操作,得到每秒事务数大约在几十到几百这个量级——这个量级决定了后面服务器数量不会超过 5 台。如果算出来要二十台服务器,那肯定是参数某个地方高了一个数量级。
这套方案最终算出 3 台小型机级别的 x86 服务器,量级是对的。你看到“3 台”这个数字时,顺手就能回推:平均一台机器扛几百并发,单核处理 16 个事务,完全是通用服务器的合理区间。
3. 数据库服务器测算:从 5760tpmC 到 396 核的完整换算
3.1 TPC-C 公式逐项拆解,忙时倍数和冗余系数别混
方案给出的标准公式是:
TPC-C = U1 × N1 / 60 × (T1 + T2 + T3 + T4) / 4 × 8 × 1.6 / (1 - 0.3)
逐项拆开看:U1 × N1 是所有在线用户一分钟内的操作请求总数,除以 60 变成每秒请求数。四个 T 值相加再除以 4,是把四类操作的事务数取平均。乘 8 代表一天内的忙时处理量是平均值的 8 倍——这是政企系统最常见的峰值假设,早高峰审批加数据报送集中在这一小时。乘 1.6 是工程经验系数,用来吸收 SQL 执行计划偏差、索引缺失、锁等待这些说不清的因素。最后除以 (1-0.3),等于在结果上再留 30% 冗余给未来业务扩展。
注意:TPC-C 的正式单位是 tpmC,每分钟事务数,不是每秒。方案原表头写“每秒事务数”是抄录错误,但后面核数换算是按分钟口径走的,所以并不影响最终台数。
方案原文在这里有个经典翻车位:表格里三个系统合计是 5760,后面正文却写“根据以上公式测算,TPC-C 值为 11798tpc”。我把两个数对比了一下,5760 × 2.05 ≈ 11808,离 11798 很近。合理推断是 11798 把三年的业务增长预估成翻倍之后的值。思路没错,但同一份方案必须先说清楚到底用哪个口径,评审一定会抓这个点。
3.2 用脚本重算:三个业务系统合计核数与台数
手算容易把运算顺序搞乱,我建议直接把公式写成脚本,换参数重跑:
import math # 三个业务系统的峰值事务估算,单位 tpmC # 来源:方案原文参数表,应用系统 3657 + 门户/小程序 1143 + IOC 960 = 5760 total_tpmc = 5760 reserve = 1.1 # 数据库业务能力预留 10% per_core_tpmc = 16 # 单物理核心承载的业务 tpmC 估测值 cores_needed = total_tpmc * reserve / per_core_tpmc print(f"需求 CPU 核数: {cores_needed:.1f}") # 单台物理机可用 vCPU phys_cores = 96 hypervisor_reserve = 2 # 宿主机操作系统和虚拟化层损耗 overcommit = 2 # CPU 超卖比 per_server = (phys_cores - hypervisor_reserve) * overcommit servers = math.ceil(cores_needed / per_server) print(f"单台可用 vCPU: {per_server}") print(f"所需服务器台数: {servers}")输出结果是 396 核、单台 188 vCPU、需要 3 台。这段脚本把“业务事务量 → CPU 核数 → 服务器台数”两段换算一次跑完。几个参数要解释清楚:reserve 取 1.1 表示给数据库未来几年轻量扩展留 10% 的能力;per_core_tpmc 取 16 是常规服务器单核承载业务事务的估测值,这个值不是硬件标称性能,而是综合了数据库软件效率后的经验数,OLTP 系统就这么估;overcommit 取 2 是虚拟化超卖比,OLTP 系统不建议超过 2,超到 3 以上峰值时 CPU 排队会很严重。
方案原文写“11798/16*1.1=396 核”,这个算式本身是错的。11798 除以 16 再乘 1.1 得 811,不是 396。按 5760 × 1.1 ÷ 16 才是 396。这也解释了为什么这份文档会被评审质疑——公式和最终数字对不上。做方案时,公式、中间结果、最终结论必须能互相回代。
3.3 分布式数据库集群:3 台服务器各自承担什么角色
3 台数据库服务器做分布式集群,这个数量级对 5760tpmC 的负载是匹配的。方案里的分工是:2 台做时序、BI 数据仓库服务器,1 台做数据库服务器,另外还有 1 台 48 核的备份服务器。
这里涉及数据处理框架选型的一个原则:如果不是 PB 级数据,不要一上来就上大规模分布式组件。园区管控平台的数据量在 TB 级,3 节点集群加分布式中间件足够。时序类数据走列式存储或时序引擎,BI 数据分析走独立的数据仓库节点,OLTP 事务走单独节点,三个角色分开,避免分析查询拖垮事务响应。备份服务器单独配,不参与业务读写,这样备份任务不会和白天业务抢 IO。
| 服务器 | CPU | 内存 | 系统盘 | 数据盘 | 数量 | 用途 |
|---|---|---|---|---|---|---|
| 数据仓库/时序节点 | 32 核 | 64G | 40G | 1T | 2 | 时序数据、BI 分析 |
| 数据库主节点 | 32 核 | 64G | 40G | 1T | 1 | 核心业务事务 |
| 备份服务器 | 48 核 | 40G | 40G | 3T | 1 | 全量/增量备份 |
这组配置里,备份服务器数据盘 3T 明显偏小,后面避坑章节会细说。数据仓库节点内存偏小也是常被忽略的点,BI 分析主要吃内存,64G 跑中规模数据仓库只能说勉强,至少再加一倍才宽松。
4. 存储容量与带宽:2.7TB 年增量和 1920M 视频流怎么算
4.1 按保留周期折算存储:原始、过程、应用、结果四类数据分开算
存储测算最容易犯的错是把“年新增量”直接当成“需要买的容量”。真实存储占用要看数据保留周期。方案把业务数据分成四层:原始数据暂存、过程数据保留 1 天、应用数据保存半年、结果数据永久保存。
我通常按保留周期写一个折算脚本,把稳态占用跑出来:
# 50 家企业,每企每天上报 100MB 产业数据 enterprises = 50 daily_mb_per_enterprise = 100 # 数据分层保留策略:保留天数,-1 表示永久保留 policy = { "原始数据": {"retention_days": 30}, "过程数据": {"retention_days": 1}, "应用数据": {"retention_days": 180}, "结果数据": {"retention_days": -1}, # 永久 } daily_gb = enterprises * daily_mb_per_enterprise / 1024 print(f"每日采集量: {daily_gb:.2f} GB") total_gb = 0 for layer, cfg in policy.items(): days = cfg["retention_days"] if days == -1: days = 365 * 5 # 按 5 年规划窗口计算 layer_gb = daily_gb * days total_gb += layer_gb print(f"{layer}: 保留 {cfg['retention_days']} 天 -> 稳态占用 {layer_gb:.1f} GB") print(f"合计稳态占用: {total_gb / 1024:.2f} TB")输出结果:每日采集约 4.88GB,原始数据 30 天占 146GB,过程数据只占 4.9GB,应用数据半年占 879GB,结果数据按 5 年窗口算约 8.9TB。这个数字一出来,问题就很明显了。
方案原文写“每家企业每天采集 100MB,每年产生工业企业报送数据约 10GB”——这是错的。50 家 × 100MB × 365 天 ≈ 1.8TB/年,不是 10GB。差了两个数量级。如果按照错误值去配存储,3 年 8.1TB 的规划会严重不足。存储方案里,上游采集链路通常是流式数据处理框架,写入频率稳定,一旦保留策略改变,比如结果数据从永久改成 3 年,容量需求立刻变化,所以测算脚本里的保留天数必须和业务约定对齐。
4.2 系统数据和非结构化数据:容易被漏掉的那部分
系统数据每年 500M,包括操作系统安装文件、分布式管理软件、虚拟化管理软件、程序文件、日志、配置信息。这个量级不大,但有一个坑:日志文件不设轮转策略的话,半年就能把系统盘挤爆。
非结构化及备份数据按每年 2TB 估算,这部分才是大头。视频截图、上报附件、临时导出文件都算。备份数据严格说不是“产生”的数据,是“复制”的数据,但它真实占用存储。方案里“业务数据 2.7TB/年,三年 8.1TB”这个口径,是把 1.8TB/年的企业数据和 2TB/年的非结构化数据加总后约等于 3.8TB/年,三年约 11TB,8.1TB 明显留少了。如果按原文的 10GB 企业数据口径,2+0.01 又凑不出 2.7。反正这个数对不上。
4.3 带宽三重叠加:用户并发、物联感知、1080P 视频
带宽计算有三路:平台用户并发数据、物联网前端感知数据、视频监控数据。方案里的算法是可靠的,但有一个顺序问题:必须先算总需求,再拆到单企业。
平台用户:按 100 个用户同时在线,每个用户 30Kbps,约 3Mbps。物联网前端感知设备总计 20-30Mbps,按 30Mbps 算。视频监控是大头:1080P 分辨率 4Mbps 码流,每路监控考虑封装开销和冗余按 6Mbps 计,每企业 8 路,共 320 路,需要 1920Mbps。
| 带宽来源 | 计算口径 | 需求 |
|---|---|---|
| 用户并发 | 100 用户 × 30Kbps | 3Mbps |
| 物联感知 | 前端设备汇总 | 30Mbps |
| 视频监控 | 320 路 × 6Mbps | 1920Mbps |
| 单企业接入 | 8 路视频 + 办公 + 冗余 | 100Mbps |
单企业 8 路视频固定占 48Mbps,加办公和物联分摊约 60-70Mbps,线路冗余留 30%,给 100M 是合理设计。但这里要留意:视频流量是持续恒定流量,带宽利用率高,必须给监控单独划 VLAN,避免和企业办公流量互相挤占。核心交换机上联按 1920M 视频流 + 30M 物联 + 4M 用户并发算,至少 2Gbps,推荐万兆上联并跑链路聚合,不然高峰期视频回放直接卡死。
5. 常见问题与避坑:TPC-C 单位、存储口径、磁盘容量的五个坑
5.1 单位混乱:tpmC 被写成“每秒事务数”,5760 和 11798 对不上
现象:方案前面表格合计 5760,后面正文写“TPC-C 值为 11798tpc”,表头还把单位写成“每秒事务数”。三个系统分别算出来 3657、1143、960,加总 5760,这个数本身能对上表内参数。11798 无法从前文任何参数表直接验算出来。
原因:TPC-C 标准单位是 tpmC(每分钟事务数),但不少方案作者习惯写成 TPC-C 值,抄录过程中把“每分钟”丢成“每秒”,一个数量级就差了 60 倍。11798 推测是 5760 乘了未来三年业务增长系数,但这个系数没有在公式里声明。
解决:写方案时必须明确“本方案 TPC-C 值均按每分钟事务数 tpmC 计算”。凡出现两个口径不同的数值,要么删掉多余的,要么显式写明白“5760 为当期业务峰值,11798 为三年后规划值”。评审最反感就是数字对不上。
5.2 运算顺序错误:11798/16×1.1 不等于 396 核
现象:原文“服务器所需资源总量 = 11798/16×1.1 = 396 核”。手算一遍:11798 ÷ 16 = 737.4,再乘以 1.1 是 811 核,不是 396。
原因:公式抄写时把乘除顺序写反了。正确换算逻辑是“需求核数 = 业务 tpmC × 预留系数 ÷ 单核承载能力”,即 5760 × 1.1 ÷ 16 = 396 核。原作者想表达的意思是对的,但算式排错后,懂行的人一眼就能看出方案没有经过复核。
解决:所有容量公式建议用脚本跑,不要手算。脚本里把“业务量、预留、单核能力、单机可用核数、台数”五个变量分开定义,改哪个参数都重跑一遍,输出和结论互相印证。
5.3 存储年增量差了两个数量级:100MB/天 × 50 家算不出 10GB/年
现象:方案写“50 家企业,每家企业每日采集 100MB 产业数据,每年产生工业企业报送数据约 10GB”。按这个口径重算:50 × 100MB × 365 = 1.825TB/年,不是 10GB。
原因:把“每日采集量”和“每年归档量”混在一起算了。100MB/天是原始采集速率,10GB/年可能是只算了“结果数据”里需要永久保留的部分,原始和过程数据被漏掉了。
解决:存储测算必须分四步:日采集速率 → 分层保留策略 → 稳态在线占用 → 备份副本数。先用脚本把稳态占用跑出来,再谈买多少盘。数据清洗和预处理节点在中间起到分层作用,但存储容量不会因为清洗而消失,原始数据在清洗前仍然占空间。
5.4 40G 系统盘是给自己留的后悔药
现象:服务器配置表里,系统盘统一 40G,装 Ubuntu Server 20.04。运行半年后,Docker 镜像、日志文件、系统更新包把根分区撑到 95%,数据库节点直接宕机。
原因:40G 只够一个纯净操作系统。Linux 系统盘实际占用约 10G,剩余 30G 会被 /var/log、容器镜像层、临时文件快速吃掉。日志轮转没配好的话,一个业务接口的异常打印就能把盘写满。
解决:系统盘至少 100G,有条件直接给 200G SSD。数据盘必须独立挂载,和数据目录分开。和客户聊配置时,把“系统盘 200G + 数据盘按容量测算”写进清单,多几百块预算换掉一次半夜宕机,这笔账是划算的。
5.5 备份服务器容量按三年全量配,结果一次全备都放不下
现象:备份服务器数据盘 3T,业务数据规划三年 8.1TB。备份策略按每周全备、每日增量,3T 连一份全量备份加两个增量都放不下。
原因:备份容量不是“业务数据容量×1”,要考虑备份副本保留份数、增量版本链、压缩率。政企项目通常要求保留至少两份副本,一份本地一份异地带库。按 8.1TB 业务数据算,本地备份至少需要 8.1TB × 2(两份时间点)× 0.7(压缩后)≈ 11.3TB,3T 差了快四倍。
解决:备份盘容量按“业务总量 × 副本份数 ÷ 压缩率 + 30% 余量”配置。3T 盘要么扩到 12T 做 RAID,要么明确只放增量备份、全量走磁带库。我见过太多项目投产半年后备份任务天天告警,最后数据坏了找不到可用的备份副本——这种血泪经验写方案时一定要提前堵住。
6. 落地校验:把三笔账翻译成可招标的配置清单
6.1 四列自查清单
方案到这一步,应该输出一张能直接发给集成商询价的配置清单。校验时我用四列自查:计算域、关键参数、单位、量级是否合理。
| 计算域 | 关键参数 | 单位 | 量级校验 |
|---|---|---|---|
| CPU 核数 | 业务总 tpmC、单核承载、超卖比 | tpmC、核、vCPU | 核数 × 单核能力 × 台数 ≥ 需求 tpmC × 预留 |
| 内存 | 峰值并发会话、数据仓库工作集 | GB | OLTP 按每核 2G 起步,BI 节点酌情加 |
| 存储容量 | 日采集量、保留天数、副本份数 | GB/TB | 稳态占用 + 备份副本 ≤ 可用容量的 70% |
| 网络带宽 | 视频路数、码流、并发用户速率 | Mbps | 视频带宽占接入线路 ≤ 60%,均值而非峰值 |
| 系统盘 | OS、日志、容器层 | GB | 最低 100G,推荐 200G SSD |
这套清单的核验逻辑是“回代”:把最终配置的核数、容量、带宽代回原始需求公式,看能不能反推出最初那些 396、8.1TB、1920M 的数字。能推出来,方案就站得住;推不出来,就回去改。
6.2 三分钟量级校验法
我习惯在交付前做一次快速量级校验,只问三个数:
第一,单台数据库服务器扛多少 tpmC。三台服务器扛 5760tpmC,平均一台 1920tpmC,单核 16tpmC,这是通用服务器的正常区间。如果算出单台要扛几万 tpmC,别急着加机器,先回头查并发用户数和事务数是不是高了一个数量级。
第二,年增存储和购买容量的比例关系。年增 3.8TB,买 8.1TB,扣掉 RAID 损耗和备份副本只够一年半。存储采购永远是“在线容量 + 备份容量 + 三年增长”,不是简单拿年增量乘三。
第三,视频带宽占单企业接入线路的比例。单企业 8 路视频 48Mbps,100M 线路利用率 48%,加办公流量 20%,还有 30% 余量,这个设计才说得过去。如果利用率超过 70%,视频卡顿投诉是早晚的事。
从那以后,我每次拿到容量方案,都强制自己先做一遍单位归一化和量级回代:tpmC、TB/年、Mbps 三列数全部列出来,用脚本重算一遍,对不上就先标红再往下看设备选型。这套自查流程帮我挡掉了至少三次评审现场的翻车。希望帮到你。
本文还有配套的精品资源,点击获取