经常有客户问,使用你们的实时数据库,该如何计算存贮一年历史数据所需要的磁盘空间?
让我们以一个具体例子进行说明吧:一个项目中,总共有1万个模拟量测点,这些测点平均每秒变化一次,每次变化均要保存,存贮一年历史数据,需要多少磁盘空间?
为了很好地说明这个问题,我们先来分析一下,如果采用关系数据库来保存这些历史数据,需要多少磁盘空间。假定关系数据库采用一个表来保存历史数据,表的格式定义如下:
字段名 |
类型 |
长度 |
备注 |
TagID |
整型 |
4字节 |
测点编号,1万个测点只需2字节整型,但考虑到最大保存测点可能超过65536,因此,定义为4字节整型 |
Second |
整型 |
4字节 |
秒 |
MillSecond |
短整型 |
2字节 |
毫秒 |
Quality |
字节 |
1字节 |
质量戳 |
Value |
双精度数 |
8字节 |
值 |
关系数据库中,计算历史数据应考虑如下几个方面的因素:
l 管理文件
l 表格式描述头
l 数据
l 索引
其中,管理文件及表格式描述头可以忽略不计,只需要考虑数据和索引即可。另外,在此也不考虑日志文件的大小。
假定关系数据库中不对数据进行任何压缩,采用定时保存,则数据容量的计算公式如下所示:
数据容量=单条历史数据的尺寸*秒数*分钟数*小时数*天数*测点数
所以,数据容量=(4+4+2+1+8)*60*60*24*365*10000=5580G
假定对该表中的TagID、Second和MillSecond建立唯一索引,同时假定关系数据库的索引结构为B+树索引,一般的B+树的利用效率在40%左右,因此,索引大小的计算公式如下所示:
索引容量=单条索引的尺寸*秒数*分钟数*小时数*天数*测点数/0.4
所以,索引容量=(4+4+2)*60*60*24*365*10000/0.4=7342G
因此,用关系数据库保存10000个每秒钟变化一次的双精度数,同时建立一个索引,需要磁盘空间为:12922G。
下面,我们再来计算一下实时数据库的历史数据容量的计算方法。
首先要说明,不同的实时数据库对历史数据采用了不同的存贮方法,因此,计算方法也各不相同,在此,仅以我们自己的实时数据库为例,进行计算。
首先需要介绍一下我们的实时数据库的特点:
l 历史数据按时间段分为多个文件保存,每个文件保存一段时间内的历史数据,保存一年的历史数据大概需要60个文件;
l 每段时间内的数据和索引保存在同一个文件内;
l 测点的ID与其它数据在文件内分开保存。
针对我们的实时数据库,计算历史数据应考虑如下几个方面的因素:
l 管理文件
l 文件头
l 数据
l 索引
其中,管理文件的大小大概为100K左右,可以忽略。
文件头大小=单个文件头大小*所有历史数据文件头大小=512K*60=0.03G,也可以忽略
在完全不压缩的情况下,数据容量的计算公式为:
不压缩数据容量=单条历史数据的尺寸*秒数*分钟数*小时数*天数*测点数
其中,单条历史数据的尺寸已经过紧密化处理,只占14字节,所以,数据容量=14*60*60*24*365*10000=4111G
我们的实时数据库采用了特殊的索引机制,不需要对每条数据进行索引,平均200条数据才需要记录一次索引,在完全不压缩的情况下,索引容量的计算方法为:
不压缩索引容量=单条索引的尺寸*秒数*分钟数*小时数*天数*测点数/200
所以,索引容量=10*60*60*24*365*10000/200=15G
最后,再考虑压缩率。采用不同的压缩算法会有不同的压缩比,另外,还与压缩率有关,这个没有统一的计算公式。但是,在工程现场,一般而言,采用哈佛曼算法的压缩比为15:1左右,采用变化压缩算法的压缩比为20:1左右,采用旋转门算法的压缩比为30:1左右。如果再加上一些特殊的技术(如二次压缩技术,质量戳与数据值分开保存等),压缩比可以达到40:1左右。我们就按40:1进行计算
压缩后总容量=(不压缩数据容量+不压缩索引容量)/压缩比
所以,以上例子中,实时数据库历史数据总容量=(4111+15)/40=103G
注意,以上计算只考虑了双精度数测点,如果系统中还有开关量、字符串、单精度数,其中,开关量的变化可能非常缓慢,这些没有准确的计算公式,可以近似地处理为,将以上结果再除以4。
最后,给出一个在我们的实时数据库中,大致计算历史数据容量的公式:
历史数据容量=年数*万点数*25/平均变化一次的秒数
相关推荐
分布式计算和存储技术的引入为实时数据库带来了新的发展机遇,使应用系统可以基于大容量实时历史数据之上的分析应用提供便捷、稳定的数据支撑,从而实现了数据的高效利用和实时处理。这种技术的演进对实时数据库领域...
1. 分布式的实时数据采集、存储和管理,能够处理大量的实时数据点,并支持远程查询实时数据和历史数据。 2. 趋势分析和事故追忆,提供可视化工具来分析数据并重现事故情况。 3. 流程组态和动态报表生成,采用面向...
本文将深入探讨“数据库备份还原”的概念、重要性、常见方法以及源代码实现。 首先,数据库备份是保护数据免受意外丢失或损坏的关键步骤。这可能包括硬件故障、软件错误、人为误操作、病毒攻击或者自然灾害等不可...
- **自学习机制**:引入自学习机制,根据历史数据和实时监控信息自动优化缓存参数,进一步提升缓存效率。 以上是从边缘计算数据库优化的角度出发,总结了关于数据库架构优化、数据存储策略选择以及缓存机制设计的...
1. 离线计算:进行历史数据分析,包括多维度数据挖掘、故障分析、生成时间轴、知识库生成、报表展示、问题回溯和热点分析,并且训练数据库健康风险模型和使用机器学习,规则自我优化。 2. 实时计算:实现秒级监控、...
1.2. 数据库技术历史:数据库技术的历史可以追溯到上世纪60年代,从早期的层次型和网状型数据库,到后来的关系型数据库模型的兴起,再到现在的云数据库、大数据存储和实时分析技术的出现。每个阶段的技术进步都伴随...
内存数据库系统是一种实时系统和数据库系统的有机结合,基于全部数据都在内存中重新设计了体系结构。 数据库技术的应用领域非常广泛,包括航空、铁路、旅游订票系统、银行通存通兑系统、水陆空联运系统、跨国公司...
在煤矿企业中,数据管理尤为重要,包括实时监测、安全生产信息记录和历史数据分析等,Oracle数据库提供了解决这些问题的有效方案。 1. **表空间的规划和使用**: - **表空间的概念**:Oracle数据库引入了表空间的...
总结,全国计算机等级考试三级数据库技术旨在检验考生对计算机基础知识和数据库技术的全面理解,包括计算机历史、数据库理论、设计实践和安全管理等多个层面。备考过程中,考生需要扎实掌握每个章节的知识点,并通过...
2. 实时计算引擎:利用分布式计算框架和缓存数据库实现实时数据处理,有效挖掘运维数据的价值。同时,运用人工智能技术进行数据挖掘,为智能运维提供强大的分析能力。 3. 智能算法库:集成多种AI算法库,如Sklearn...
美团点评可能运用了数据分析和预测模型,结合历史数据增长趋势,预估未来数据库的存储和计算需求,从而提前做好硬件升级或云资源扩展的准备。 此外,美团点评还可能在数据库架构上进行了创新,比如引入分布式数据库...
- 收集历史数据,如磁盘读写速率、CPU利用率等,用于评估现有服务器的性能表现。 2. **业务需求分析**: - 与管理层沟通,明确业务目标、预期增长速度、预算限制等关键信息。 3. **技术需求分析**: - 明确技术...
- **数据存储**:包括短期存储(如内存缓存)和长期存档(如数据库),以便后续分析或保留历史数据。 - **数据可视化**:利用仪表盘或流式可视化工具实时展示数据流,帮助用户监控和分析数据。 ### 缓冲区的动态...
3. **日志备份**:针对事务日志进行的备份,记录了数据库中所有事务的历史。如果希望进行到某个时间点的恢复,日志备份是必不可少的。 数据库恢复则基于备份策略来还原数据。SQL Server 2000支持多种恢复模型,如...
根据这些数据,计算得出数据库服务器的存储容量约为157GB。 最后,接口服务器的性能也需要考虑,这里涉及的参数有并发用户数、用户忙时集中系数、数据库事物操作数等,计算后得出相应的tpmC值和存储需求。 综上所...
**解析:** 首先计算所需芯片的总数来满足64KB的容量需求。64KB/4KB=16个芯片。接着考虑位宽的需求,由于目标是16位宽而现有芯片只有4位宽,所以每组需要4个芯片才能达到16位宽。因此,总共需要的芯片数为16*4=64个。...
OPC基金会已经发布了多个OPC规范,包括数据存取规范、数据交换规范、历史数据存取规范、报警和事件规范、批处理规范、安全规范、XML数据存取规范等,这些规范促进了过程控制软硬件配置的标准化、分布性、开放性和...
通过与技术人员交谈,可以获取服务器环境、网络拓扑、事务处理量、历史基线数据、增长率和存储需求等信息。同时,通过监控现有的数据库服务器,如记录磁盘读写速度、CPU利用率、网络利用率、内存使用情况和数据库...
在实施容量规划时,通常会使用一些工具和技术,比如性能监控工具来收集系统运行时的数据,然后通过历史数据分析出系统的使用模式和瓶颈。此外,也会进行压力测试,模拟高负载情况,以验证系统的稳定性和可扩展性。...