[发明专利]一种支持多粒度查询的高性能非结构化数据存取协议有效

专利信息
申请号: 201110443773.3 申请日: 2011-12-27
公开(公告)号: CN102750300A 公开(公告)日: 2012-10-24
发明(设计)人: 王新宇;王新根;李善平;杨小虎 申请(专利权)人: 浙江大学
主分类号: G06F17/30 分类号: G06F17/30
代理公司: 杭州求是专利事务所有限公司 33200 代理人: 周烽
地址: 310058 浙江*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 支持 粒度 查询 性能 结构 数据 存取 协议
【权利要求书】:

1.一种支持多粒度查询的高性能非结构化数据存取协议,用于在一个客户端向多个分布式服务器的缓存中存取和查询多种类型的非结构化数据的具体实现,,其特征在于,该协议包括:

(1)普通数据存取协议的实现,即在一个客户端向多个分布式服务器的缓存中存取普通类型的非结构化数据的具体实现:

(1.1)普通数据存储协议的实现,包括实现以下两种命令:

客户端以“key”为主键,向缓存中存储“data block”,所存储的数据大小为“bytes”,数据有效期至“exptime”, 附加存储的数据为“flags”,命令格式如下:“set <key> <flags> <exptime> <bytes>/r/n <data block>/r/n”,若存储成功,则返回“STORED/r/n”:

客户端以“key”为主键,向缓存中存储“data block”,所存储的数据大小为“bytes”,数据有效期至“exptime”,所要求的数据版本号为“cas unique”,附加存储的数据为“flags”,命令格式如下: “cas <key> <flags> <exptime> <bytes> <cas unique>/r/n <data block>/r/n”, 如果输入的版本号存在且存储成功,则返回“EXISTS/r/n”, 如果输入的版本号不存在,则返回“NOT_FOUND/r/n”:

(1.2)普通数据获取协议的实现,包括实现以下两种命令:

客户端以“key”为主键,获取相应的“data block”,命令格式如下: “gets <key>*/r/n”;若获取数据成功,则返回“ <VALUE <key> <flags> <bytes> /r/n<data block>/r/n>*END/r/n”:

客户端以“key”为主键,获取相应的“data block”和相应的版本号,命令格式如下:“gets <key>*/r/n”;若获取数据成功,则返回“ <VALUE <key> <flags> <bytes> <cas unique>/r/n<data block>/r/n>*END/r/n”:

(1.3)数据删除命令的实现:

客户端在缓存中删除以“key”为主键的相应数据,命令格式如下:“delete <key>/r/n”,若删除成功,则返回“DELETED/r/n”,若以该“key”为主键的值不存在,则返回” NOT_FOUND/r/n”;

(1.4)获取缓存状态命令的实现:

客户端想获取服务器的状态列表,命令格式如下:“stats/r/n”,若获取状态成功,则返回“ <STAT <name> <value>/r/n>*END/r/n”:

流数据存取协议的实现,即在一个客户端向多个分布式服务器的缓存中存取流数据的具体实现:

(2.1)流数据存储协议的实现,包括实现以下两种命令:

客户端以“key”为主键,向缓存中存储数据帧(data frames),数据帧的格式如图1所示;

可见,数据帧的存储时分段实现的,每个分段的数据前加控制命令以表明该段数据的大小,因此可以存储大容量的数据并维持数据的一致性,数据有效期至“exptime”,附加存储的数据为“flags”,命令格式如下:“sset<key><flags><exptime>/r/n<data frames>/r/n”,若存储成功,则返回“STORED/r/n”;

客户端以“key”为主键,向缓存中存储data frames,所存储的数据版本号为“cas unique”,数据有效期至“exptime”,附加存储的数据为“flag”,命令格式如下:“scas<key><flags><exptime><cas unique>/r/n<data frames>/r/n”,如果输入的版本号存在且存储成功,则返回“EXISTS/r/n”;如果输入的版本号不存在,则返回“NOT_FOUND/r/n”;如果输入的数据格式不合要求,则返回“DATA_ERROR/r/n”;

(2.2)流数据获取协议的实现,包括实现以下两种命令:

客户端以”key”为主键,从缓存中获取某个数据中以“offset”为偏移量,大小为“bytes”的某个数据中的部分数据,命令格式如下:“sget <<key> <offset> <bytes>>*/r/n”,若数据获取成功,则返回“<VALUE <key> <flags> <offset> <bytes> /r/n<data block>/r/n>*END/r/n”;

客户端以“key”为主键,从缓存中获取某个数据中以“offset”为偏移量,大小为“bytes”的某个数据中的一块以及该数据的版本号,命令格式如下: “sgets <<key> <offset> <bytes>>*/r/n”,若数据获取成功,则返回“ <VALUE <key> <flags> <offset> <bytes> <cas unique>/r/n<data block>/r/n>*END/r/n”;

对象数据存取协议的实现,即在一个客户端向多个分布式服务器的缓存中存取对象数据的具体实现:

(3.1)对象数据存储协议的实现,包括实现以下两种命令:

客户端以“key[(.field)*]”表明其所要存取的数据在xml或json文件中的具体位置,向缓存中存取data block,数据有效期至“exptime”, 附加存储的数据为“flags”,命令格式如下:“<xmlset | jsonset> <key[(.field)*]> <flags> <exptime> <bytes>/r/n <data block>/r/n”,若存储成功,则返回“STORED/r/n”,若要存储的数据格式不合要求,则返回“DATA_ERROR/r/n”, 如果要存储的数据标签对应关系不正确,则返回“PARSE_ERROR/r/n”;

客户端以“key[(.field)*]”表明其所要存取的数据在xml或json文件中的具体位置,向缓存中存取data block,数据有效期至“exptime”, 附加存储的数据为“flags”, 所要求的数据版本号为“cas unique”,命令格式如下:“<xmlcas | jsoncas> <key[(.field)*]> <flags> <exptime> <bytes> <case unique>/r/n <data block>/r/n”,若输入的版本号存在且存储成功,则返回“EXISTS/r/n”,若输入的版本号不存在,则返回“NOT_FOUND/r/n”,若要存储的数据格式不合要求,则返回“DATA_ERROR/r/n”, 如果要存储的数据标签对应关系不正确,则返回“PARSE_ERROR/r/n”;

(3.2)普通数据获取协议的实现,包括实现以下两种命令:

客户端以“key[(.field)*]”表明要从缓存中的xml或jason文件的某个具体位置获取相应的数据,命令格式如下:“<xmlgets | jasongets> < key[(.field)*]>*/r/n”;如果数据获取成功,则返回“<VALUE < key[(.field)*]> <flags> <bytes>/r/n<data block>/r/n>*END/r/n”;

客户端以“key[(.field)*]”表明要从缓存中的xml或jason文件的某个具体位置获取相应的数据和其所对应的版本号,命令格式如下:“<xmlgets | jasongets> < key[(.field)*]>*/r/n”;如果数据获取成功,则返回“<VALUE < key[(.field)*]> <flags> <bytes> <cas unique>/r/n<data block>/r/n>*END/r/n”;

(3.3)对象数据删除命令的实现:

客户端在缓存中的xml或jason文件中的“key[(.field)*]”位置处删除相应内容,命令格式如下:“<xmldelete | jsondelete> <key[(.field)*]>/r/n”,若xml或jason文件中的对应内容已被删除成功,则返回” DELETED/r/n”,若xml或jason文件中不存在相应的“key[(.field)*]”位置的内容,则返回” NOT_FOUND/r/n”;

(4)查询协议的实现,即在一个客户端向多个分布式服务器的缓存中对数据键值和内容的复杂混合查询等的具体实现:

(4.1)键查询协议的实现,包括实现以下的命令:

客户端以“keyprefix”为数据主键的开头前置查询相关数据,命令格式如下: “query key.startwith(“<keyprefix>”) [KEY_ONLY]/r/n”,可选择返回查找到的数据主键还是整个数据,若数据获取成功,则返回查找到的键值、附加存储的内容“flags”、数据大小“bytes”,如果要求返回整个数据,则同时返回data block,格式如下: “<VALUE <key> <flags> <bytes>/r/n[<data block>/r/n]>*END/r/n”;

(4.2)正则查询协议的实现,包括实现以下的命令:

客户端以“regular expression”为正则表达式查询匹配该正则表达式的主键和主键所对应的数据,命令格式如下:“query key.like(“<regular expression>) [KEY_ONLY]/r/n”,可选择返回查找到的数据主键还是整个数据,若数据获取成功,则返回查找到的主键值、附加存储的内容”flags”、数据大小为“bytes”,如果要求返回整个数据,则同时返回data block,格式如下: “<VALUE <key> <flags> <bytes>/r/n[<data block>/r/n]>*END/r/n”;

(4.3)值查询协议的实现,包括实现以下的命令:

客户端以“regular expression”为正则表达式查询匹配该正则表达式的数据和数据所对应的主键,命令格式如下: “query value.querywith(“ <query expression>) [KEY_ONLY]/r/n”, 可选择返回查找到的数据主键还是整个数据,若数据获取成功,则返回查找到的主键值、附加存储的内容“flags”、数据大小为“bytes”,如果要求返回整个数据,则同时返回data block,格式如下: “<VALUE <key> <flags> <bytes>/r/n[<data block>/r/n]>*END/r/n”;值查询命令还可以支持多个运算符,比如‘>’、‘<’、‘>=’、‘<=’、‘=’、‘<>’、‘like’等,支持连接符,比如‘and’, ‘or’, ‘(’, ‘)’等,返回格式不变;

(4.4)混合查询协议的实现,包括实现以下的命令:

该查询是多个值查询以“and”和“or”相结合的复杂键值查询和值查询的实现方式,命令格式(举例)如下:“query key.startwith(keyprefix>”) and key.like(<regular expression>“) or value.querywith(query expression>“)/r/n”,返回格式同值查询相同

(4.5)建立索引的协议实现,包括实现以下的命令:

客户端对OO对象的某个子键建立索引,自动忽略非OO或者不含此子键的对象,命令格式如下:“vi <.field(.field)*>/r/n”,若索引已被成功创建,则返回“CREATED/r/n”;

(4.6)删除索引的协议实现,包括实现以下的命令:

客户端删除相应的索引,命令格式如下:“dvi <.field(.field)*>/r/n”,若索引删除成功,则返回“DELETED/r/n”若相应索引不存在,则返回” NOT_FOUND/r/n”;

(5)上述命令如果在使用时出错或程序运行在客户端或服务端出现其他错误,则会返回以下出错信息,如“ERROR/r/n,CLIENT_ERROR <error>/r/n,SERVER_ERROR <error>/r/n”。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201110443773.3/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top