设为首页 收藏本站 English

当前位置: 裕能五金网 >> 最新文章

实时数据库的压缩率是怎么算出来的0纸杯成型机

发布时间:2022-07-07 11:40:32

实时数据库的压缩率是怎么算出来的?

实时数据库的压缩率是怎么算出来的? 2011年12月10日 来源: 各个实时数据库厂家,都会在自己产品的宣传手册或说明书中,标明自己的压缩率能达到多少多少,或是“10:1”或是“20:1”,这些数字是怎么算出来的呢?标准答案是:没法算出来。压缩率的表示方法“N:1”,隐含了两个概念:参照物和测试环境。也就是说,在某种测试环境下,保存同样的数据,实时数据库可以达到参照产品的1/N。这里的参照物有两种可能性,可以是压缩之前的原始数据,也可以是另一种典型的存贮系统,比如关系数据库。这里的测试环境,应该是某种人为约定的标准输入。关键的问题是,我们能找到一种能近似模拟工控设备数据源的标准输入吗?如果不能找到合适的测试数据,那些测试结果又有多大的价值呢?实时数据库应用在过程控制及相关行业,在这个领域中,数据具有如下特征:最常见的数据是模拟量,也有一部分开关量; 数据中只有一小部分值经常发生改变,很多开关量常期不变化; 数据的变化具有一定波形规律; 很多数值都具有慢变化的特征; 数值变化与时间变化具有共同变化特性; 用户在一定范围内,能够允许数据的精度损失; 我们能找到一组模拟以上特性的测试数据吗?聪明的观众肯定会自然地想到,可以用正弦曲线来模拟。只要测得针对正弦曲线的数据压缩率,就能定性(但不能定量)地判断出某实时数据库的大体数据压缩性能。可是,即便采用正弦曲线来模拟,还需要考虑很多其它因素。A、取样密度对于同一条正弦曲线,比如1分钟变化一个周波,如果取样密度不一样,所得到的取样点数是不一样的。如果每秒钟取一个点,可以取得60个点,如果每0.1秒取一个点,可以取得600个点,再极端一点,如果1毫秒取一个点,可以取得60000个点。我们假定可以用一些特征点来描述该曲线,则取样密度越大,数据冗余度越高,数据压缩率就越高。如果某实时数据库产品宣称自己的数据压缩率为1000:1,你也不要认为他在吹牛,他也许就是对以毫秒为单位取样的1分钟变化一个周波的数据进行压缩呢。B、数据精度保存一个双精度数比保存一个单精度数所需要的空间肯定要大。但在很多过程控制应用中,单精度数完全足够了。C、数据范围数据范围可能影响数据精度。C、数据失真率如果用户不允许任何失真,那就是无损压缩。但事实上,工控行业就是一个不可能完全不失真的行业(详见我的博文《关于变位压缩的讨论》)。聪明的观众看到这儿,肯定就会说,那好办,制定一个统一的标准,以1秒钟作为取样密度,取单精度数,以1分钟变化一个周波,数据范围为-100至100,失真率设为0.5%,将各个实时数据库产品都运行起来,看看各个实时数据库厂家的数据压缩率到底是一个什么样的值。这个方法确实可行,可是,会有一些实时数据库厂家站出来说,只有这些还不够,还要考虑以下因素:A、时间精度大家部实时数据库支持精确到毫秒,但部分厂家在这上面打起了节省空间的算盘,只精确到5毫秒,或只精确到100毫秒,并很严正地宣告,在常规实时数据库应用中,精确到毫秒完全没有意义。B、测点数有一些实时数据库对多个测点的数据压缩与对单个测点的数据压缩,效果是有区别的(这个地方我卖个关子,有谁能猜得出来吗?)C、测试时间大部分实时数据库为了减少磁盘读写时间,对磁盘空间都是预分配的,系统初始化后,就预先申请了一大块磁盘空间,你怎么测试它保存数据花了多少空间呢?聪明的观众会继续聪明地说,再加约束条件,所有的时间精确到1毫秒,统一测试1万点,统一运行一个月,现在总可以了吧。差不多了(还有一些其它因素,就不再罗列,否则有人会说我是唐僧),如果按照这个标准来测,呵呵,大家会发现,每一家实时数据库的测试结果都比他们的宣传要低几倍。但这些实时数据库厂家也有理由,这种测试本来就不能完全模拟工控现实情况呀,工控现场有开关量,有整型量,还有个别字符串量,还存在很多大部分时间不变化的量,这些因素,是要考虑进去呀。OK,这么多理由,那你告诉我你的数字怎么来的吧。他们会这么答复:我们是从多个典型工程的多年对比数据中统计而来的,这些数据,如果用关系数据库来存贮,需要比实时数据库30倍的空间(PI是这么回答的)。

济南有没有治疗斑秃好的医院

济南戒酒医院有哪些

南通儿童自闭症康复机构哪家好

南京哪个儿童医院看小儿抽动症好

颅骨修补哪个医院更专业

友情链接