经常有人问,对于实时数据库,该如何计算存贮一年历史数据所需要的磁盘空间?

让我们以一个具体例子进行说明吧:一个项目中,总共有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/平均变化一次的秒数

---------------->就存储来说:RTDB是DB 的 1/100



------------------------------------------------------------------------------------------------------------------------------------

转自前辈的技术文章,深表感谢,http://blog.csdn.net/happypolo/article/details/6449332

------------------------------------------------------------------------------------------------------------------------------------

实时数据库历史数据容量的计算方法相关推荐

  1. 计算机机房ups供电时间多少,弱电机房UPS电源的选择及电池容量的计算方法

    UPS,即不间断电源,是将蓄电池(多为铅酸免维护蓄电池)与主机相连接,通过主机逆变器等模块电路将直流电转换成市电的系统设备. 主要用于给单台计算机.计算机网络系统或其它电力电子设备如电磁阀.压力变送器 ...

  2. SDRAM容量的计算方法

    当我在看有关SDRAM的芯片手册的时候,我一直在想这样一个问题:SDRAM的容量它究竟是如何计算的呢?经过查找网上的各种资料,最后在这里给大伙分享一下我的总结! 就以我的开发板的SDRAM的芯片手册的 ...

  3. 实时数据库领域中有关数据压缩的认识误区

    2007年10月28日晚上,我挖了一个坑,那篇"关于实时数据库接口标准的讨论",只写了第一部分,到现在还没有填上.工作忙是一个原因,我只能利用晚上22:00至23:00这一段时间写 ...

  4. 【elasticsearch】 Elasticsearch集群规模和容量规划的底层逻辑

    1.概述 转载:https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484628&idx=1&sn=666e41 ...

  5. DDR5内存条容量计算

    DDR5内存条容量计算 一.理解DDR5通道的变化 二.理解芯片package 三.DDR5 symmetric module容量计算 之前对DDR的一些基础知识进行了总结.最近需要了解DDR5的知识 ...

  6. DDR4的内存计算方法

    DDR4的内存计算方法 刚转到存储这边,对于内存的计算很模糊,整理了一下网上的各种解释,有了自己的理解.记录下来,希望有帮助 ----------------------以下是网络上之前给出的解释-- ...

  7. 子网划分和计算方法(附习题详解)

    目录 一.子网划分 二.IP地址格式 三.IP地址的分类 四.计算网络号 五.子网数,主机容量和有效主机容量的计算方法 总结 一.子网划分 作用 1.计算网络号,通过网络号选择正确的网络设备连接终端设 ...

  8. WinImage 8.5版本制作任意容量的ima或img磁盘文件

    转载: https://blog.csdn.net/zm2714/article/details/7962794 本篇文章介绍WinImage 8.5版本制作任意容量的ima或img磁盘文件. 一.计 ...

  9. 500G硬盘的实际容量

    电脑硬盘500G存储空间,但实际上却小于500G,当标称容量越大,差异越大. 硬盘的数据存储单位 PB TB GB MB KB B(byte字节) 1024的换算方式:计算机存储的换算单位 1000的 ...

最新文章

  1. 张一鸣宣布卸任字节CEO!网友:完不成OKR被优化了!
  2. 『数据库』这篇数据库的文章真没人看--数据库完整性
  3. 如何对一个变量数据进行正则判定_生存分析数据中的BuckleyJamesMultipleRegression Model...
  4. 【BZOJ3143】游走,概率计算+高斯消元
  5. 删除了项目下的\WEB-INF\classes文件夹,在eclipse的tomcat部署启动时报错。
  6. 开发日记(01) - uni-app 使用等宽字体对齐数字宽度
  7. android实现登录页面视频播放背景
  8. Kettle中关于多数据库链接报表或视图不存在的错误总结
  9. 多校9 HDU-6164 Dying Light 几何数学
  10. 一元多项式计算器 (c语言数据结构实验)
  11. Java连接打印机打印二维码
  12. 推荐:(链接)幽默男女--绝对搞笑!!(每日更新)
  13. 【DDOS 防御小建议】
  14. 用户使用移动支付的风险与防范策略
  15. python画钟表代码_Python技能操作5:用代码做个能挂墙上的大钟表
  16. 有关程序的50个至理名言
  17. Statspack ORA-00001 unique constraint violated错误的解决
  18. opensearch 使用
  19. #内存泄露# linux常用内存相关命令
  20. '/',‘\\’与‘\’的区别

热门文章

  1. 杨绛先生70句金句,请珍藏
  2. 关于screenX、clientX、pageX, offsetX的相关介绍
  3. PM第1步:产品需求文档
  4. 绿皮书——iOS导出微信聊天记录,并用python制作词云
  5. Leco题目:回文数
  6. tree traversal (树的遍历) - inorder traversal (中序遍历)
  7. windows10突发explorer.exe“没有注册类”错误的解决方式
  8. xtu P1114 家谱
  9. m3u8索引文件介绍
  10. 对Git暂存区的理解