`

实时数据库历史数据容量的计算方法

阅读更多

经常有客户问,使用你们的实时数据库,该如何计算存贮一年历史数据所需要的磁盘空间?

 

让我们以一个具体例子进行说明吧:一个项目中,总共有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

 

假定对该表中的TagIDSecondMillSecond建立唯一索引,同时假定关系数据库的索引结构为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/平均变化一次的秒数

分享到:
评论

相关推荐

    实时数据库与关系数据库的混合使用.docx

    该项目使用实时数据库是非常合适的,理由不再多说,请参见我的文章《实时数据库简介》、《实时数据库历史数据容量的计算方法》以及《实时数据库与组态软件的市场定位之异同》。 实时数据库与关系数据库的混合使用...

    数据库系统的核心简介.doc

    从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。 数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。 (1)物理数据层。 它是数据库的最内层,是物理存贮设备上实际存储的...

    Oracle数据库中大型表查询优化研究

    摘 要:对海量数据进行访问...测试方法为:根据用户的查询要求计算得到用户需要浏览的数据记录的起止位置,然后在SQL语句中加入此位置,执行SQL语句,查询该数据表,得到用户想要浏览的记录集合。使 用的SQL语句如下:

    数据仓库的概念及特点

    第二,业务数据往往被存放于分散的异构环境中,不易统一查询访问,而且还有大量的历史数据处于脱机状态,形同虚设;第三,业务数据的模式是针对事务处理系统而设计的,数据的格式和描述方式并不适合非计算机专业人员...

    数据库系统设计(1).doc

    二、数据库信息要求和关系数据模型 E—R图 关系数据模型: 本系统包括6张表:教师基本信息表、教师论文情况表、教师奖惩历史表、课程信息表、 教师授课信息表、用户账号表。下面分别对这些表的结构进行具体介绍。 ...

    奢侈品牌管理数据库系统DOC.doc

    三、数据库系统设计 主要数据项和数据结构如下: (1)奢侈品牌历史信息表:它的主要功能在于记录奢侈品牌历史等信息。 (2)奢侈品牌基本信息表:它的主要功能是管理奢侈品品牌基本信息。 (3)奢侈品牌分类表:它...

    数据库教学管理系统系统设计.doc

    二、数据库信息要求和关系数据模型 E—R图 关系数据模型: 本系统包括6张表:教师基本信息表、教师论文情况表、教师奖惩历史表、课程信息表、 教师授课信息表、用户账号表。下面分别对这些表的结构进行具体介绍。 ...

    奢侈品牌管理数据库系统DOC.doc.doc

    三、数据库系统设计 主要数据项和数据结构如下: (1)奢侈品牌历史信息表:它的主要功能在于记录奢侈品牌历史等信息。 (2)奢侈品牌基本信息表:它的主要功能是管理奢侈品品牌基本信息。 (3)奢侈品牌分类表:它...

    订货管理系统数据库设计.doc

    用户查询其购买历史:事后用户应能方便的查看其历史订单及明细数据。 5. 系统对于已经有的订单,如信息完整正确,系统通知相关的发货部门进行发货, 并提供给其相应的单据。 6. 系统对于订单状态能进行跟踪,用户填...

    数据库餐饮管理系统课程设计.doc

    目录 第一章 前言 2 1.1开发背景 2 1.2开发工具 2 1.3开发目标 2 第二章 需求分析 3 第三章 总体设计 4 3.1系统功能结构 4 3.2程序流程图 5 第四章 数据库设计 6 4.1概念结构设计 6 4.2逻辑结构设计 8 4.3物理结构...

    数据库餐饮管理系统课程设计报告书.doc

    目录 第一章 前言 2 1.1开发背景 2 1.2开发工具 2 1.3开发目标 2 第二章 需求分析 3 第三章 总体设计 4 3.1系统功能结构 4 3.2程序流程图 5 第四章 数据库设计 6 4.1概念结构设计 6 4.2逻辑结构设计 8 4.3物理结构...

    数据库餐饮管理系统课程设计(2).doc

    3、对用户输入的数据进行严格的检验,尽可能的避免人为错误。 4、实现对消费账目自动结算。 5、实现对消费的历史记录进行查询,支持模糊查询。 6、系统应尽大限度的实现易维护性和易于操作性。 7、界面尽可能美观大方...

    力控V7.1 V7.2 自定义报表和变量重定向测试范例20190907OK.rar

    自定义报表工艺:两个任意历史时刻产量、生产效率统计、计算、任意位置、格式显示在Excel上、可打印或保存查询的报表!... 自带10年容量历史数据库、自带函数方法众多、傻瓜调用,最关键是有完美补丁免费啊!

    C#程序开发范例宝典(第2版).part13

    实例063 将数据库数据添加到ListBox控件中 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件...

    C#程序开发范例宝典(第2版).part08

    实例063 将数据库数据添加到ListBox控件中 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件...

    C#程序开发范例宝典(第2版).part02

    实例063 将数据库数据添加到ListBox控件中 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件...

Global site tag (gtag.js) - Google Analytics