[发明专利]为关系数据库表建立索引结构并进行查询的方法和装置有效
申请号: | 201310306279.1 | 申请日: | 2013-07-19 |
公开(公告)号: | CN104298690B | 公开(公告)日: | 2017-12-29 |
发明(设计)人: | 李磊;周英华;李鹏;王夕宁;吴亚鑫 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市中咨律师事务所11247 | 代理人: | 周良玉,于静 |
地址: | 美国*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 关系 数据库 建立 索引 结构 进行 查询 方法 装置 | ||
技术领域
本发明涉及关系数据库和JSON对象,更具体而言,涉及针对包含JSON文档的关系数据库表建立索引结构并进行查询的方法和装置。
背景技术
关系数据库RDB(rational database)是将现实世界中的各种实体以及实体之间的各种联系用关系模型来表示,并基于这样的关系模型而构建的数据库,是目前使用最为广泛的数据库。关系数据库用表的形式来存储数据,并用标准数据查询语言SQL来执行数据查询。
随着互联网web2.0网站的兴起,非关系型的数据库,又称为NoSQL(notonly SQL),越来越多地应用于网络数据存取。与传统的关系数据库管理系统RDBMS相比,非关系型数据库NoSQL不局限于固定的表结构,具有更加灵活的数据存储形式。相应地,NoSQL并不将SQL语言作为主要的查询语言。通常,NoSQL具有分布式弹性架构,因而具有高可扩展性和高可用性。并且,NoSQL能够针对海量数据进行高效率存储并处理高并发的读写访问需求,因而在海量数据存取方面比传统的关系数据库RDB具有更大的优势。
为了使得关系数据库RDB也能够如同NoSQL一样更加灵活地支持多种形式的数据存储,已经提出在关系数据库中引入JSON文档。JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,易于发开人员的阅读和编写,同时也易于机器解析和生成,是一种理想的数据交换语言。通过引入JSON文档,可以在表的一个项目中记录多个对象,从而扩展关系数据库的记录能力。
图1示例性示出关系数据库中用于存储患者医疗数据的表,其中图1A示出包含JSON文档的表,图1B示出存储同样数据内容的传统的表。具体地,图1A所示的表在3列中分别定义了3个字段:患者ID,患者名字,以及就医记录,其中患者ID,患者名字为常规字段,而就医记录一列被定义为长字段(或称为blob),从而包含JSON文档。根据JSON语言的特点,在JSON文档中用“{}”定义JSON对象,JSON对象可以用一个或多个关键字/键值的对来表示。例如,在表的第一行(记为Row0)中用一个JSON文档描述了第一个患者(user1)的就医记录,该JSON文档包含了2个JSON对象,第一个JSON对象通过两个关键字/键值的对来表示:“hospitalName”:“医院A”以及“symptom”:“症状A”,也就是说,第一个JSON对象对应于user1因为“症状A”到“医院A”就诊的就医记录;第二个JSON对象同样通过两个关键字/键值的对来表示,对应于user1因为“症状B”到“医院B”就诊的就医记录。因此,这个JSON文档实际上描述了两条就诊记录。类似的,在表的第二行(记为Row1)中用另一个JSON文档描述了第二个患者的4条就医记录,在表的第三行(记为Row2)中用又一JSON文档记录了第三个患者的3条就医记录。对于传统的关系数据库表来说,如果要存储以上的患者信息和就医记录,就需要采用至少4列来分别记录患者ID、患者名字、医院名称和症状,并用至少9行来分别记录以上9条就医记录,如图1B所示。对比图1A和图1B可以看到,通过引入JSON文档,关系数据库的表达更加灵活,可以支持更多的存储形式。
然而,对于引入有JSON文档的数据库表,适用于传统数据库表的查询方法常常表现出不足。例如,对于图1A所示的表,在一个例子中,希望查询因为“症状A”到“医院A”就诊的患者。根据现有的SQL查询方式,典型地,只能通过以下查询条件进行查询:where JSON_VAL(“records.hospitalName”)=“医院A”AND JSON_VAL(“records.symptom”)=“症状A”。该查询条件相当于在就诊记录字段中选择同时包含“医院A”和“症状A”的JSON文档。可以看到,除了患者user1之外,患者user2所对应的JSON文档也包含了“医院A”和“症状A”,尽管实际上user2是因为“症状C”而到“医院A”就诊,因为“症状A”而到“医院C”就诊。也就是说,上述查询会同时返回user1和user2,但是user2并不是期望的正确结果。因此,对于包含有JSON文档的表,现有的查询方法的查询粒度并不能够满足精确查询的需求。
为此,希望提出新的方案,能够更加有效地针对包含有JSON文档的关系数据库表进行查询。
发明内容
鉴于以上提出的问题,提出本发明,旨在提供一种方案,能够针对关系数据库表中的JSON对象进行查询,从而提高查询的精确性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310306279.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种关系型数据和非结构化数据的转换方法
- 下一篇:一种河网编码方法和系统