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