首页> 中国专利> 基于JSON的数据仓库存储及查询方法

基于JSON的数据仓库存储及查询方法

摘要

本发明公开一种基于JSON的数据仓库存储方法,该存储方法包括以下步骤:S1:将JSON数据仓库分为键‑节点标记数据仓库和值‑路径标记数据仓库;S2:解析JSON文档;S3:对JSON文档中的节点进行标记,构建节点标记;S4:基于所述节点标记,对JSON文档中的值构建路径标记;S5:将JSON文档中节点的键和所对应的节点标记组成键‑节点标记对,并存储到所述键‑节点标记数据仓库中;S6:将所述节点的值和所对应的路径标记组成值‑路径标记对,并存储到所述值‑路径标记数据仓库中。另外,本发明还公开一种与所述存储方法相对应的查询方法。

著录项

  • 公开/公告号CN106021523A

    专利类型发明专利

  • 公开/公告日2016-10-12

    原文格式PDF

  • 申请/专利权人 北京交通大学;

    申请/专利号CN201610351689.1

  • 发明设计人 徐维祥;赵博;

    申请日2016-05-24

  • 分类号G06F17/30(20060101);

  • 代理机构11257 北京正理专利代理有限公司;

  • 代理人付生辉;段俊峰

  • 地址 100044 北京市海淀区上园村3号

  • 入库时间 2023-06-19 00:39:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-02-08

    专利权的转移 IPC(主分类):G06F16/28 专利号:ZL2016103516891 登记生效日:20220124 变更事项:专利权人 变更前权利人:北京银企融合技术开发有限公司 变更后权利人:北京结慧科技有限公司 变更事项:地址 变更前权利人:100144 北京市石景山区实兴大街30号西山汇(石景山科技园区)16号楼12层 变更后权利人:100144 北京市石景山区实兴大街30号院3号楼2层A-1151房间(集群注册)

    专利申请权、专利权的转移

  • 2019-07-26

    授权

    授权

  • 2016-11-09

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160524

    实质审查的生效

  • 2016-10-12

    公开

    公开

说明书

技术领域

本发明涉及数据仓库存储及查询领域。更具体地,涉及一种基于JSON的数据仓库存储及查询方法。

背景技术

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

与XML相比较而言,使用JSON携带相同信息量的数据,文件所占空间要小很多,传输速度更快,从另一个侧面将JSON占据的内存更小,其携带数据的高效率在构建数据仓库的时候可以有效的提高数据存储的效率,提高磁盘的IO效率,进而提高数据的处理效率。

JSON解析相对XML要容易,JSON在几乎所有主流程序语言中都有非常轻便的解析方法,而XML的解析过程要复杂地多,其文件还要借助DTD、schema等约束文件,因此JSON可以有效地降低内存和CPU的资源消耗。

现阶段的数据库中数据量成几何式增长,需要一种灵活轻便的数据格式存储数据,关系型数据库已经无法适应大量异构或半异构的数据,有许多数据库以XML文档作为替代,但是XML文档占用空间大,解析困难也成为了解决数据量极大的问题,JSON作为网络传输文档格式具有轻便简介易解析的特点,可以很好地弥补XML文档的不足。

R树是B树在k维上的自然扩展,用空间对象的MBR来近似表达空间对象,根据地物的MBR建立R树,可以直接对空间中占据一定范围的空间对象进行索引。R树的每一个结点都对应着磁盘页D和区域I,如果结点不是叶结点,则该结点的所有子结点的区域都在区域I的范围之内,而且存储在磁盘页D中。如果结点是叶结点,那么磁盘页D中存储的将是区域I范围内的一系列子区域,子区域紧紧围绕空间对象,一般为空间对象的外接矩形。R树作为空间索引方法一直在数据库领域有很好地应用价值,为数据的搜索查询大大降低了磁盘IO次数,提高了检索的效率。

因此,需要提供一种基于JSON的数据仓库存储及查询方法。

发明内容

本发明的一个目的在于提供一种基于JSON的数据仓库存储方法。

为达到上述目的,本发明采用下述技术方案:

一种基于JSON的数据仓库存储方法,该存储方法包括以下步骤:

S1:将JSON数据仓库分为键-节点标记数据仓库和值-路径标记数据仓库。

S2:解析JSON文档,具体包括识别键值对和分离键值对。

S3:对JSON文档中的节点采用无重复排号的方法进行标记,对节点名称进行从1开始的顺序标号,并对重复节点名称采用相同标号,从而构建节点标记。

S4:基于所述节点标记,对JSON文档中的值构建路径标记:

S401:以所述值的节点为出发节点向上一层节点搜索至根节点,记录各节点的标记;

S402:将各节点标记按照从根节点到出发节点的顺序组成节点数组,该节点数组为所述值的路径标记。

S5:将JSON文档中节点的键和所对应的节点标记组成键-节点标记对,检查键-节点标记数据仓库中是否存在该节点的键-节点标记对,若是,则停止存储;若否,则检查键-节点标记数据仓库中是否存在与该节点的键相同且节点标记对不同的键-节点标记对,若是,则停止存储;若否,则将所述节点的键-节点标记对按照单层文档的方式存储到JSON文件中。

S6:将所述节点的值和所对应的路径标记组成值-路径标记对,以路径标记为索引,将所述值-路径标记对按照单层文档的方式依次存储到所述值-路径标记数据仓库中。

优选地,值-路径标记数据仓库采用变种R树的形式,节点的路径标记作为该变种R树中节点的键,节点的值包含在该变种R树对应叶节点中,变种R树中非叶节点产生指向叶节点值的指针,在磁盘存储的该指针将已经标记好的节点标记作为关键指针。

一种基于JSON的数据仓库查询方法该查询方法包括以下步骤:

S1:接收查询指令;

S2:分析查询指令,解析查询关键词;

S3:通过键-节点标记数据仓库查找出关键词对应的节点标记查询点;

S4:将所有节点标记根据级别从高级至低级排列,构成路径标记查询域;

S5:通过路径标记查询域及变种R树的存储方式在值-路径标记数据仓库中锁定查询数据的存储位置;

S6:返回所查询的结果,根据路径标记的层级关系,重新构成一个或者多个JSON文档进行输出。

优选地,对节点标记查询点的查找是基于对节点数字代号的查找进行的。

本发明的有益效果如下:

本发明提供的基于JSON的数据仓库存储及查询方法能够方便快捷的对JSON数据仓库进行数据存储和查询,与XML相比较而言,使用JSON携带相同信息量的数据,文件所占空间要小很多,传输速度更快,内存占据小,其携带数据的高效率在构建数据仓库的时候可以有效的提高数据存储的效率。另外,值-路径标记以变种R树的方式存储在磁盘中,以节点标记为一级索引,以路径标记为二级索引,可以大大降低磁盘的IO次数,提高磁盘的IO效率,进而提高数据的处理效率。

附图说明

下面结合附图对本发明的具体实施方式作进一步详细的说明。

图1示出基于JSON的数据存储及查询过程示意图。

图2示出基于JSON的数据存储详细过程图解。

图3示出基于JSON的数据查询详细过程图解。

图4示出JSON文件在变种R树中的存储形式。

具体实施方式

为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。

图1示出基于JSON的数据存储及查询过程示意图,本发明将结合附图通过以下具体实施例对数据的存储及查询过程进行详细说明,其中,数据存储方法步骤如下所示:

S1:将所有存储到数据仓库的JSON文件进行解析,存储解析步骤如图2所示。

S2:解析存储过程中,首先读取JSON文档,识别JSON文档中的键值对,然后将每个JSON文件中的不同节点分别分配顺序节点标记:由数字1开始进行标记,如果存在不同JSON文件中的相同的节点名称,则采用最初的标记。

S3:每次节点标记完成,都将键与对应的节点标记存储在键-节点标记数据仓库(Key-identifier data ware house,简称:KI仓库)中,并且保存为JSON文件,例如本实施例中的JSON文件为:

S4:将JSON文件中的值构建路径标记:路径标记的构建按照该值的对应键依次向上一层搜索直至JSON文件根节点的规则进行,得到所有键的对应序列号,将这些序列号按照级别从高级到低级的顺序依次排列同时使用逗号隔开,连接成为一组数组,并将该数组定义为JSON文件中值的路径标记。

S5:将所得值与之对应的路径标记存储在数据仓库中,该仓库定义为值-路径标记数据仓库(Value-Path Mark Data Warehouse,简称:VP仓库)。

S6:按照去平衡R树的方式,将所有节点标记存储在JSON文档中,叶子节点存储JSON文档的值,在非叶子节点处构建指向下一级别的指针,直至整个JSON文档路径标记的根节点被包含进R树结构中来,本实施例中JSON文档变种R树示例程序为:

S7:图4示出JSON文件在变种R树中的存储形式,即以上文件在去平衡R树中可以表示为图4中的状态:

实施例中一共有4组数据,分别是:“John年龄35”,“Kevin年龄40”;“Kate邮箱是Kate@gmail.com”,“Bob邮箱是Bob@gmail.com”;“John、Kevin是employee1中的员工”,“Bob和Kate是employee2中的员工”;“Bob和Kevin在做project1的项目”。

S8:根据标记规则将“company”“project1”“employee1”“employee2”“age”“name”“email”分别分配节点标记1,2,3,4,5,6,7。为避免数据仓库极大数据量下节点标记数字会过大,最后一个数字标记不纳入节点标记的范畴,即对值的标记(而非JSON文档中间节点标记)要求重新排列,即从1开始,并且仅限于同一个组的值才会有不同的标记。例如:John,Kevin同属于标记为3的组内,就要使用不同的标记1,2区别开;同理Kate,Bob同属于标记为4的组内,也用1,2区别开,即将John,Kevin与Kate,Bob作为组内节点分别标记1,2,因此图4中各个值的路径标记是按照级别高低排列得到的。

通过以上文的方法得到的是JSON文档的存储方式以及索引方式,图3示出基于JSON的数据查询详细过程图解,本发明在此基础上提供了一种查询数据的方法;

S1:接收查询指令;

S2:分析查询指令,解析查询关键词;

S3:通过键-节点标记数据仓库查找出关键词对应的节点标记查询点;

S4:将所有节点标记根据级别从高级至低级排列,构成路径标记查询域;

S5:通过路径标记查询域及变种R树的存储方式在值-路径标记数据仓库中锁定查询数据的存储位置;

S6:返回所查询的结果,根据路径标记的层级关系,重新构成一个或者多个JSON文档进行输出。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号