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

文档序号:10655360阅读:273来源:国知局
基于json的数据仓库存储及查询方法
【专利摘要】本发明公开一种基于JSON的数据仓库存储方法,该存储方法包括以下步骤:S1:将JSON数据仓库分为键?节点标记数据仓库和值?路径标记数据仓库;S2:解析JSON文档;S3:对JSON文档中的节点进行标记,构建节点标记;S4:基于所述节点标记,对JSON文档中的值构建路径标记;S5:将JSON文档中节点的键和所对应的节点标记组成键?节点标记对,并存储到所述键?节点标记数据仓库中;S6:将所述节点的值和所对应的路径标记组成值?路径标记对,并存储到所述值?路径标记数据仓库中。另外,本发明还公开一种与所述存储方法相对应的查询方法。
【专利说明】
基于JSON的数据仓库存储及查询方法
技术领域
[0001] 本发明设及数据仓库存储及查询领域。更具体地,设及一种基于JSON的数据仓库 存储及查询方法。
【背景技术】
[0002] JSON(JavaSc;ript Object Notation)是一种轻量级的数据交换格式,它是基于 ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言 家族的习惯(包括C、C++、C#、Java、JavaSc;ript、Pe;rl、F^ython等)。运些特性使JSON成为理想 的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
[0003] 与XML相比较而言,使用JSON携带相同信息量的数据,文件所占空间要小很多,传 输速度更快,从另一个侧面将JSON占据的内存更小,其携带数据的高效率在构建数据仓库 的时候可W有效的提高数据存储的效率,提高磁盘的IO效率,进而提高数据的处理效率。
[0004] JSON解析相对XML要容易,JSON在几乎所有主流程序语言中都有非常轻便的解析 方法,而XML的解析过程要复杂地多,其文件还要借助DTD、schema等约束文件,因此JSON可 W有效地降低内存和CPU的资源消耗。
[0005] 现阶段的数据库中数据量成几何式增长,需要一种灵活轻便的数据格式存储数 据,关系型数据库已经无法适应大量异构或半异构的数据,有许多数据库WXML文档作为替 代,但是XML文档占用空间大,解析困难也成为了解决数据量极大的问题,JSON作为网络传 输文档格式具有轻便简介易解析的特点,可W很好地弥补XML文档的不足。
[0006] R树是B树在k维上的自然扩展,用空间对象的MBR来近似表达空间对象,根据地物 的M服建立財对,可W直接对空间中占据一定范围的空间对象进行索引。財对的每一个结点都 对应着磁盘页D和区域I,如果结点不是叶结点,则该结点的所有子结点的区域都在区域I的 范围之内,而且存储在磁盘页D中。如果结点是叶结点,那么磁盘页D中存储的将是区域I范 围内的一系列子区域,子区域紧紧围绕空间对象,一般为空间对象的外接矩形。R树作为空 间索引方法一直在数据库领域有很好地应用价值,为数据的捜索查询大大降低了磁盘IO次 数,提高了检索的效率。
[0007] 因此,需要提供一种基于JSON的数据仓库存储及查询方法。

【发明内容】

[000引本发明的一个目的在于提供一种基于JSON的数据仓库存储方法。
[0009] 为达到上述目的,本发明采用下述技术方案:
[0010] -种基于JSON的数据仓库存储方法,该存储方法包括W下步骤:
[0011] Sl:将JSON数据仓库分为键-节点标记数据仓库和值-路径标记数据仓库。
[0012 ] S2:解析JSON文档,具体包括识别键值对和分离键值对。
[OOK] S3:对JSON文档中的节点采用无重复排号的方法进行标记,对节点名称进行从1开 始的顺序标号,并对重复节点名称采用相同标号,从而构建节点标记。
[0014] S4:基于所述节点标记,对JSON文档中的值构建路径标记:
[0015] S401: W所述值的节点为出发节点向上一层节点捜索至根节点,记录各节点的标 记;
[0016] S402:将各节点标记按照从根节点到出发节点的顺序组成节点数组,该节点数组 为所述值的路径标记。
[0017] S5:将JSON文档中节点的键和所对应的节点标记组成键-节点标记对,检查键-节 点标记数据仓库中是否存在该节点的键-节点标记对,若是,则停止存储;若否,则检查键- 节点标记数据仓库中是否存在与该节点的键相同且节点标记对不同的键-节点标记对,若 是,则停止存储;若否,则将所述节点的键-节点标记对按照单层文档的方式存储到JSON文 件中。
[0018] S6:将所述节点的值和所对应的路径标记组成值-路径标记对,W路径标记为索 引,将所述值-路径标记对按照单层文档的方式依次存储到所述值-路径标记数据仓库中。
[0019] 优选地,值-路径标记数据仓库采用变种財对的形式,节点的路径标记作为该变种R 树中节点的键,节点的值包含在该变种R树对应叶节点中,变种財对中非叶节点产生指向叶 节点值的指针,在磁盘存储的该指针将已经标记好的节点标记作为关键指针。
[0020] -种基于JSON的数据仓库查询方法该查询方法包括W下步骤:
[0021] SI:接收查询指令;
[0022] S2:分析查询指令,解析查询关键词;
[0023] S3:通过键-节点标记数据仓库查找出关键词对应的节点标记查询点;
[0024] S4:将所有节点标记根据级别从高级至低级排列,构成路径标记查询域;
[0025] S5:通过路径标记查询域及变种財对的存储方式在值-路径标记数据仓库中锁定查 询数据的存储位置;
[0026] S6:返回所查询的结果,根据路径标记的层级关系,重新构成一个或者多个JSON文 档进行输出。
[0027] 优选地,对节点标记查询点的查找是基于对节点数字代号的查找进行的。
[002引本发明的有益效果如下:
[0029] 本发明提供的基于JSON的数据仓库存储及查询方法能够方便快捷的对JSON数据 仓库进行数据存储和查询,与XML相比较而言,使用JSON携带相同信息量的数据,文件所占 空间要小很多,传输速度更快,内存占据小,其携带数据的高效率在构建数据仓库的时候可 W有效的提高数据存储的效率。另外,值-路径标记W变种財对的方式存储在磁盘中,W节点 标记为一级索引,W路径标记为二级索引,可W大大降低磁盘的IO次数,提高磁盘的IO效 率,进而提高数据的处理效率。
【附图说明】
[0030] 下面结合附图对本发明的【具体实施方式】作进一步详细的说明。
[0031 ]图1示出基于JSON的数据存储及查询过程示意图。
[0032] 图2示出基于JSON的数据存储详细过程图解。
[0033] 图3示出基于JSON的数据查询详细过程图解。
[0034] 图4示出JSON文件在变种R树中的存储形式。
【具体实施方式】
[0035] 为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说 明。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应W此 限制本发明的保护范围。
[0036] 图1示出基于JSON的数据存储及查询过程示意图,本发明将结合附图通过W下具 体实施例对数据的存储及查询过程进行详细说明,其中,数据存储方法步骤如下所示:
[0037] SI:将所有存储到数据仓库的JSON文件进行解析,存储解析步骤如图2所示。
[0038] S2:解析存储过程中,首先读取JSON文档,识别JSON文档中的键值对,然后将每个 JSON文件中的不同节点分别分配顺序节点标记:由数字1开始进行标记,如果存在不同JSON 文件中的相同的节点名称,则采用最初的标记。
[0039] S3:每次节点标记完成,都将键与对应的节点标记存储在键-节点标记数据仓库 化ey-identifier data ware house,简称:KI仓库)中,并且保存为JSON文件,例如本实施 例中的JSON文件为:
[0040;
[0041 ] S4:将JSON文件中的值构建路径标记:路径标记的构建按照该值的对应键依次向 上一层捜索直至JSON文件根节点的规则进行,得到所有键的对应序列号,将运些序列号按 照级别从高级到低级的顺序依次排列同时使用逗号隔开,连接成为一组数组,并将该数组 定义为JSON文件中值的路径标记。
[0042] S5:将所得值与之对应的路径标记存储在数据仓库中,该仓库定义为值-路径标记 数据仓库(化Iue-Path Mark Da化Warehouse,简称:VP仓库)。
[0043] S6:按照去平衡R树的方式,将所有节点标记存储在JSON文档中,叶子节点存储 JSON文档的值,在非叶子节点处构建指向下一级别的指针,直至整个JSON文档路径标记的 根节点被包含进財对结构中来,本实施例中JSON文档变种R树示例程序为:
[0044]
[0045]
[0046] S7:图4示出JSON文件在变种R树中的存储形式,即W上文件在去平衡R树中可W表 示为图4中的状态:
[0047] 实施例中一共有4组数据,分别是:"John年龄35","Kevin年龄40" ; "Kate邮箱是 Kate@gmail .com","Bob邮箱是Bob@gmail .com" ; "JohruKevin是employeel中的员工","Bob 和Kate是employees中的员工";巧ob和Kevin在做projectl的项目"。
[004引 S8:根据标记规则将"company" "project]/' "employeel" "employees" "age" "name" "email"分别分配节点标记1,2,3,4,5,6,7。为避免数据仓库极大数据量下节点标记数字会 过大,最后一个数字标记不纳入节点标记的范畴,即对值的标记(而非JSON文档中间节点标 记)要求重新排列,即从1开始,并且仅限于同一个组的值才会有不同的标记。例如:John, Kevin同属于标记为3的组内,就要使用不同的标记1,2区别开;同理Kate,Bob同属于标记为 4的组内,也用1,2区别开,即将化hn,Kevin与Kate ,Bob作为组内节点分别标记1,2,因此图4 中各个值的路径标记是按照级别高低排列得到的。
[0049] 通过W上文的方法得到的是JSON文档的存储方式W及索引方式,图3示出基于 JSON的数据查询详细过程图解,本发明在此基础上提供了一种查询数据的方法;
[0化0] SI:接收查询指令;
[0051] S2:分析查询指令,解析查询关键词;
[0052] S3:通过键-节点标记数据仓库查找出关键词对应的节点标记查询点;
[0053] S4:将所有节点标记根据级别从高级至低级排列,构成路径标记查询域;
[0054] S5:通过路径标记查询域及变种財对的存储方式在值-路径标记数据仓库中锁定查 询数据的存储位置;
[0055] S6:返回所查询的结果,根据路径标记的层级关系,重新构成一个或者多个JSON文 档进行输出。
[0056] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对 本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可 W做出其它不同形式的变化或变动,运里无法对所有的实施方式予W穷举,凡是属于本发 明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。
【主权项】
1. 一种基于JSON的数据仓库存储方法,其特征在于,该存储方法包括以下步骤: S1:将JS0N数据仓库分为键-节点标记数据仓库和值-路径标记数据仓库; S2:解析JS0N文档; S3:对JS0N文档中的节点进行标记,构建节点标记; S4:基于所述节点标记,对JS0N文档中的值构建路径标记; S5 :将JS0N文档中节点的键和所对应的节点标记组成键-节点标记对,并存储到所述 键-节点标记数据仓库中; S6:将所述节点的值和所对应的路径标记组成值-路径标记对,并存储到所述值-路径 标记数据仓库中。2. 根据权利要求1所述的存储方法,其特征在于,所述步骤S2中解析JS0N文档具体包括 识别键值对和分离键值对。3. 根据权利要求1所述的存储方法,其特征在于,所述步骤S3中对JS0N文档中的节点进 行标记采用无重复排号的方法。4. 根据权利要求1或3所述的存储方法,其特征在于,所述无重复排号方法为对节点名 称进行从1开始的顺序标号,并对重复节点名称采用相同标号。5. 根据权利要求1所述的存储方法,其特征在于,所述步骤S4中对JS0N文档中的值构建 路径标记,具体包括: S401:以所述值的节点为出发节点向上一层节点搜索至根节点,记录各节点的标记; S402:将各节点标记按照从根节点到出发节点的顺序组成节点数组,该节点数组为所 述值的路径标记。6. 根据权利要求1-4中任一项所述的存储方法,其特征在于,所述步骤S5具体包括以下 步骤: S501:将JS0N文档中的节点的键和所对应的节点标记组成键-节点标记对; S502:检查键-节点标记数据仓库中是否存在该节点的键-节点标记对,若是,则停止存 储;若否,则执行步骤S503; S503:检查键-节点标记数据仓库中是否存在与该节点的键相同且节点标记对不同的 键-节点标记对,若是,则停止存储;若否,则执行步骤S504; S504:将所述节点的键-节点标记对按照单层文档的方式存储到JS0N文件中。7. 根据权利要求1-5中任一项所述的存储方法,其特征在于,所述步骤S6具体包括以下 步骤: S601:将所述值和所对应的路径标记组成值-路径标记对; S602:以路径标记为索引,将所述值-路径标记对按照单层文档的方式依次存储到所述 值-路径标记数据仓库中。8. 根据权利要求1或7所述存储的方法,其特征在于,所述值-路径标记数据仓库采用变 种R树的形式,其中,所述节点的路径标记作为该变种R树中节点的键,所述节点的值包含在 该变种R树对应叶节点中,所述变种R树中非叶节点产生指向叶节点值的指针。9. 一种针对权利要求1-8中任一项所述的存储方法的基于JS0N的数据仓库查询方法, 其特征在于,该查询方法包括以下步骤: S1:接收查询指令; S2:分析查询指令,解析查询关键词; S3:通过键-节点标记数据仓库查找出关键词对应的节点标记查询点; S4:将所有节点标记根据级别从高级至低级排列,构成路径标记查询域; S5:通过路径标记查询域及变种R树的存储方式在值-路径标记数据仓库中锁定查询数 据的存储位置; S6:返回所查询的结果,根据路径标记的层级关系,重新构成一个或者多个JSON文档进 行输出。10.根据权利要求9所述的查询方法,其特征在于,对所述节点标记查询点的查找是基 于对节点数字代号的查找进行的。
【文档编号】G06F17/30GK106021523SQ201610351689
【公开日】2016年10月12日
【申请日】2016年5月24日
【发明人】徐维祥, 赵博
【申请人】北京交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1