[发明专利]一种基于MongoDB的云端代码查询方法与装置有效
申请号: | 201410056117.1 | 申请日: | 2014-02-19 |
公开(公告)号: | CN103902651B | 公开(公告)日: | 2017-01-11 |
发明(设计)人: | 张天;赵济洲;李宣东 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 江苏银创律师事务所32242 | 代理人: | 孙计良 |
地址: | 210093 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 mongodb 云端 代码 查询 方法 装置 | ||
技术领域
本发明主要用于对云端代码进行存储和查询,涉及代码格式转换与数据库查询。
背景技术
近年来,越来越多的开源项目将代码存储在云中。为了方便地复用这些代码,需要在云端直接对其进行查询,特别是语义层面的查询。但这些代码的数据总量极大,相互之间还存在着异构性。现今的工作中,缺乏对大数据量异构代码的语义查询的支持。
No-sql数据库,也即非关系数据库,是近年来飞速发展的一类数据库。与传统关系数据库不同,非关系数据库去除了关系数据库的关系型特性,普遍使用key-value的方式来存储数据。非关系数据库克服了传统关系数据库难以扩展的问题,体现了数据之间的聚合性,更利于做集群,在架构层面上带来了可扩展的能力。得益于其的无关系性,在处理大数据量的时候,非关系数据库具有非常高的读写性能。针对代码的存储,非关系数据库能完整地保留代码的层次结构信息,不会遇到传统数据库的扁平化阻抗问题。
MongoDB便是典型的非关系数据库。它使用JSON语法风格,客户端提交或接收的数据都使用JSON形式来展现。MongoDB的所有的属性类型都支持索引。性能高效,速度很快,并且资源占用率很小。MongoDB支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能。非常适合用来存储大规模的项目源码。
JIns是一个以声明式方法定义查询规则的Java代码查询工具,定义了一套语法规则,并基于该规则得出一系列的查询规则。JIns查询规则分为属性查询和关系查询两种,对代码的语义性查询有着很好的支持。
TXL是一种特别的编程语言,设计用来支持源代码转换。经过了十多年的持续研究,这个基于规则的结构转换语言已经有了成熟的工具,并在相关工业领域内被广泛使用。
JDOM是Eclipse的一个开源包,可以快速而准确地进行XML格式与JSON格式的转换。
发明内容
本发明所要解决的问题是提供一种基于MongoDB的云端代码查询方法与装置。
为解决上述问题,本发明采用的方案如下:
一种基于MongoDB的云端代码查询方法,包括以下步骤:
S1:以TXL为中介工具将代码转换成JSON格式存入MongoDB;
S2:分析TXL的语法定义文件生成层次结构库;
S3:根据层次结构库将查询语句翻译成MongoDB的查询命令;
S4:调用MongoDB中的查询函数执行S3获得的查询命令;
其中,所述的步骤S1包括:
S10:使用TXL将代码转换为XML格式;
S11:使用JDOM将XML格式的代码转换为JSON格式;
S12:将JSON格式的代码存入MongoDB。
进一步,根据本发明的基于MongoDB的云端代码查询方法,所述的步骤S2包括以下步骤:
S20:根据TXL的语法定义文件构建定义关系图:将TXL的语法定义文件中的每一个定义作为定义关系图的节点,找出定义之间的关系构建节点之间的父子关系;
S21:对定义关系图进行深度优先遍历找出所有的叶节点与根节点之间的简单路径;
S22:对定义关系图进行遍历找出所有的环;
S23:将环与简单路径进行组合生成叶节点与根节点之间的所有路径。
进一步,根据本发明的基于MongoDB的云端代码查询方法,所述的步骤S3包括以下步骤:
S31:分析输入的查询语句抽取出查询条件以及查询目标;
S32:根据查询目标在层次结构库中查找对应的层次结构信息;
S33:将查询目标、目标的层次结构信息及查询条件组合生成MongoDB查询命令。
一种基于MongoDB的云端代码查询装置,包括:
用于以TXL为中介工具将代码转换成JSON格式存入MongoDB的装置;
用于分析TXL的语法定义文件生成层次结构库的装置;
用于根据层次结构库将查询语句翻译成MongoDB的查询命令的装置;
用于调用MongoDB中的查询函数执行S3获得的查询命令的装置;
其中,所述的用于以TXL为中介工具将代码转换成JSON格式存入MongoDB的装置包括:
用于使用TXL将代码转换为XML格式的装置;
用于使用JDOM将XML格式的代码转换为JSON格式的装置;
用于将JSON格式的代码存入MongoDB的装置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410056117.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种辅助汽车空调的装置
- 下一篇:平衡梁油包