和普通纯文本相比,半结构化数据具有一定的结构性,但和具有严格理论模型的关系数据库的数据相比。OEM(Object exchange Model)是一种典型的半结构化数据模型。
半结构化数据(semi-structured data)
在做一个信息系统设计时来自肯定会涉及到数据的存陆她矿储,一般我们都会将系统信360百科息保存在某个指定的关系数据库中。我们会将数据按业务分类,并设计相应的表,然后管烈将对应的信息保存到相应的表安远顺朝绍负左味染批中。比如我们做一个业务系统,要保存员工基本信息:工号、姓名、性别、出生日期等等;我们就会建立一个对应的staff表。
但不是系销统中所有信息都可以复弱兴这样简单的用一个表中的字段就能对应的艺。
就像上面举的例子。这种类别的数据最好处理,只要简单的建立一个对应的表就可以了。
像图片、声音、视频等等。这类信息我们通常无法直接知道他的内容劳镇今,数据库也只能将它保存在一个BLOB字段中,对以后检索非常麻烦。一般的做法是,建立一个包含三个字段的表(编号 number、内容描述 varchar(1024)、内容 blob)。引用通过编号,检索通过内容描述。现究哥例在还有很多非结构化数据的处理工具,市面上常见的内容管理器就是其中的一种。
这样的数据和上面两种类别都不一样,它是结构化的数据,但是结构变化很大。因为我们要了解数据的细节所以不能将数据简单层保季位顺的组织成一个文件按照非结时死包溶型构化数据处理,由于结构变化很大度也不能够简单的建立一个表和他对应。本文主要讨论针对半结构化数据存储常用的两种方式。
差觉哥视轻哥里先举一个半结构化的数据的例子,比如存储员工的简历。不像员工基本信息那样一致每个员工的简历大不相同。有的员工的简历很简单,比如只包括教育情况;有的员工的简历却很复杂,比如包括工作情况、婚姻情况、出入境情况、户口冷奏确急迁移情况、党籍情况、技术技能等等。掉掌程破状伟境片还有可能有一些我们没有预料的信息。通常我们要完整的保存这些信息并不是很容易的,因为我们不会希望系统中的表的结构县粉见药的他晶款在系统的运行期间进行变更。
这种方法通常是对现有的简历中的信息进行粗略的统计整理,总结出简历中信息所有的类别同时考虑系统真正关心的信息。对每一类别建立一个子表,比如上例中我们可以为社盐十时维河使找神建立教育情况子表、工作情来自况子表、党籍情况子表等等,并在主表360百科中加入一个备注字段,将其它系统不关心的信息和已开始没有考虑到的信息保存在备注中。
半叫汉配亚架氧触 优点:查询统计比较方便。
缺点:不能适应数据的盾扩展,不能对扩展的信息进行检索,对项目设计阶段没有考虑到的同时又是系统关心的货行下培义感信息的存储不能很好的处理。
妒能 XML可能是最适合存储半结构化的数据了。将不同类别的信息保存在XML的不同的节点中就可以了。
优点:能酸阻钢每群破够灵活的进行扩展拉由笔利唱并,信息进行扩展式只要更改对应的DTD或者XSD就可以了。
缺点:地编无果即节投苗酸查询效率比较低,要借助XPATH来完成查询统计,随着数据库对XML的支持的提升性能问题有望能够很好的解决。