版权归原作者所有,如有侵权,请联系我们

[科普中国]-数据优化

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

简介

网络数据处理是网络信息计量学的重要组成部分,也是当前网络界、新闻传播界、信息管理界都十分关注的热点研究领域之一。有科学价值的数据库,应能实现基于数据库的数据挖掘和科学研究。数据库是支持知识发现的基础工程。要获得高信息含量的、有用的知识,理想情况是原始数据是不含噪声的正确数据。

数据是组成数据库的基本单元,构建高质量的数据库,必须对原始数据进行数据预处理,也就是所说的数据优化。1

优化模型数据分析优化模型对数据进行分析重组可以很大程度上减少数据转化过程中的为了转化而进行的查询次数,也能最大程度上的提高缓存命中率。首先我们判定哪些字段需要进行转化。如果仅有一个字段需要转化,那么只需将数据根据相关字段进行分组重排。这组数据的字段转化关系可以完全加入到缓存中。而且可以保证的是这个组的数据处理完毕后,其他的组不会用到这个缓存中的数据。也就是说这个字段被移除缓存后,就不会再加入缓存了。如果有多个字段,就要通过抽样试验分析字段问的相关性,按相关性的顺序进行数据重组。

程序员在进行数据抽取时只要声明要转化字段和相关性字段就可以了。并把它保存在配置文件中。转化字段非常容易的识别出,但是相关性字段除了一些常识性的可以立刻判断出,如一个部门的人重叠性很高,一个品牌的汽车重叠性很高。但有很多,用户也无法识别。框架提供了相关性抽样试验数据学习方法,抽取三个不相关数据子集,分别进行相关性命中率测试,取命中率平均值。最高的就为最相关的字段。

用户编写的SQL语句,要先进行语法语义分析。先分析这个SQL有哪些字段。去优化配置文件中找出待转化字段和相关字段,判断该SQL是要加入分组条件还是分组加排序条件。第二就是看看该SQL是不是会进行全盘扫描。如果会导致全盘扫描转化为按照索引进行扫描。最后根据以上两个方面进行SQL重写,生成符合要求的SQI,让取出的数据变得有规律,使得下一步进行数据转化,缓存命中率大大提高。

1.对文件的分析过程

这部分主要是如果数据源是文本文件,如EXCEL表格时,根据文本类型,调用文本文件的一些操作函数,根据配置文件的规则,对EXCEL按照某些列进行排序,形成有规律的数据。再被引入到系统之中。方法和SQL类似。

2.数据重组

从数据分析模型中已经得知需要按照哪些属性进行重组,重组属性的优先级。如果数据源是文件,我们需要对文件进行排序。如果数据源是数据库,那么我们需要对查询SQL按照属性优先级进行重写。2

SQL优化模型主要是对数据转化时,有些属性需要根据从目标数据库查询出的数据才能转化的情况。为了使缓存置换的时间变短,需要对查询SQL进行优化。经过SQL语句的预处理,将SQL语句分离成片段,找到片段中的各个部分,将片段主体部分拆分出来,根据规则优化SQL语句,还原整个SQL语句6个部分。

1.SQL语句的预处理

在对SQL语句进行分析之前,有必要对它进行一些预处理,这样能减轻不少后面编程的负担。预处理的主要工作是对SQL进行标准化,方便后续的处理。标准化是要去空格,统一成小写格式,多行变为一行

2.将SQL语句分离成片段

预处理后,SQL语句变为我们想要的格式。接下来将这个字符串按照某种限定符分为几个部分。

3.找到片段中的各个部分

有了表示片段的正则表达式,找到片段后从中分离出片段起始标志start片段主体body和片段结束标志end就很容易了。

4.对主体部分进行更深入的分析

5.将片段还原成主体

我们经过前四部分,已经将SQL分析完毕,但我们最终的目的还是将SQL还原,我们的目的是将前四部分分析的记过整合起来

6.优化SQL语句2

缓存优化模型和以往系统在初始化时初始缓存不同,这个缓存是业务缓存,且是不断变换的。需要在数据抽取阶段时进行初始化,随着数据类别的变化,缓存内容也要不断的进行替换。

如果有多个属性需要进行转变。优先级高的属性使用的缓存不需要置换。而优先级较低的缓存内容需要进行置换。因为置换的内容联系性较强。也就是说用到的几率都是相近的,因此,最近没被用到的,往往最容易被用到。所以使用LRU置换算法。2

优化流程主要流程分三个方面,分别是数据采集、数据分析和数据处理。下面将分别介缁这三个步骤所要完成的主要功能。

1.数据采集

软件测试方案生成子系统根据不同的测试部门和不同的测试项目的具体要求确定相应的数据采集范围,以实时数据和历史数据作为基础采集系统运行当中需要的数据。

2.数据分析

对于实时数据,系统将根据输入的文件或者命令,将其按照给定的设计要求保存到对应的数据变量和数组中,供测试管理人员生成新方案使用。

对于历史数据,系统需根据不同的数据表内容,分析其中的有用信息,并对其进行深入的分析。

3.数据处理

每次系统运行开始时,对系统中的各种数据进行总结与整理,将其按照系统要去放入对应的变量或者数据表当中,以供下一步工作使用。3

批量数据优化处理框架研究背景在计算机领域里,很多系统的开发和使用都离不开准确的数据。而这些数据很多时候都是由别的系统或资源产生和提供的。数据在不同的系统之间虽然内含一致,但表现形势不同。因此我们往往需要将数据从一个系统导入另一个系统中,而大部分数据需要经过处理后再导入。而这个过程会出现三个问题。

第一个问题是处理速度。如果数据量比较大,或者涉及数据库表非常多,或者转化过程逻辑很复杂,或者数据大部分都需要映射。那么处理数据和导入数据的过程就会占用大量的时间,在这段时间内很多因素都会导致批量处理过程的失败,这就造成了系统的不稳定性。而有些批量处理数据过程也需要在短时间完成,以给用户以良好的体验过程。这个是论文解决的重点。

第二个问题就是导入过程往往是把抽取数据,转化数据,导入数据过程和它们关联的业务仅仅联系在一起。让代码变得耦合性高和杂乱无章。使得批量处理过程没法扩展和重用。如果出现了一个新的业务的批量数据导入,就要做很多重复工作,甚至重新导数据。人们曾经利用MVC模式的struts框架成功分离了页面元素和业务逻辑元素。那么导数据过程也可以利用框架分离准备数据过程和处理数据过程,让程序员把业务逻辑都写入一个业务逻辑类中。而取数据,插入数据过程由框架完成。

第三个问题是,在处理数据的过程中,对于过程中处理的异常状况没有恰当的处理。最坏的情况下是导完数据后,不知道哪些成功了,哪些失败了。这样导数据工作将变得毫无意义。稍微好一点的情况是知道导入失败的记录,然后利用记录去手工调整。这样虽然最后也能完成批量处理数据过程,但浪费了很多时间。框架会把异常记录成为异常信息和异常关键字两部分,根据异常信息进行微调,在根据异常关键字进行补发。2

过程简介大批量数据的处理是将数据从一个数据源经过处理和转化后,同步到另一个数据源的过程。这个过程关注以下问题:从数据源读取数据,数据的处理,数据的写入。大批量数据处理过程有以下特点:数据源的多样性造成取数据方式的多样性。转化过程比较复杂,有的设计运算,有时需要查询,耗费大量时间。同步过程频繁,如果数据量大,对目标数据库写入次数过多,消耗大量时间。

获取数据是大批量数据处理过程的一个重要组成部分,它负责将分布的、异构数据源中的数据,如关系数据、数据文件等的数据抽取出来,加载到内存中,以方便对数据发生重要的重构。

数据处理是将源数据转换为目标数据的关键环节。它指的是对于数据源获取到的数据,经过一系列的转换来变为目标数据库需要的数据的过程,通过比较源数据和目标数据的关系,实现了各种复杂的转换,包括数据格式转换,数据类型转换,数据汇总计算,数据拼接等。

数据同步主要是将经过转换和清洗的数据加载到目标数据库中,供目标系统使用处理。2

系统架构开发人员利用该框架对大批量数据进行处理进行编程时,通过取数据组件获取到数据,程序员设置一次性处理的数据量,并确定用什么样的规则对数据进行处理和转化,将数据送入仓库。另外,程序员需要设置消费者逻辑,如将数据写入哪个表,并将这个逻辑传入数据同步组件。剩下的问题程序员都不需要关注,框架会完成整个数据同步过程。如果同步过程是不稳定的,程序员需要调用异常处理函数。保证同步过程的顺利进行。