结构化数据、半结构化数据和非结构化数据分析

一、结构化数据

1、结构化数据是什么?

结构化数据也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。与结构化数据相对的是不适于由数据库二维表来表现的非结构化数据,包括所有格式的办公文档、XML、HTML、各类报表、图片和音频、视频信息等。支持非结构化数据的数据库采用多值字段、了字段和变长字段机制进行数据项的创建和管理,广泛应用于全文检索和各种多媒体信息处理领域 [1] 。

2、结构化数据作用

结构化数据标记,是一种能让网站以更好的姿态展示在搜索结果当中的方式。做了结构化数据标记,便能使网站在搜索结果中良好地展示丰富网页摘要。
搜索引擎都支持标准的结构化数据标记,以便为用户提供更好的上网体验。网页内微数据标记可以帮助搜索引擎理解网页上的信息,能更方便搜索引擎识别分类,判断相关性。
同时结构化微数据可以让搜索引擎提供更丰富的搜索结果摘要展现,也就是为用户的具体查询提供帮助的详细信息,让用户直接在搜索结果中看见你商品的重要信息。例如:商品的价格、名称、库存状况(商品是否有货)、评论者评分和评论等都可以在搜索结果摘要直接看到。
这些丰富网页摘要可帮助用户了解网站与他们的搜索内容是否相关,可以让网页获得更多点击。
如在搜索结果中,部分展示了更多的星级评分、评论条数以及价格等因素,这样无疑增加了网站的专业程度,且提高了客户对网站的信任度,网站良好的曝光度无形中就提高了网站的点击率与转化率。

二、半结构化数据

1、半结构化数据是什么?

半结构化数据(semi-structured data)。在做一个信息系统设计时肯定会涉及到数据的存储,一般我们都会将系统信息保存在某个指定的关系数据库中。我们会将数据按业务分类,并设计相应的表,然后将对应的信息保存到相应的表中。比如我们做一个业务系统,要保存员工基本信息:工号、姓名、性别、出生日期等等;我们就会建立一个对应的staff表。
但不是系统中所有信息都可以这样简单的用一个表中的字段就能对应的

2、半结构化数据必要性

E/R、UML、关系模型、ODL,每个都是以模式开始。模式是一种放置数据的严格框架。这种严格性提供了某些优点。特别的,关系模型的成功在于它的高效实现。这种高效性来自于关系数据库中的数据必须符合其模式并且该模式为查询处理器所知这一事实。 [2]
另一方面,对半结构化数据模型感兴趣的动机主要是它的灵活性。特别的,半结构化数据是“无模式”的。更准确地说,其数据是自描述的。它携带了关于其模式的信息,并且这样的模式可以随时间在单一数据库内任意改变。 [2]
人们可能很自然地想知道无模式地创建数据库是否存在优点,在这样的数据库中,可以随意的输入数据,并且访问该数据时你感觉到的模式信息就是适合它的模式。实际上有一些小规模的信息系统,如Lotos Notes,它们就采用了自描述数据的方法。这种灵活性可能使查询处理更加困难,但它给用户提供了显著地优势。例如,可以在半结构化模型中维护一个电影数据库,并且能如用户所愿地添加类似“我喜欢看此部电影吗?”这样的新属性。这些属性不需要所有电影都有值,或者甚至不需要多于一个电影有值。同样的,可以添加类似“homage to”这样的联系而不需要改变模式,或者甚至表示不止一对的电影间的联系。 [2]

4、半结构化数据表示

半结构化数据的数据库是节点的集合,每个节点都是一个叶子节点或者一个内部节点。叶子节点与数据相关,数据的类型可以是任意原子类型,如数字和字符串。每个内部节点至少有一条外向的弧。每条弧都有一个标签,该标签指明弧开始处的节点与弧末端的节点之间的关系。一个名为根的内部节点没有进入的弧,它代表整个数据库。每个节点都从根可达,尽管这个图结构未必是一棵树。 [2]
半结构化数据通常是由一个由节点集合和弧段集合组成的具根有向图结构。有向图中节点集合元素分为三类:
(1)叶结点。此类节点没有由其出发的弧段,其语义表示与实际数据相关,相应数据取值类型可以是任意原子类型(数值型或字符串型)。
(2)内部节点。此类节点既有由其出发又有由其终止的弧段。
(3)根节点。此节点唯一,其特征是只作为一个或多个弧段的始点,其语义是整个数据文件。 [3]

3、半结构化数据模型

半结构化数据模型允许那些相同类型的数据项有不同的属性集的数据规格说明。这和早先提到的数据模型形成了对比:那些数据模型中某种特定类型的所有数据必须有相同的属性集。 [4]
对象交换模型是一个半结构化数据模型。对象由一个三元组表示,包括标记、类型和对象的值。在对象交换模型中,对象具有唯一的标识。由于模型中对象的标识可以看做关系模型中的属性名,对象的类型可以看做关系模型中的属性类型,所以对象交换模型基本上是自描述的。对象交换模型中的标记尽可能地详尽,因为标记除了能够表达对象的含义外,还可以用来确定特定的对象。 [5]

三、非结构化数据

1、非结构化数据是什么?

非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的办公文档、文本、图片、XML, HTML、各类报表、图像和音频/视频信息等等。
计算机信息化系统中的数据分为结构化数据和非结构化数据。非结构化数据其格式非常多样,标准也是多样性的,而且在技术上非结构化信息比结构化信息更难标准化和理解。所以存储、检索、发布以及利用需要更加智能化的IT技术,比如海量存储、智能检索、知识挖掘、内容保护、信息的增值开发利用等。 [6]

2、非结构化数据优势

有大量的数据需要处理
非结构化数据在任何地方都可以得到。这些数据可以在你公司内部的邮件信息、聊天记录以及搜集到的调查结果中得到,也可以是你对个人网站上的评论、对客户关系管理系统中的评论或者是从你使用的个人应用程序中得到的文本字段。而且也可以在公司外部的社会媒体、你监控的论坛以及来自于一些你很感兴趣的话题的评论。 [6]
蕴藏着大量的价值
有些企业正投资几十亿美金分析结构化数据,却对非结构化数据置之不理,在非结构化数据中蕴藏着有用的信息宝库,利用数据可视化工具分析非结构化数据能够帮助企业快速地了解现状、显示趋势并且识别新出现的问题。
不需要依靠数据科学家团队
分析数据不需要一个专业性很强的数学家或数据科学团队,公司也不需要专门聘请IT精英去做。真正的分析发生在用户决策阶段,即管理一个特殊产品细分市场的部门经理,可能是负责寻找最优活动方案的市场营销者,也可能是负责预测客户群体需求的总经理。终端用户有能力、也有权利和动机去改善商业实践,并且视觉文本分析工具可以帮助他们快速识别最相关的问题,及时采取行动,而这都不需要依靠数据科学家。
终端用户授权
正确的分析需要机器计算和人类解释相结合。机器进行大量的信息处理,而终端客户利用他们的商业头脑,在已发生的事实基础上决策出最好的实施方案。终端客户必须清楚的知道哪一个数据集是有价值的,他们应该如何采集并将他们获取的信息更好地应用到他们的商业领域。此外,一个公司的工作就是使终端用户尽可能地收集到更多相关的数据并尽可能地根据这些数据中的信息作出最好的决策。
很明显,非结构化数据分析可以用来创造新的竞争优势。新的前沿可视化工具使用户容易解释,让他们在点击几下鼠标之后就能清楚地了解情况。从非结构化的数据源中挖掘信息从来就没有像这样如此简单。

3、非结构化数据采集

在很多知识库系统中,为了查询大量积累下来的文档,需要从PDF、Word、Rtf、Excel和PowerPoint等格式的文档中提取可以描述文档的文字,这些描述性的信息包括文档标题、作者、主要内容等等。这样一个过程就是非结构化数据的采集过程。
非结构化数据的采集是信息进一步处理的基础。有许多开源库己经实现了从非结构化文档中采集关键信息的功能,但针对不同格式的文档,所用的开源库不尽相同。
例如,Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。其结构包括:HSSF提供读写Microsoft Excel XLS格式档案的功能;XSSF提供读写Microsoft Excel OOXML XLSX格式档案的功能;HWPF提供读写MicrosoftWord DOC格式档案的功能;HSLF提供读Microsoft PowerPoint格式档案的功能;HDGF提供读写Microsoft Visio格式档案的功能等。
PDFBox是Java实现的PDF文档协作类库,提供PDF文档的创建、处理以及文档内容提取功能,也包含了一些命令行实用工具。主要特性包括:从PDF提取文本;合并PDF文档;PDF文档加密与解密;与Lucene搜索引擎的集成;填充PDFIXFDF表单数据;从文本文件创建PDF文档;从PDF页面创建图片;打印PDF文档。PDFBox还提供和Lucene的集成,它提供了一套简单的方法把PDFDocuments加入到Lucene的索引中去。
另外还有parse-rtf可以对RTF文件处理,SearchWord可对Word和Excel,PPT文件进行处理等等。[6]

4、非结构化数据查询

随着计算机、互联网和数字媒体等的进一步普及,以文本、图形、图像、音频、视频等非结构化数据为主的信息急剧增加,面对如此巨大的信息海洋,特别是非结构化数据信息,如何存储、查询、分析、挖掘和利用这些海量信息资源就显得尤为关键。传统关系数据库主要面向事务处理和数据分析应用领域,擅长解决结构化数据管理问题,在管理非结构化数据方面存在某些先天不足之处,尤其在处理海量非结构化信息时更是面临巨大挑战。为了应对非结构化数据管理的挑战,出现了各种非结构化数据管理系统,例如基于传统关系数据库系统扩展的非结构化数据管理系统,基于NoSQL的非结构化数据管理系统等。 [7]
在非结构化数据管理系统中,查询处理模块是其中一个重要的组成部分,针对非结构化数据的特性设计合理的查询处理框架和查询优化策略对于非结构数据的快速、有效访问极为重要。传统的结构化查询处理过程是:首先翻译器翻译查询请求生成查询表达式,然后由优化器优化查询表达式,得到优化过的查询计划,最后由执行器选择最优的查询计划执行,得到查询结果。查询处理的主要操作包括选择操作、连接操作、投影操作、聚合函数、排序等。查询优化的方法包括基于代价估算的优化和基于启发式规则的优化等。
非结构化查询处理过程中除了结构化数据查询处理所包含的操作外,还有两个重要的操作相似性检索和相似性连接。相似性检索是指给定一个元素,在由该种类元素组成的集合中寻找与之相似的元素。例如论文查重系统用到文本的相似性检索,谷歌的以图搜图的功能用到图像的相似性检索,手机上根据哼唱匹配音乐是音频的相似性检索等。相似性连接是数据库连接操作在非结构化数据上的一种扩展,它寻找两个元素种类相同的集合之间满足相似性约束的元素对,在数据清洗、数据查重、抄袭检测等领域有着重要的作用。非结构化查询处理框架要针对这两种非结构化数据特有的查询操作对结构化查询处理框架进行改进。
非结构化查询优化,在代价估算上除了要考虑结构化数据的代价估算模型外,还要设法建立相似性查询和相似性连接的代价估算模型,对于针对非结构化数据的全文索引和空间索引,也应该有不同与B树索引的代价估算模型。代价估算模型除了要考虑CPU时间、IO时间外,由于非结构化数据一般都存储在分布式系统之上,还需要考虑到中间结果网络传输所用的时间,所以中间结果的大小估算对于非结构化数据的查询优化比结构化数据的查询优化更为重要。非结构化数据的查询优化中的启发式规则和结构化数据也有所不同。

5、非结构化数据存储

Hbase是Apache的顶级子项目,它的理念来自于Google的Bigtable。它是分布的、面向列的、多维的数据库系统,它供给高的容错性和可扩展性,它是建立HDFS(Hadoop分布式文件系统)之上。Hbase的表的每一行有行键(row key)和任意多的列(column)组成,其中多个列可以组成列族(column family)。每个数据单元(cell)可以拥有数据的多个版本(version),这个是使用时间戳来区分。所以Hbase是拥有map:(行键,列族:列,时间戳)对应一个值。
Hbase是应用在分布式系统之中,他将大量的行分成行区域(Region),将化分后的区域分布到集群中去。Hbase与HDFS同样是使用master-slave结构,在Hbase中slave对应是Regionserver,负责管理master分下来的Rregion。同时master还负责负载平衡以及当Region出现错误时,master会收到Regionserver的请求消息,会重新分配到新的空闲的节点(这涉及到HLog)。
正如上所说,Hbase是面向列的存储,它在实际的物理存储器中是以列族的存储,所以在列族相同的会在存储在一起。在与面向行的关系数据库比较,这会节省了大量为空的属性。Hbase也是一种NoSQL,它不像关系数据库那样供给结构化查询语句来访问其中的数据。NoSQL是一种模式自由(schema-free)的数据库,良好是设计会提升数据结构而不存在表的重写。
Hbase的容错性不得不提到HDFS,HDFS是Hadoop 分布式文件系统,它可以部署在廉价的机器上,提高系统的容错性和高的吞吐量。HDFS分为一个Namenode和多个Datanode,Namenode管理文件系统的名字空间,它维护着文件系统树以及整个树内所有的文件和目录。Datanode存储着数据块,负责删除添加等操作。Hbase的文件被分为固定大小的块(默认的为64M),块服务器是存储块和对指定块的读写操作。在分布式的集群中,机器故障乃是常态,为了安全问题,所以不断的检测机器的状况和数据的备份时必须的。HDFS的副本一般的情况下分为3份,一份是同个节点中,第二份放在不在机架上的另一个节点,最后一份是放在第二份相同机架的不同节点中。Master存储着文件系统元数据(metadata),主要分为3种元数据:文件和块的名字空间、文件到块的映射和块副本的位置。块服务器存储着数据,所以master必要和块服务器保持者联系。Master定期发送心跳(heartbeat)与块服务器了解块服务器的状况。客户读写数据是都首先和master先取得联系然后再与块服务器完成读写操作。

在一致性上,HDFS 是一个松散的一致性检查的模型。他主要是为了追加(append)操作而不是覆盖重写(overwrite)操作。因为覆盖重写的话可能在一次读的操作会读到与其他副本不一致的数据,而在追加操作,其中一个副本的不一致也不会导致客户端读到不一致的数据。同时HDFS在追加操作时采用租用(Lease)机制,即将块的写操作授权给主块服务器(primary chunk server),另外的副本称为次块服务器(secondary chunk server)。当多个客户端的并发写操作时,主块服务器缓存其写的顺序,之后联系次服务器进行追加操作。从这里可以看出,在HDFS的根基之上供给版本一致性。而不同Dynamo采用矢量时钟即(节点,计数器)(node,counter)列表来钟捕捉同一不同版本的对象是否有因果关系。当客户端更新一个对象,它必须指定它正要更新哪个版本,当存在因果关系,直接覆盖之前的版本。若是两个独立的版本,更新其矢量时钟,使得存在多个版本。同事Dynamo采用了NRW机制(N: 复制的节点数量,R: 成功读操作的最小节点数,W: 成功写操作的最小节点数),当R+W>N时可以说明至少有一个版本是最新的版本,这样在数据的读操作就可以保证数据的一致性。当然在这里也体现出了Dynamo的高可用行,比如设置W=1,即表明只要正确读入一个节点即可,不须保证写入的值全部传给副本。

参考文章:

非结构化数据的存储与查询https://blog.csdn.net/kangkangwanwan/article/details/60575956

参考文献:

[1]郑煜. 结构化数据异构同步技术的研究[D].北京林业大学,2013.
[2]JEFFREYD.ULLMAN,JENNIFERWIDOM编著.数据库系统基础教程 .北京:由机械工业出版社,2009:289-295
[3]叶小平,汤庸,汤娜,潘明编著.数据库系统教程 第2版.北京:清华大学出版社,2012:314-317
[4]西尔伯沙茨(Silberschatz,A.),(美)克尔斯(Korth,H.F.),(美)苏达山(Sudarshan,H.)著 杨冬青等译.数据库系统概念 第5版.北京:机械工业出版社,2006:12-12
[5]罗摩克希纳 [美]格尔克著.数据库管理系统(第2版).北京:清华大学出版社,2002:497-498
[6]马惠芳. 非结构化数据采集和检索技术的研究和应用[D].东华大学,2013.
[7]金鑫. 非结构化数据查询处理与优化[D].浙江大学,2015.

©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页