为关系数据库表建立索引结构并进行查询的方法和装置制造方法及图纸

技术编号:10933715 阅读:106 留言:0更新日期:2015-01-21 13:52
本发明专利技术公开了一种为关系数据库表建立索引结构并进行查询的方法和装置。建立索引结构的方法包括:获取关系数据库表中包含的JSON文档;识别JSON文档中的JSON对象,并为其分配标识;根据所述JSON对象中的键值,建立索引结构,使得所述索引结构包括至少一个这样的节点,该节点至少记录一特定JSON对象中的键值并包含该特定JSON对象的标识。对关系数据库表进行查询的方法包括:接收包含特定指示符的查询请求,该指示符指示对JSON对象进行查询;以及基于查询请求中的查询条件,搜索根据之前方法建立的索引结构,从而确定满足查询条件的目标JSON对象。还公开了与上述方法对应的装置。通过针对JSON对象建立索引并进行查询,降低了查询粒度,提高了查询精确性。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种为关系数据库表建立索引结构并进行查询的方法和装置。建立索引结构的方法包括:获取关系数据库表中包含的JSON文档;识别JSON文档中的JSON对象,并为其分配标识;根据所述JSON对象中的键值,建立索引结构,使得所述索引结构包括至少一个这样的节点,该节点至少记录一特定JSON对象中的键值并包含该特定JSON对象的标识。对关系数据库表进行查询的方法包括:接收包含特定指示符的查询请求,该指示符指示对JSON对象进行查询;以及基于查询请求中的查询条件,搜索根据之前方法建立的索引结构,从而确定满足查询条件的目标JSON对象。还公开了与上述方法对应的装置。通过针对JSON对象建立索引并进行查询,降低了查询粒度,提高了查询精确性。【专利说明】为关系数据库表建立索弓I结构并进行查询的方法和装置
本专利技术涉及关系数据库和JSON对象,更具体而言,涉及针对包含JSON文档的关系数据库表建立索引结构并进行查询的方法和装置。
技术介绍
关系数据库RDB (rat1nal database)是将现实世界中的各种实体以及实体之间的各种联系用关系模型来表示,并基于这样的关系模型而构建的数据库,是目前使用最为广泛的数据库。关系数据库用表的形式来存储数据,并用标准数据查询语言SQL来执行数据查询。 随着互联网web2.0网站的兴起,非关系型的数据库,又称为NoSQL(notonlySQL),越来越多地应用于网络数据存取。与传统的关系数据库管理系统RDBMS相比,非关系型数据库NoSQL不局限于固定的表结构,具有更加灵活的数据存储形式。相应地,NoSQL并不将SQL语言作为主要的查询语言。通常,NoSQL具有分布式弹性架构,因而具有高可扩展性和高可用性。并且,NoSQL能够针对海量数据进行高效率存储并处理高并发的读写访问需求,因而在海量数据存取方面比传统的关系数据库RDB具有更大的优势。 为了使得关系数据库RDB也能够如同NoSQL —样更加灵活地支持多种形式的数据存储,已经提出在关系数据库中引入JSON文档。JSON(JavaScriptObject Notat1n)是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,易于发开人员的阅读和编写,同时也易于机器解析和生成,是一种理想的数据交换语言。通过引入JSON文档,可以在表的一个项目中记录多个对象,从而扩展关系数据库的记录能力。 图1示例性示出关系数据库中用于存储患者医疗数据的表,其中图1A示出包含JSON文档的表,图1B示出存储同样数据内容的传统的表。具体地,图1A所示的表在3列中分别定义了 3个字段:患者ID,患者名字,以及就医记录,其中患者ID,患者名字为常规字段,而就医记录一列被定义为长字段(或称为blob),从而包含JSON文档。根据JSON语言的特点,在JSON文档中用“ {} ”定义JSON对象,JSON对象可以用一个或多个关键字/键值的对来表示。例如,在表的第一行(记为RowO)中用一个JSON文档描述了第一个患者(userl)的就医记录,该JSON文档包含了 2个JSON对象,第一个JSON对象通过两个关键字/键值的对来表示:“hospitalName”: “医院A”以及“symptom”: “症状A”,也就是说,第一个JSON对象对应于userl因为“症状A”到“医院A”就诊的就医记录;第二个JSON对象同样通过两个关键字/键值的对来表示,对应于userl因为“症状B”到“医院B”就诊的就医记录。因此,这个JSON文档实际上描述了两条就诊记录。类似的,在表的第二行(记为Rowl)中用另一个JSON文档描述了第二个患者的4条就医记录,在表的第三行(记为Row2)中用又一JSON文档记录了第三个患者的3条就医记录。对于传统的关系数据库表来说,如果要存储以上的患者信息和就医记录,就需要采用至少4列来分别记录患者ID、患者名字、医院名称和症状,并用至少9行来分别记录以上9条就医记录,如图1B所示。对比图1A和图1B可以看到,通过引入JSON文档,关系数据库的表达更加灵活,可以支持更多的存储形式。 然而,对于引入有JSON文档的数据库表,适用于传统数据库表的查询方法常常表现出不足。例如,对于图1A所示的表,在一个例子中,希望查询因为“症状A”到“医院A”就诊的患者。根据现有的SQL查询方式,典型地,只能通过以下查询条件进行查询:where JS0N_VAL( “records.hospitalName”)= “医院 A,,AND JS0N_VAL( “records, symptom”)= “症状A”。该查询条件相当于在就诊记录字段中选择同时包含“医院A”和“症状A”的JSON文档。可以看到,除了患者userl之外,患者userf所对应的JSON文档也包含了 “医院A”和“症状A”,尽管实际上userf是因为“症状C”而到“医院A”就诊,因为“症状A”而到“医院C”就诊。也就是说,上述查询会同时返回userl和user2,但是user2并不是期望的正确结果。因此,对于包含有JSON文档的表,现有的查询方法的查询粒度并不能够满足精确查询的需求。 为此,希望提出新的方案,能够更加有效地针对包含有JSON文档的关系数据库表进行查询。
技术实现思路
鉴于以上提出的问题,提出本专利技术,旨在提供一种方案,能够针对关系数据库表中的JSON对象进行查询,从而提高查询的精确性。 根据本专利技术一个实施例,提出了一种为包含JSON文档的关系数据库表建立索引结构的方法,包括:获取所述关系数据库表中包含的至少一个JSON文档;识别所述至少一个JSON文档中的多个JSON对象,并为所述多个JSON对象分配标识;根据所述多个JSON对象中的键值,建立索引结构,使得所述索引结构包括至少一个这样的节点,该节点至少记录一特定JSON对象中的键值并包含该特定JSON对象的标识。 根据另一实施例,提出了一种对包含JSON文档的关系数据库表进行查询的方法,包括:接收包含特定指示符的查询请求,该特定指示符指示对关系数据库表中包含的至少一个JSON文档中的JSON对象进行查询;以及基于所述查询请求中的查询条件,搜索根据前一实施例的方法所建立的索引结构,从而确定满足查询条件的目标JSON对象。 根据本专利技术一个实施例,提出了一种为包含JSON文档的关系数据库表建立索引结构的装置,包括:文档获取单元,配置为获取所述关系数据库表中包含的至少一个JSON文档;识别单元,配置为识别所述至少一个JSON文档中的多个JSON对象,并为所述多个JSON对象分配标识;以及索引建立单元,配置为根据所述多个JSON对象中的键值,建立索引结构,使得所述索引结构包括至少一个这样的节点,该节点至少记录一特定JSON对象中的键值并包含该特定JSON对象的标识。 根据另一实施例,提出了一种对包含JSON文档的关系数据库表进行查询的装置,包括:接收单元,配置为接收包含特定指示符的查询请求,该特定指示符指示对关系数据库表中包含的至少一个JSON文档中的JSON对象进行查询;以及查询单元,配置为基于所述查询请求中的查询条件,搜索利用前一实施例的装置所建立的索本文档来自技高网
...
为关系数据库表建立索引结构并进行查询的方法和装置

【技术保护点】
一种为包含JSON文档的关系数据库表建立索引结构的方法,包括:获取所述关系数据库表中包含的至少一个JSON文档;识别所述至少一个JSON文档中的多个JSON对象,并为所述多个JSON对象分配标识;根据所述多个JSON对象中的键值,建立索引结构,使得所述索引结构包括至少一个这样的节点,该节点至少记录一特定JSON对象中的键值并包含该特定JSON对象的标识。

【技术特征摘要】

【专利技术属性】
技术研发人员:李磊周英华李鹏王夕宁吴亚鑫
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1