CN102129469B - 一种面向虚拟实验的非结构化数据访问方法 - Google Patents
一种面向虚拟实验的非结构化数据访问方法 Download PDFInfo
- Publication number
- CN102129469B CN102129469B CN201110071143.8A CN201110071143A CN102129469B CN 102129469 B CN102129469 B CN 102129469B CN 201110071143 A CN201110071143 A CN 201110071143A CN 102129469 B CN102129469 B CN 102129469B
- Authority
- CN
- China
- Prior art keywords
- data
- request
- uri
- key
- return
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种面向虚拟实验的非结构化数据访问方法,步骤为:①为了避免大量小文件访问的磁盘IO、提高吞吐量,将对应于一个具体实验元器件的全部文件视为一个实验元器件对象,以该对象作为数据访问的最小单元;②数据更新操作所占比重较低,采用消息队列执行此类操作,数据修改操作异步执行,将应用与数据解耦,同时也解决了数据并发写入时的合并问题;③由于实验文件类型、格式不一,每一类数据都有其对应的解析模式,在进行数据解析时动态绑定相对应的模式;④根据虚拟实验中数据的学科相关性与具体实验相关性,预先加载热点访问数据所在学科或具体实验中定义的所有数据,与此同时,采用级联缓存结构,自顶向下缓存粒度逐渐加大,上层为下层缓存数据的子集;⑤为了独立于平台与语言,采用基于HTTP协议的REST架构,针对用户数据需求提供多种类型的RESTful接口,并提供基于URI的安全认证机制与复杂查询方法。
Description
技术领域
本发明属于计算机应用领域,具体涉及一种面向虚拟实验的非结构化数据访问方法,该方法适合于对虚拟实验中存在海量非结构化数据的复杂查询,并提供简单、统一、安全和高效的访问接口。
背景技术
随着信息化程度的提高,数据已超出它原始的范畴,它包含各种业务操作数据、报表统计数据、办公文档、电子邮件、超文本、表格、报告以及图片、音视频等各种数据信息。人们用海量数据来形容巨大的、空前浩瀚的、还在不断增长的数据。根据业界分析报告,非结构化数据占有整个信息量的85%以上,数据量极其庞大,是信息资源管理的核心。
作为传统实验教学的一种有效的补充,虚拟实验教学已经成为加强实践教学、提高教学质量的重要手段,它不仅可以在一定程度上代替传统的实验教学,而且可以克服传统实验的各种制约和弊端,从而有效地解决目前实验教学中迫切需要解决的规模与质量、实验资源不均衡等问题,达到优化教育资源、提高教学质量的目的。
在对虚拟实验中元元器件、实验场景等数据的统一建模、整合已有的虚拟实验资源并开发新的实验的过程中,包含了多种多样的文本、图片、flash、语音、视频等非结构化数据。非结构化数据是指不具有或者具有一定结构但语义不确定的数据,一般为文本、图像文件。在进行虚拟实验的过程中90%以上的数据请求都是这些非结构化数据,对它们的请求频率远高于对用户信息、用户权限等传统关系型数据,这类数据是进行虚拟实验的核心数据。因此,如何有效地组织管理非结构化数据、为上层应用程序数据访问提供支撑,依然是一个有待解决的问题。
非结构化数据包括文本、图像、音频、视频、PDF、电子表格等。非结构化数据存储通常有两种方式,但各自在存储非结构化数据方面存在一些缺点:
将非结构化数据以文件的方式存储在文件系统中,同时将指向文件的链接或路径存储在数据库表中。这种方式数据读写的速度较快,但数据管理会存在问题,无法实现文件的事务性访问,需要额外考虑事务处理的一致性和数据的安全性。
将非结构化数据存储在传统数据库表的二进制大对象字段(BLOB,Binary Large Object)中。这种方式充分利用数据库的事务、管理和安全特性,但在数据查询和读写性能不高,并且用户优化空间比较小。
近年来,为了满足非结构化数据的高效存储访问、高可用和高可扩展性,非关系型数据库技术的受到广泛关注。非关系型数据库打破了长久以来关系型数据库对ACID(Atomicity、Consistency、Isolation以及Durability)理论的依赖需求,数据存储不需要固定的表结构,通常也不存在连接操作。非关系型数据库在大数据存取操作上具备关系型数据库无法比拟的性能优势。目前实施的案例大多是面向Web 2.0应用,针对Web2.0的具体应用场景进行特定的改进,非结构化数据的存储与检索技术不具有普适性。改进和优化非结构化数据的存储与检索方法还处在研究与探索之中。
发明内容
本发明的目的在于提供一种面向虚拟实验的非结构化数据访问方法,该方法可以针对形式各异的海量非结构化数据建立索引、快速定位查找并提供统一访问接口,为虚拟实验的正确、稳定、高效运行提供存储支撑环境,同时提供了复杂查询方法以满足不同层次的需求。
本发明提供的一种面向虚拟实验的非结构化数据访问方法,其特征在于,其步骤包括:
(1)用户访问相应资源的URI,数据请求方法如果为POST,则进入步骤(2)执行POST请求;数据请求方法如果为GET,则进入步骤(3)执行GET请求;数据请求方法如果为DELETE,则进入步骤(4)执行DELETE请求;
(2)POST数据请求处理:
(2.1)进行安全认证,校验请求URI是否合法,如果不合法则结束该次请求;否则,对传入的数据进行哈希运算得到其键值,读取该类型数据对应的模式,进行数据提取,然后进入步骤(2.2);
(2.2)在文档数据库中匹配是否存在相同键值的数据,如果存在则进入步骤(2.3),否则进入步骤(2.4);
(2.3)更新文档数据库中信息,进行数据缓存,返回该键值;并结束该次请求;
(2.4)在文档数据库中添加该数据,进行数据缓存,返回该键值并结束该次请求;
(3)GET数据请求处理流程包括对数据本身的GET请求以及对数据索引的GET请求两个部分:
(3.1)数据GET请求:
(3.1.1)进行安全认证,校验请求URI是否合法,如果不合法则结束该次请求;否则,进入步骤(3.1.2);
(3.1.2)按照请求URI提供的键值,从系统缓存中获取其对应的数据,数据不为空则返回该数据,结束该次请求;否则,进入步骤(3.1.3);
(3.1.3)按照请求URI提供的键值,从文档数据库获取器对应的数据,如果不为空则进入步骤(3.1.4);否则,直接返回空数据结束该次请求;
(3.1.4)返回数据,进行数据缓存,结束该次请求;
(3.2)列表GET数据请求处理:
(3.2.1)进行复杂查询,获取满足查询语句的最终结果集;根据用户在URI中的设定,设置返回列表数据格式(支持XML、JSON);
(3.2.2)返回列表数据,然后对该请求URI进行哈希,进行数据缓存,结束该次请求;
(4)DELETE数据请求处理:
(4.1)进行安全认证,校验请求URI是否合法,如果不合法则结束该次请求;否则,进入步骤(4.2);
(4.2)按照请求URI提供的键值,从文档数据库将该键值对应的数据标记为不可用,进入步骤(4.3);
(4.3)删除系统缓存中该键值对应的数据,并返回该键值、结束该次请求。
本发明为了解决非结构化数据中存储组织形式、检索方法与检索效率中存在的问题,针对非结构化数据的特点并综合考虑现有成熟技术,设计了一种基于文档数据的非结构化数据存储检索方法,本发明具有以下几个特点:
(1)高可用与可扩展性。为了防止数据丢失或数据失效即保证数据的高可用性,将所有数据按照工业界的经验标准在不同的物理机上保留三个备份,同时采用异步写入策略以防止降低写入效率,为了保证在异步写入时能读取到正确的数据,采用NWR模型,N代表N个设备,W代表要写入至少W份才认为成功,R表示至少读取R个备份,要求W+R>N实现每次读取至少一个最新版本。在文档数据库系统上构建master-slave结构,通过不断增减slave节点实现扩展,并采用一致性哈希将数据散列分配,尽量减少由节点增删引起的数据移动。
(2)透明性。通过REST(REpresentational State Transfer)架构抽象所有非结构化数据为资源,映射到URI(Uniform Resource Identifier)上唯一对应,对所有资源实现CRUD(Create、Read、Update以及Delete)操作,降低了基于该系统接口二次开发的复杂性。暴露给用户的仅仅是URI,用户不必关心存储系统内部数据的组织形式、存储方式、容错处理以及处理方法,只需调用URI指向所需资源并附带动作命令GET、POST或DELETE执行对应的CRUD操作。
(3)安全性。在REST架构中,所有操作都是无状态的,在请求过程中不会带有Session和Cookie,即不会保存与会话相关的任何信息。基于这一特点,可以按照HTTP请求的方式以及链接对数据请求进行过滤,并采用数据摘要式安全认证杜绝非法访问。
(3)查询方式。结合现有的SQL语法以及对非结构化数据的查询需求,采用key-value的形式对SQL查询语法进行转换,通过WHERE、SKIP、LIMIT和SORT子句进行代数关系运算、集合运算,并实现基于正则表达式的模糊查询。
附图说明
图1是本发明的系统结构图;
图2是本发明的RESTful接口设计原则示意图;
图3是本发明方法的数据请求交互流程图;
图4是本发明的写入(更新)数据流程图;
图5是本发明的读取数据流程图;
图6是本发明的删除数据流程图;
图7是本发明的数据列表访问流程图;
图8是本发明的数据提取层设计示意图;
图9是本发明的级联缓存机制示意图;
图10是本发明的数字签名生成示意图;
图11是本发明的接口认证流程图;
图12是本发明的复杂查询实现流程图。
具体实施方式
本发明根据非结构化数据的特点,引入了一种基于REST架构的安全数据访问方法,可以优化非结构化数据存储、索引的构建以及检索的效率,并保证数据的安全性。在本发明的系统中,非结构化数据具有如下特点:
(1)文件大小相对较小,全都是小于1MB的文件;
(2)文件总数达到十万数量级,虚拟实验学科众多,每一学科也有很多具体实验,每一个具体实验中会对应很多不同种类的实验元器件;
(3)文件一旦写入就基本不会进行更改,改动频率低,数据读取操作占到了访问量的95%以上;
(4)文件类型、格式不一,数据格式很难预先确定;
(3.2.)文件之间有一定的学科相关性、具体实验相关性;
(6)访问这些数据的客户端也多种多样,具有平台差异(Linux、Windows操作系统等)和语言差异(C、C++、Java、Python等)。
下面针对这些特点结合附图对本发明做出详细说明:
1为了避免大量小文件访问的磁盘IO、提高吞吐量,将对应于一个具体实验元器件的全部文件(包括逻辑运算文件、图形可视化文件)视为一个实验元器件对象,以该对象作为数据访问的最小单元,并采用数据缓存;
2数据更新(写入、更新与删除)操作所占比重较低,因此采用消息队列执行此类操作,数据修改操作异步执行,将应用与数据解耦,同时也解决了数据并发写入时的合并问题;
3由于实验文件类型、格式不一,每一类数据都有其对应的解析模式,在进行数据解析时动态绑定相对应的模式;
4根据虚拟实验中数据的学科相关性与具体实验相关性,预先加载热点访问数据所在学科或具体实验中定义的所有数据,与此同时,采用级联缓存结构,自顶向下缓存粒度逐渐加大,上层为下层缓存数据的子集;
5为了独立于平台与语言,采用基于HTTP协议的REST架构,针对用户数据需求提供多种类型的RESTful接口,并提供基于URI的安全认证机制与复杂查询方法。
如图1所示,本发明方法所基于的基本组成部分包括:
数据访问层:采用REST架构,将数据访问抽象为简单、统一的接口,并提供复杂查询功能。使用数字签名的形式进行权限认证;
数据提取层:为每一类非结构化数据提供模式提取文件的属性以及数据。对于没有模式的非结构化数据则提取其元数据属性及其属性值。写入时采用消息队列,将应用与逻辑分离,降低系统延迟与写入丢失。对于数据的多个写入版本,以最后一次写入为准,单点写入,弱化一致性方面的开发难度;
索引同步层:在内存中以键值对的形式,保存所有非结构化数据索引信息以及热点访问数据。在对非结构化数据执行更新、添加或删除操作的同时,更新内存中的索引信息,尽量减少磁盘IO次数;
文件存储层:负责保证数据文件的高可靠性与高可用性,同时为防止单个文件目录过大、热点数据过于集中,需要将进行目录切分、数据移动,并更新索引表。当数据文件达到规定大小时将其进行归档、设置为只读。
本发明方法利用RESTful接口对所有数据资源提供POST(增加/更新)、GET(获取)、DELTE(删除)三种方法,这三种方法的访问都需要进行安全认证,并另外针对列表访问接口提供了复杂查询功能。结构如图2所示。
用户访问本系统(下文如无特别说明,均指按照本发明方法实现的系统)数据时,系统需要做出相应的处理,具体请求处理流程如图3所示,其中,POST数据请求处理流程如图4所示,数据GET请求如图5所示,列表GET数据请求处理流程如图7所示,DELETE数据请求处理流程如图6所示。
在上述过程中,涉及到数据提取、数据缓存、安全认证和复杂查询过程,下面举例具体说明其实现方式。
(A)数据提取过程:
数据提取层采用“可插拔”的设计,每一模式(schema)都可与一个或多个非结构化数据类型进行绑定以及取消绑定,即实现非结构化数据类型的注册/注销,针对其注册的类型提取模式中定义的关键字及其所对应的数据,如图8所示,按如下步骤实施:
(A1)数据提取层接收输入的数据,提取数据元数据信息或其在模式中定义的关键字及其所对应的数据;
(A2)将元数据信息与其所包含的模式类型进行匹配,并返回匹配成功之后的第一个对应模式,这样同时也解决了同一类型定义了多个模式的问题,其中返回结果为{key:value}形式的键值对;如果匹配失败,否则仅提取其元数据;
(A3)将解析的最终数据进行数据整合输出,结束该次请求。
(B)数据缓存过程:
为了提高系统的吞吐率和降低延迟,采用多级缓存机制。热点数据缓存、数据库缓存、文件系统缓存,让数据更加靠近用户,并逐渐增大缓存的粒度。同时,根据数据本身的相关性,预取一部分数据到缓存,用一部分命中率来换取数据访问的效率,如图9所示,其中,数据库文件包缓存含了全部的实验元器件对象(简称实验对象)数据,学科数据缓存包含了一个学科的全部实验对象数据,实验对象缓存中是部分来自数据库文件缓存和学科数据缓存的实验对象数据,列表数据缓存中存储的是部分实验对象的索引:
(B1)将最近使用的数据库文件从分布式文件系统缓存到本地文件系统,避免数据库文件网络传输,同时提高了数据的可用性;
(B2)实验对象为系统处理的基本数据单元,根据当前实验对象数据访问的热点(热点指访问量最大的实验对象),设置学科数据缓存,将热点数据所在的学科全部元器件一次性加载到内存。当前实验对象的热点改变时,再作废当前缓存数据重新载入新的学科数据;(B4)列表数据一直都是系统中的热点数据,按照查询URI的哈希值作为键值缓存列表数据。
(C)安全认证过程
为了独立于平台与语言,针对用户数据需求提供多种类型的RESTful接口,并提供基于URI的安全认证机制与复杂查询方法:
本系统采用数字签名的方式,对请求URI进行认证,流程如图10所示。其中,用户密钥:系统与用户约定的加密密文,保证该用户为认证用户;加密算法:系统与用户约定的加密算法;令牌:通过令牌数据库生成,仅用于标识一次请求,之后作废。系统与系统用户之间约定(或者定期变更)密钥,采用MD5进行加密,密钥用于验证用户是否为系统认证用户;在系统用户执行每一次请求时,需向系统请求令牌,用于标识用户的该次请求,用户执行完该次请求之后,该令牌作废。通过两次密钥请求的方式杜绝非法访问。具体步骤如下(如图11所示):
(C1)系统用户通过与系统约定的方式获取密钥;
(C2)系统用户每执行一次数据请求,均需生成此次数据请求的URI,通过URI标识此次请求的数据类别和键值;
(C3)系统用户向系统请求令牌,将该令牌与数据类别、键值等信息以及密钥作为加密字符串,获取数字签名,执行请求;
(C4)系统获取该次请求URI及数字签名,从请求URI中标识此次请求的数据类别、键值和令牌,判断数据库中是否存在该令牌,如果存在进入步骤(C5),否则返回空值并结束该次请求;
(C5)系统采用与系统用户约定的密钥,使用相同的方法生成数据签名,与请求URI中的数字签名进行比对,如果匹配则返回其键值,进入步骤(C6),否则返回空值,进入步骤(C6);
(C6)删除该次请求中所使用的令牌,结束该次请求。
(D)复杂查询过程:
在本系统中,复杂查询功能支持查询关键字where、skip、limit、sort,分别对应于查询条件、偏移量(数字,跳过多少条记录)、记录数(数字,取多少条记录)以及排序。这四个查询关键字可任意组合。用符号“&”进行连接,故在查询的字段和字段值中不允许带有特殊字符“&”、“?”、“=”。查询不区分大小写。系统收到用户的URI请求,对其进行解析转换为对应的数据查询语句。转换流程如图12所示。具体步骤如下:
(D1)解析查询字符串中的关键字,将关键字为where、skip、limit或sort的字符串及其所对应的值转换为{key:value}的键值对形式;
(D2)如果存在关键字where,则解析其所对应的值是否形如{字段:操作符:条件},详细定义如表1所示。如果是,则按照该筛选条件从文档数据库中取出满足条件的数据,进入步骤(D3);否则返回空列表数据,并结束该次请求;
表1 where查询语句
操作符 | 含义 | 条件字符串 |
$lt | less than,小于 | 字段:$lt:条件 |
$lte | less than equal,小于等于 | 字段:$lte:条件 |
$gt | great than,大于 | 字段:$gt:条件 |
$gte | great than equal,大于等于 | 字段:$gte:条件 |
$eq | equal,等于 | 字段:$eq:条件 |
$ne | not equal,不等于 | 字段:$ne:条件 |
$in | in,在列表中 | 字段:$in:数组 |
$nin | not in,不在列表中 | 字段:$nin:数组 |
(D3)如果存在关键字sort,则解析其所对应的值是否形如{字段:升序/降序},如果是,则按照指定字段进行升序或降序排序,进入步骤(D4);否则返回空列表数据,并结束该次请求;
(D4)如果存在关键字limit,则判断其值是否为正整数,如果是,则返回数量等于该正整数的结果集;否则返回空列表数据,并结束该次请求;
(D5)如果存在关键字skip,判断其值是否为正整数,如果是,则在返回结果集中剔除数量等于该正整数的结果;否则返回空列表数据,结束该次请求;
(D6)返回满足查询语句的最终结果集,结束该次请求。
实例:
系统配置如表2所示,有三台数据服务器,设置为主从模式,其中一台负责数据的增加、更新和删除,并与其余两台数据服务器进行数据同步,这两台数据服务器负责数据读取操作;一台应用服务器,用于处理应用请求,并且在该服务器上设置缓存服务器实例一个。
表2 测试实例硬件配置
机器(数量) | CPU | 内存 | 操作系统 |
数据服务器(3) | Xeon E7450 | 32G | RHEL 5.1 |
应用服务器(1) | Xeon E5520 | 16G | RHEL 5.3 |
缓存服务器(1) | Xeon E5520 | 16G | RHEL 5.3 |
测试用非结构化数据集中,每个文件大小介于3KB-600KB之间,单个文档数据库文件大小为36GB,因为做了数据同步,总共为108GB,每一个文档数据库文件包含共计70万条数据。在6万用户并发访问的情况下,持续保持正常访问,服务未出现异常以及延迟。
在底层采用不同存储引擎的情况下进行对比测试,分别为文档数据库(本系统采用)、文件系统与MySQL。采用600个线程进行模拟访问,本系统每秒执行请求236.48个,吞吐率为10996.96KB/s;文件系统每秒请求数为182.19个,吞吐率为5645.26KB/s;MySQL每秒请求数为157.35个,吞吐率为5641.29KB/s。相对应的TTFB AVG(首字节平均响应时间)和TTLB(末字节平均响应时间)如表2所示,这两项指标是衡量WEB服务最重要的指标之一,从中观察得到结论是本系统的平均响应延迟仅为其他两种方案的1/6~1/7。
表2 响应时间对比测试
综合上述结果,表明了这种基于REST架构的安全数据访问方法,能够保证整个系统的稳定运行,并且提供了非结构化数据存储检索的统一接口,简化了访问方式,大幅降低了上层应用的开发难度,与此同时,也进一步提高了系统的响应速率和吞吐率。
本发明方法不仅局限于上述具体实施方式,本领域一般技术人员根据本发明方法公开的内容,可以采用其它多种具体实施方式实施本发明方法,因此,凡是采用本发明方法的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明方法保护的范围。
Claims (1)
1.一种面向虚拟实验的非结构化数据访问方法,其特征在于,其步骤包括:
(1)用户访问相应资源的URI,数据请求方法如果为POST,则进入步骤(2)执行POST请求;数据请求方法如果为GET,则进入步骤(3)执行GET请求;数据请求方法如果为DELETE,则进入步骤(4)执行DELETE请求;
(2)POST数据请求处理:
(2.1)进行安全认证,校验请求URI是否合法,如果不合法则结束该次请求;否则,对传入的请求URI数据进行哈希运算得到其键值,读取该数据对应的模式,进行数据提取,然后进入步骤(2.2);
(2.2)在文档数据库中匹配是否存在相同键值的数据,如果存在则进入步骤(2.3),否则进入步骤(2.4);
(2.3)更新文档数据库中信息,进行数据缓存,返回该键值;并结束该次请求;
(2.4)在文档数据库中添加该数据,进行数据缓存,返回该键值并结束该次请求;
(3)GET数据请求处理流程包括对数据本身的GET请求以及对数据索引的GET请求处理流程两个部分:
(3.1)对数据本身的GET请求处理流程:
(3.1.1)进行安全认证,校验请求URI是否合法,如果不合法则结束该次请求;否则,进入步骤(3.1.2);
(3.1.2)按照请求URI提供的键值,从系统缓存中获取其对应的数据,数据不为空则返回该数据,结束该次请求;否则,进入步骤(3.1.3);
(3.1.3)按照请求URI提供的键值,从文档数据库获取其对应的数据,如果不为空则进入步骤(3.1.4);否则,直接返回空数据结束该次请求;
(3.1.4)返回数据,进行数据缓存,结束该次请求;
(3.2)对数据索引的GET请求处理流程:
(3.2.1)进行复杂查询,获取满足查询语句的最终结果集;根据用户在URI中的设定,设置返回列表数据格式;
(3.2.2)返回列表数据,然后对该请求URI进行哈希,进行数据缓存,结束该次请求;
(4)DELETE数据请求处理:
(4.1)进行安全认证,校验请求URI是否合法,如果不合法则结束该次请求;否则,进入步骤(4.2);
(4.2)按照请求URI提供的键值,从文档数据库将该键值对应的数据标记为不可用,进入步骤(4.3);
(4.3)删除系统缓存中该键值对应的数据,并返回该键值、结束该次请求;
所述数据提取的过程如下:
(A1)数据提取层接收输入的数据,提取数据的元数据信息或数据在模式中定义的关键字及关键字所对应的数据;
(A2)将元数据信息与其所包含的模式类型进行匹配,并返回匹配成功之后的第一个对应模式;
(A3)将经过(A1)和(A2)步骤的数据进行数据整合输出,结束该次请求;
所述数据缓存的过程如下:
(B1)将最近使用的数据库文件从分布式文件系统缓存到本地文件系统;
(B2)实验对象为系统处理的基本数据单元,根据当前实验对象的热点,设置学科数据缓存,将所述热点的数据所在的学科全部元器件一次性加载到内存;当前实验对象的热点改变时,再作废当前缓存数据重新载入新的学科数据,所述热点是指访问量最大的实验对象;
(B3)列表数据一直都是系统中的热点的数据,按照查询URI的哈希值作为键值缓存列表数据;
所述安全认证的过程如下:
(C1)系统用户通过与系统约定的方式获取密钥;
(C2)系统用户每执行一次数据请求,均需生成此次数据请求的URI,通过URI标识此次请求的数据类别和键值;
(C3)系统用户向系统请求令牌,将该令牌与数据类别、键值信息以及密钥作为加密字符串,利用加密算法生成数字签名,执行数据请求;
(C4)系统获取该次请求URI及数字签名,从请求URI中标识此次请求的数据类别、键值和令牌,判断数据库中是否存在该令牌,如果存在进入步骤(C5),否则返回空值并结束该次请求;
(C5)系统采用与系统用户约定的密钥,使用与步骤(C4)中所述数字签名的相同生成方法生成数据签名,与请求URI中的数字签名进行比对,如果匹配则返回步骤(C2)中得到的键值,进入步骤(C6),否则返回空值,进入步骤(C6);
(C6)删除该次请求中所使用的令牌,结束该次请求;
所述复杂查询的过程如下:
(D1)解析查询字符串中的关键字,将关键字为where、skip、limit或sort的字符串及其所对应的值转换为{key:value}的键值对形式;
(D2)如果存在关键字where,则解析其所对应的值是否形如{字段:操作符:条件},如果是,则按照该筛选条件从文档数据库中取出满足条件的数据,进入步骤(D3);否则返回空列表数据,并结束该次请求;
(D3)如果存在关键字sort,则解析其所对应的值是否形如{字段:升序/降序},如果是,则按照指定字段进行升序或降序排序,进入步骤(D4);否则返回空列表数据,并结束该次请求;
(D4)如果存在关键字limit,则判断其值是否为正整数N,如果是,则返回结果集的前N条记录,进入步骤(D5);否则返回空列表数据,并结束该次请求;
(D5)如果存在关键字skip,判断其值是否为正整数M,如果是,则在返回结果集中剔除前M条记录;否则返回空列表数据,结束该次请求;
(D6)返回满足查询语句的最终结果集,结束该次请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110071143.8A CN102129469B (zh) | 2011-03-23 | 2011-03-23 | 一种面向虚拟实验的非结构化数据访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110071143.8A CN102129469B (zh) | 2011-03-23 | 2011-03-23 | 一种面向虚拟实验的非结构化数据访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102129469A CN102129469A (zh) | 2011-07-20 |
CN102129469B true CN102129469B (zh) | 2014-06-04 |
Family
ID=44267551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110071143.8A Expired - Fee Related CN102129469B (zh) | 2011-03-23 | 2011-03-23 | 一种面向虚拟实验的非结构化数据访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102129469B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102368217A (zh) * | 2011-10-20 | 2012-03-07 | 镇江睿泰信息科技有限公司 | 一种元数据驱动的rest风格应用开发方法与系统 |
CN102541759B (zh) * | 2011-12-28 | 2014-12-17 | 畅捷通信息技术股份有限公司 | 缓存控制装置和缓存控制方法 |
CN102750354B (zh) * | 2012-06-11 | 2014-08-20 | 清华大学 | 一种非结构化数据查询操作语言的解析与处理方法 |
CN103064915B (zh) * | 2012-12-20 | 2015-12-23 | 北京讯鸟软件有限公司 | 一种支持事实数据变更的关键绩效指标局部重算方法 |
CN103220285B (zh) * | 2013-04-10 | 2016-09-28 | 中国科学技术大学苏州研究院 | 泛在业务环境下基于RESTful接口的接入系统 |
US9495420B2 (en) * | 2013-05-22 | 2016-11-15 | International Business Machines Corporation | Distributed feature collection and correlation engine |
CN103414568A (zh) * | 2013-08-14 | 2013-11-27 | 成都卫士通信息产业股份有限公司 | 一种消息队列产品中传输消息的安全保护方法 |
CN104424258B (zh) * | 2013-08-28 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 多维数据查询的方法、查询服务器、列存储服务器及系统 |
CN103488702A (zh) * | 2013-09-06 | 2014-01-01 | 云南电力试验研究院(集团)有限公司电力研究院 | 基于SorlCloud非结构化数据检索方法和系统 |
US8924850B1 (en) | 2013-11-21 | 2014-12-30 | Google Inc. | Speeding up document loading |
CN103678716B (zh) * | 2013-12-31 | 2017-01-04 | 中国科学院深圳先进技术研究院 | 一种基于格式数据集的分布式数据存储与计算方法 |
CN103744952A (zh) * | 2014-01-02 | 2014-04-23 | 北京集奥聚合网络技术有限公司 | NoSQL数据库多表特性的实现方法及系统 |
CN104809124B (zh) * | 2014-01-24 | 2018-06-26 | 中国移动通信集团河北有限公司 | 云虚拟文件系统及其输入/输出请求处理方法 |
CN103761102B (zh) * | 2014-01-26 | 2017-05-31 | 中国联合网络通信集团有限公司 | 一种统一数据服务平台及其实现方法 |
CN104484136B (zh) * | 2014-12-25 | 2017-09-29 | 深圳联友科技有限公司 | 一种可支撑高并发内存数据的方法 |
CN105119917B (zh) * | 2015-08-21 | 2018-03-06 | 福建天晴数码有限公司 | 增强数据安全性的方法及系统 |
CN105117347B (zh) * | 2015-09-24 | 2018-09-28 | 上海爱数信息技术股份有限公司 | 测试数据的模拟方法、系统及自动化测试方法、系统 |
CN107122418A (zh) * | 2017-03-31 | 2017-09-01 | 北京奇艺世纪科技有限公司 | 一种查询方法及装置 |
CN108737556A (zh) * | 2018-05-29 | 2018-11-02 | 郑州云海信息技术有限公司 | 一种处理rest请求的方法、装置及设备 |
CN109324958B (zh) * | 2018-06-27 | 2021-10-29 | 郑州云海信息技术有限公司 | 一种rest统一校验方法、装置、设备及可读存储介质 |
CN110928527B (zh) * | 2018-09-20 | 2023-05-09 | 北京国双科技有限公司 | 排序方法及装置 |
CN111782694B (zh) * | 2020-06-28 | 2023-10-20 | 百度在线网络技术(北京)有限公司 | 一种信息写入方法、装置以及电子设备 |
CN113282854A (zh) * | 2021-06-01 | 2021-08-20 | 平安国际智慧城市科技股份有限公司 | 数据请求响应方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510206A (zh) * | 2009-02-19 | 2009-08-19 | 北京思普科科技开发有限公司 | 一种非结构化数据查询方法 |
-
2011
- 2011-03-23 CN CN201110071143.8A patent/CN102129469B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510206A (zh) * | 2009-02-19 | 2009-08-19 | 北京思普科科技开发有限公司 | 一种非结构化数据查询方法 |
Non-Patent Citations (1)
Title |
---|
李浩等.一种面向虚拟实验的非结构化数据存储方法.《实验室研究与探索》.2010,第29卷(第10期),第263-265页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102129469A (zh) | 2011-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102129469B (zh) | 一种面向虚拟实验的非结构化数据访问方法 | |
JP7113040B2 (ja) | 分散型データストアのバージョン化された階層型データ構造 | |
JP7050931B2 (ja) | クライアント同期更新の効率的な管理 | |
Corbellini et al. | Persisting big-data: The NoSQL landscape | |
US10740319B2 (en) | Graph-based data models for partitioned data | |
US11914585B2 (en) | Servicing queries of a hybrid event index | |
US10261996B2 (en) | Content localization using fallback translations | |
Li et al. | An integration approach of hybrid databases based on SQL in cloud computing environment | |
Ma et al. | A transparent data middleware in support of multi-tenancy | |
US11789971B1 (en) | Adding replicas to a multi-leader replica group for a data set | |
US11188228B1 (en) | Graphing transaction operations for transaction compliance analysis | |
Ma | Research and implementation of distributed storage system based on big data | |
CN117435559B (zh) | 元数据分层管理方法、装置、存储介质及电子设备 | |
US11789947B2 (en) | Independent object generator and wrapper engine | |
CN110196871B (zh) | 数据入库方法和系统 | |
Lin | ADO. NET Database Access Technology | |
Calvaresi | Building a Distributed Search System with Apache Hadoop and Lucene | |
Huawei Technologies Co., Ltd. | Introduction to Databases | |
Kushe et al. | Evaluation of Techniques for Improving Performance and Security in Relational Databases | |
Mohammad et al. | A survey and classification of data management research approaches in the cloud | |
CN115277242A (zh) | 一种数字对象的访问控制方法及装置 | |
CN116662373A (zh) | 一种数据访问控制方法、装置、设备及介质 | |
Zhou | Scalable data management for web applications | |
Bukhari et al. | NoSQL Data Stores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140604 Termination date: 20200323 |