GB/T 31916.5-2015 信息技术 云数据存储和管理 第5部分:基于键值(Key-Value)的云数据管理应用接口
- 名 称:GB/T 31916.5-2015 信息技术 云数据存储和管理 第5部分:基于键值(Key-Value)的云数据管理应用接口 - 下载地址1
- 下载地址:[下载地址1]
- 提 取 码:
- 浏览次数:3
发表评论
加入收藏夹
错误报告
目录| 新闻评论(共有 0 条评论) |
资料介绍
ICS 35. 100. 05 L 79
中 华 人 民 共 和 国 国 家 标 准
GB/T 31916.5—2015
信息技术 云数据存储和管理
第 5 部分 :基于键值(Key-Value)的
云数据管理应用接口
Information technology—Clouddatastorageand management—
Part5: Key-Valuebased clouddata managementapplication interface
2015-09-11发布 2016-05-01实施
中华人民共和国国家质量监督检验检疫总局中 国 国 家 标 准 化 管 理 委 员 会
发
布
GB/T 31916.5—2015
前 言
GB/T 31916《信息技术 云数据存储和管理》分为六部分 :
— 第 1部分 :总则 ;
— 第 2部分 :基于对象的云存储应用接 口 ;
— 第 3部分 :分布式文件存储应用接 口 ;
— 第 4部分 :基于块的云存储应用接 口 ;
— 第 5部分 :基于键值(Key-Value)的云数据管理应用接 口 ;
— 第 6部分 : 分布式关系数据库应用接 口 。
本部分为 GB/T 31916的第 5部分 。
本部分按照 GB/T 1. 1—2009给出的规则起草 。
请注意本文件的某些内容可能涉及专利 。本文件的发布机构不承担识别这些专利的责任 。
本部分由全国信息技术标准化技术委员会(SAC/TC28)提出并归 口 。
本部分起草单位 : 东北大学软件学院 、中国移动通信有限公司研究 院 、中 国 电 子 技 术 标 准 化 研 究院 、东软集团 、用友软件股份有限公司 、上海计算机软件技术开发中心 、浪潮(北京)电子信息产业有限公司 、华为技术有限公司 、开普互联信息有限公司 、华中科技大学 、北京邮电大学 。
本部分主要起草人 :宋杰 、杜宇健 、王洁萍 、蔡立志 、余祥 、颜秉珩 、李海波 、何光宇 、陈岭 、郑峻 、田忠 、丁蔚 、周可 、吴涛 、刘建毅 、陈志峰 、王卫国 、丛培勇 、杨丽蕴 、朱志良 。
信息技术 云数据存储和管理
第 5 部分 :基于键值(Key-Value)的
云数据管理应用接口
1 范围
GB/T 31916的本部分给出了键值数据模型 ,规定了键值的云数据管理应用接口通用要求和接口定义。本部分适用于基于键值的云数据管理系统的设计 、开发和使用 。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的 。凡是注 日期的引用文件 ,仅注 日期的版本适用于本文件 。凡是不注日期的引用文件 ,其最新版本(包括所有的修改单)适用于本文件 。
GB/T 7408—2005 数据元和交换格式 信息交换 日期和时间表示法
GB/T 18793—2002 信息技术 可扩展置标语言(XML)1. 0
GB/T 31916. 1 信息技术 云数据存储和管理应用接 口 第 1部分 : 总则
RFC2616 超文本传输协议(HTTP)1.1(HypertextTransferProtocolHTTP/1.1)
3 术语、定义和缩略语
3. 1 术语和定义
GB/T 31916界定的以及下列术语和定义适用于本文件 。
3. 1. 1
基于键值的云数据管理 Key-Valuebased cloud data management
一种以键值数据模型组织数据 , 以服务的方式对外提供对键值数据模型中各种数据对象操作的数据管理方式 。
3.2 缩略语
下列缩略语适用于本文件 。
ACID 原子性 、一致性 、隔离性 、持久性(Atomicity,Consistency,Isolation,Durability)
API 应用程序编程接口(Application Programming Interface)
BASE 基本可用 、软状态 、最终一致(Basically Available,Softstate,EventualConsistency)
CURD 创建 、更新 、读取 、删除(Create,Update,Read,Delete)
HTTP 超文本传输协议(HypertextTransferProtocol)
JSON JavaScript对象标记(JavaScriptObjectNotation)
XML 可扩展置标语言(Extensible Markup Language)
4 Key-Value数据模型
Key-Value数据模型的组成如图 1所示 。
GB/T 31916.5—2015
图 1 Key-Value数据模型
Key-Value数据模型用来描述实体及其属性 。
注 1: 实体是现实世界中任何可区分 、可识别的客观事物 、抽象事件 , 以及事物与事物之间的联系 。
注 2: 属性是实体的特征 ,一个实体可用若干属性来描述 。属性包括属性名和属性值 。
Key-Value数据模型的组成元素包括表 、行 、列和时间戳 。表是由行组成的数据集合 。 每行描述 一个实体 。不同的行由不同的行键(R) 来唯一标识 。行中的数据由三元组(K,V,T) 组成 。其中 ,“K”代表列名 ,“V”代表列值 ,“T”代表时间戳 。列名描述实体的属性名 ,列值描述实体的属性值 。 时间戳用来标记列值的版本信息 。通过三元组(R,K,T)可以唯一地标识实体属性值 。
5 基于 Key-Value的云数据管理应用接口通用要求
5. 1 概述
基于 Key-Value的云数据管理应用接口通用要求包括接口协议 、身份安全管理 、数据一致性要求 、状态码信息描述 、补充出错信息 、公共请求头 、公共响应头和出错信息描述要求 8项内容 。其中 ,接口协议 、身份安全管理 、状态码信息描述和出错信息描述要求 4项内容见 GB/T 31916. 1 中相应部分 。
5.2 数据一致性要求
云数据管理为保证数据的 BASE特性 ,应满足数据的最终一致性要求 。基于 Key-Value 的云数据管理宜满足数据强一致性要求 。在可用性 、容错性占主导时可降低为数据最终一致性要求 。
注 : 数据管理系统存在强一致性和最终一 致 性 两 种 一 致 性 要 求 。关 系 数 据 库 管 理 系 统 为 保 证 数 据 的 ACID 特 性 ,应满足数据的强一致性要求 。强一 致 性 指 在 数 据 更 新 完 成 后 , 任 何 后 续 访 问 都 将 返 回 更 新 过 的 值 ; 最 终 一 致性 :存储系统保证如果对象没 有 新 的 更 新 , 最 终(在 不 一 致 窗 口 关 闭 之 后) 所 有 访 问 都 将 返 回 最 后 更 新 的 值 。 ACID 的概念引用 GB/T 17173. 1—1997。
5.3 补充出错信息
基于 Key-Value的云数据管理发生的出错响应较为复杂,需要对 HTTP(见 RFC2616) 状态码进行补充出错信息描述 。
补充出错信息描述见附录 A。
5.4 公共请求头
公共请求头应包括信息见表 1。
表 1 公共请求头信息
5.5 公共响应头
公共响应头应包括信息见表 2。
表 2 公共响应头信息
6 基于 Key-Value的云数据管理应用接口定义
6. 1 概述
基于 Key-Value的云数据管理应用接口包括表级操作接口和行级操作接 口 。表级操作包括 :
a) 列出账号所有表 ;
b) 创建表 ;
c) 删除表 ;
d) 获取元数据 ;
e) 添加/更新元数据 。
行级操作包括 :
a) 插入/更新数据 ;
b) 删除数据 ;
c) 获取数据 ;
d) 条件表达式查询数据 。
6.2 列出账号所有表
6.2. 1 功能描述
列出给定账户下所有表的名称 。
结果数据集由多个表的名称组成 ,结果数据集为 XML格式(见 GB/T 18793—2002) , 由响应消息体返回到客户端 。
6.2.2 请求定义
请求定义表述为 :
GET/[Account] HTTP/1.1
6.2.3 请求 URL
请求 URL表述为 :
http://example. clouddb. cn/[Account]
其中 : [Account]表示账户 ID。
6.2.4 请求消息头
按公共请求头定义 。
6.2.5 请求消息体
无 。
6.2.6 响应状态码
状态码包括 200,400,401,405,406,408,500,501,503。
6.2.7 响应消息头
按公共响应头定义 。
6.2. 8 响应消息体
当返回 200时 , 响应消息体应包含信息见表 3。
表 3 响应消息体信息
当返回 400时 ,消息体包含的错误名称为 DateSkewed。
当返回 401时 ,消息体包含的错误名称为 AccountNotExist、Unauthorized、MissingAuthorization、 AccountProblems、AccountDisabled之一 。
当返回 405时 ,消息体包括的错误名称为 MethodNotAllowed。
当返回 406时 ,消息体包括的错误名称为 NotAcceptable。
当返回 408时 ,消息体包括的错误名称为 RequestTimeout。
当返回 500时 ,消息体包括的错误名称为 InternalServerError。当返回 501时 ,消息体包括的错误名称为 NotImplemented。
当返回 503时 ,消息体包括的错误名称为 ServiceUnavailable。
6.2.9 示例
请求消息见示例 1。
示例 1:
GET/MyAccountHTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
Content-type: text/xml
响应消息见示例 2。
示例 2:
HTTP/1.1200OK
Content-Type: text/xml
Table001
Table002
6.3 创建表
6.3. 1 功能描述
创建一张新的数据表 ,表名在同一账户下唯一 。
6.3.2 请求定义
请求定义表述为 :
PUT/[Account]/[Table] HTTP/1.1
6.3.3 请求 URL
请求 URL表述为 :
http://example. clouddb. cn/[Account]/[Table]
其中 : [Account]表示账户 ID, [Table]表示表名 。
6.3.4 请求消息头
按公共请求头定义 。
6.3.5 请求消息体
无 。
6.3.6 响应状态码
状态码包括 201,400,401,403,405,408,409,500,501,503。
6.3.7 响应消息头
按公共响应头定义 。
6.3. 8 响应消息体
当返回 201时 ,无消息体 。
当返回 400时 ,消息体包含的错误名称为 InvalidTableName、DateSkewed之一 。
当返回 401时 ,消息体包含的错误名称为 AccountNotExist、Unauthorized、MissingAuthorization、 AccountProblems、AccountDisabled之一 。
当返回 403时 ,消息体包含的错误名称为 TableAlreadyExist。
当返回 405时 ,消息体包含的错误名称为 MethodNotAllowed。
当返回 408时 ,消息体包含的错误名称为 RequestTimeout。
当返回 409时 ,消息体包含的错误名称为 TooManyTables。
当返回 500时 ,消息体包含的错误名称为 InternalServerError。
当返回 501时 ,消息体包含的错误名称为 NotImplemented。
当返回 503时 ,消息体包含的错误名称为 ServiceUnavailable。
6.3.9 示例
请求消息见示例 1。
示例 1:
PUT/MyAccount/MyTable HTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
响应消息见示例 2。
示例 2:
HTTP/1.1201Created
6.4 删除表
6.4. 1 功能描述
删除一张表 ,表中包含的行及其列同时被删除 。
6.4.2 请求定义
请求定义表述为 :
DELETE/[Account]/[Table] HTTP/1.1
6.4.3 请求 URL
http://example. clouddb. cn/[Account]/[Table]
其中 : [Account]表示账户 ID, [Table]表示表名 。
6.4.4 请求消息头
按公共请求头定义 。
6.4.5 请求消息体
无 。
6.4.6 响应状态码
状态码包括 204,400,401,404,405,408,500,501,503。
6.4.7 响应消息头
按公共响应头定义 。
6.4. 8 响应消息体
当返回 204时 ,无消息体 。
当返回 400时 ,消息体包含的错误名称为 InvalidRequestBody、DateSkewed之一 。
当返回 401时 ,消息体包含的错误名称为 AccountNotExist、Unauthorized、MissingAuthorization、 AccountProblems、AccountDisabled之一 。
当返回 404时 ,消息体包含的错误名称为 TableNotExist。
当返回 405时 ,消息体包含的错误名称为 MethodNotAllowed。
当返回 408时 ,消息体包含的错误名称为 RequestTimeout。
当返回 500时 ,消息体包含的错误名称为 InternalServerError。
当返回 501时 ,消息体包含的错误名称为 NotImplemented。
当返回 503时 ,消息体包含的错误名称为 ServiceUnavailable。
6.4.9 示例
请求消息见示例 1。
示例 1:
DELETE/MyAccount/MyTable HTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
响应消息见示例 2。
示例 2:
HTTP/1.1204OK
6.5 获取元数据
6.5. 1 功能描述
获得一张表的元数据信息 ,元数据包括系统元数据和用户 自定义元数据 。
系统元数据包括表创建时间 、表拥有者 、表中行个数 、表中不同的列名的列的个数 、表中 Key/Value对的个数 、表中所有数据的总大小 、表中所有行键的大小 、表中所有列名的大小 、表中所有列值的大小和表中所有时间戳的大小 。各个系统元数据项可选 ,也可扩充新的系统元数据项 。
用户 自定义元数据为用户添加的文本格式的元数据 ,可以是纯文本 、XML、JSON 等数据格式 。各个用户 自定义元数据项可选 ,也可扩充新的用户 自定义元数据项 。
结果数据集为 XML格式 ,通过响应消息体返回到客户端 。
注 : 数据大小以千字节(kb)为单位 。
6.5.2 请求定义
请求定义表述为 :
GET/[Account]/[Table] HTTP/1.1
6.5.3 请求 URL
请求 URL表述为 :
http://example. clouddb. cn/[Account]/[Table]
其中 : [Account]表示账户 ID, [Table]表示表名 。
6.5.4 请求消息头
按公共请求头定义 。
6.5.5 请求消息体
无 。
6.5.6 响应状态码
状态码包括 200,400,401,404,405,406,408,500,501,503。
6.5.7 响应消息头
按公共响应头定义 。
6.5. 8 响应消息体
当返回 200时 , 响应消息体应包括信息见表 4。
表 4 响应消息体信息
表 4 (续)
当返回 400时 ,消息体包含的错误名称为 DateSkewed。
当返回 401时 ,消息体包含的错误名称为 AccountNotExist、Unauthorized、MissingAuthorization、 AccountProblems、AccountDisabled之一 。
当返回 404时 ,消息体包含的错误名称为 TableNotExist。
当返回 405时 ,消息体包含的错误名称为 MethodNotAllowed。
当返回 406时 ,消息体包含的错误名称为 NotAcceptable。
当返回 408时 ,消息体包含的错误名称为 RequestTimeout。
当返回 500时 ,消息体包含的错误名称为 InternalServerError。
当返回 501时 ,消息体包含的错误名称为 NotImplemented。
当返回 503时 ,消息体包含的错误名称为 ServiceUnavailable。
6.5.9 示例
请求消息见示例 1。
示例 1:
GET/MyAccount/MyTable HTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
响应消息见示例 2。
示例 2:
HTTP/1.1200OK
Content-Type: text/xml
< Metadata>
20110503T173008+08
MyCount
999
999
999
999
999
999
999
999
{
"Subject": "I like Key-ValueDB",
"Author": "Rusty",
"Tags": [ "DB", "key-value", "cloud"] .
}
6.6 添加/更新元数据
6.6. 1 功能描述
添加或者更新一张表的用户 自定义元数据 。
6.6.2 请求定义
请求定义表述为 :
POST/[Account]/[Table] HTTP/1.1
6.6.3 请求 URL
http://example. clouddb. cn/[Account]/[Table]
其中 :
[Account]表示账户 ID;
[Table]表示表名 ;
[Type]为用户定义的请求消息体类型 ,如 text/plain、text/xml或 application/json; [User-defined Metadata inrequestbody]表示用户提交的自定义元数据 。
6.6.4 请求消息头
用户需指定 Content-type。
6.6.5 请求消息体
用户 自定义 。
6.6.6 响应状态码
状态码包括 201,204,400,401,404,405,408,409,413,415,500,501,503。
如果创建元数据成功 , 响应状态码为 201;如果更新元数据成功 , 响应状态码为 204。
6.6.7 响应消息头
按公共响应头定义 。
6.6. 8 响应消息体
当返回 201时 ,无消息体 。
当返回 204时 ,无消息体 。
当返回 400时 ,消息体包含的错误名称为 InvalidRequestBody、DateSkewed之一 。
当返回 401时 ,消息体包含的错误名称为 Unauthorized、MissingAuthorization、AccountProblems、 AccountDisabled之一 。
当返回 404时 ,消息体包含的错误名称为 TableNotExist。
当返回 405时 ,消息体包含的错误名称为 MethodNotAllowed。
当返回 408时 ,消息体包含的错误名称为 RequestTimeout。
当返回 409时 ,消息体包含的错误名称为 TooLargeMetadata。
当返回 413时 ,消息体包含的错误名称为 RequestEntityTooLarge。
当返回 415时 ,消息体包含的错误名称为 UnsupportedMediaType。
当返回 500时 ,消息体包含的错误名称为 InternalServerError。
当返回 501时 ,消息体包含的错误名称为 NotImplemented。
当返回 503时 ,消息体包含的错误名称为 ServiceUnavailable。
6.6.9 示例
请求消息见示例 1。
示例 1:
POST/MyAccount/MyTable HTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
Content-type: application/json
{
"Subject": "I like Key-ValueDB",
"Author": "Rusty",
"PostedDate": "20110503T173008+08",
"Tags": [ "DB", "key-value", "cloud"] .
}
响应消息见示例 2。
示例 2:
HTTP/1.1201Created
6.7 插入/更新数据
6.7. 1 功能描述
创建或更新多个列 ,并指定其列值 。
用户提供的输入数据集由多个行组成 。每个行包含唯一行键和若干列名与列值组成键/值对 ,数据集为 XML格式 , 随请求消息体发送到服务端 。
对于插入/更新数据的某行数据 ,如果目标数据表中行键不存在 ,则在目标数据表中插入该新行 。
对于插入/更新数据的某行数据 ,如果目标数据表中行键存在 :若指定列不存在 ,则在该行中增加新列 ,并自动分配时间戳 ;若指定列存在 ,则更新该列 ,并自动分配时间戳 。
数据管理系统需要对数据库中每张表的最大行数 ,每行的最大列数 ,或表的最大数据量进行限定 。若插入/更新操作超过了数据管理系统的限定 ,则操作失败 。
6.7.2 请求定义
请求定义表述为 :
PUT/[Account]/[Table]/Row HTTP/1.1
6.7.3 请求 URL
请求 URL表述为 :
http://example. clouddb. cn/[Account]/[Table]/Row
其中 : [Account]表示账户 ID, [Table]表示表名 。
6.7.4 请求消息头
按公共请求头定义 。
6.7.5 请求消息体
请求消息体应包括信息见表 5。
表 5 请求消息体
6.7.6 响应状态码
状态码包括 200,201,204,400,401,404,405,408,409,413,415,500,501,503。
如果数据插入成功 , 响应状态码为 200;如果数据更新成功 , 响应状态码为 204;如果两者均发生且成功 , 响应状态码为 200。
6.7.7 响应消息头
按公共响应头定义 。
6.7. 8 响应消息体
当返回 200时 ,无消息体 。
当返回 201时 ,无消息体 。
当返回 204时 ,无消息体 。
当返回 400 时 , 消 息 体 包 含 的 错 误 名 称 为 InvalidRequestBody、InvalidRowKey、InvalidColumn- Name、InvalidColumnValue、DateSkewed之一 。
当返回 401时 ,消息体包含的错误名称为 AccountNotExist、Unauthorized、MissingAuthorization、 AccountProblems、AccountDisabled之一 。
当返回 404时 ,消息体包含的错误名称为 TableNotExist。
当返回 405时 ,消息体包含的错误名称为 MethodNotAllowed。
当返回 408时 ,消息体包含的错误名称为 RequestTimeout。
当返回 409时 ,消息体包含的错误名称为 TooLargeData、TooManyRows、TooManyColumns之一 。当返回 413时 ,消息体包含的错误名称为 RequestEntityTooLarge。
当返回 415时 ,消息体包含的错误名称为 UnsupportedMediaType。
当返回 500时 ,消息体包含的错误名称为 InternalServerError。
当返回 501时 ,消息体包含的错误名称为 NotImplemented。
当返回 503时 ,消息体包含的错误名称为 ServiceUnavailable。
6.7.9 示例
请求消息见示例 1。
示例 1:
PUT/MyAccount/MyTable/Row HTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
Content-type: text/xml
Row001
Color
Blue
Size
Med
Price
14. 99
Row002
Length
12. 98
Width
4. 56
响应消息见示例 2。
示例 2:
HTTP/1.1200OK
6. 8 删除数据
6. 8. 1 功能描述
删除某一行或多行的一或多列 。
用户提供的输入数据集由多个行组成 ,每个行包含行键 、列名和时间戳(可选) ,数据集为 XML格式 , 随请求消息体发送到服务端 。
对于删除数据的某行 ,如果仅包含行键 :若目标数据表中该行键存在 ,则删除该行的所有列 ;若该行不存在 ,则操作失败 。
对于删除数据的某行 ,如果包含行键和若干列名 ,若目标数据表中行键存在 :若某列存在 ,则删除该列 ;若某列不存在 ,则操作失败 。
对于删除数据的某行的某列名设定了时间戳值 ,则删除早于指定时间戳的所有列值版本 ;若未设定时间戳 ,则删除所有数据版本 。
6. 8.2 请求定义
请求定义表述为 :
DELETE/[Account]/[Table]/Row HTTP/1.1
6. 8.3 请求 URL
请求 URL表述为 :
http://example. clouddb. cn/[Account]/[Table]/Row
其中 : [Account]表示账户 ID, [Table]表示表名 。
6. 8.4 请求消息头
按公共请求头定义 。
6. 8.5 请求消息体
请求消息体应包括信息见表 6。
表 6 请求消息体
表 6 (续)
6. 8.6 响应状态码
状态码包括 204,400,401,404,405,408,415,500,501,503。
6. 8.7 响应消息头
按公共响应头定义 。
6. 8. 8 响应消息体
当返回 204时 ,无消息体 。
当返回 400 时 , 消 息 体 包 含 的 错 误 名 称 为 InvalidRequestBody、InvalidTimestamp、DateSkewed之一 。
当返回 401时 ,消息体包含的错误名称为 AccountNotExist、Unauthorized、MissingAuthorization、 AccountProblems、AccountDisabled之一 。
当返回 404 时 , 消 息 体 包 含 的 错 误 名 称 为 TableNotExist、RowKeyNotExist、ColumnNotExist、 ColumnOnTimestampNotExist之一 。
当返回 405时 ,消息体包含的错误名称为 MethodNotAllowed。
当返回 408时 ,消息体包含的错误名称为 RequestTimeout。
当返回 415时 ,消息体包含的错误名称为 UnsupportedMediaType。
当返回 500时 ,消息体包含的错误名称为 InternalServerError。
当返回 501时 ,消息体包含的错误名称为 NotImplemented。
当返回 503时 ,消息体包含的错误名称为 ServiceUnavailable。
6. 8.9 示例
请求消息见示例 1。
示例 1:
DELETE/MyAccount/MyTable/Row HTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
Content-type: text/xml
Row001
Color
Price
20110503T173008+08
Row002
响应消息见示例 2。
示例 2:
HTTP/1.1204No Content
6.9 获取数据
6.9. 1 功能描述
获取一行或多行的一个或多个列 。用户提供的输入数据集由多个行组成 ,每个行包含行键 、列名和时间戳(可选) ,数据集为 XML格式 , 随请求消息体发送到服务端 。
对于请求消息体的某行 ,如果仅包含行键 :若目标数据表中该行键存在 ,则返回该行的所有列 ;若该行不存在 ,则操作失败 。对于请求消息体的某行 ,如果包含行键和若干列名 ,若目标数据表中该行键存在 :若某列存在 ,则返回该列 ;若某列不存在 ,则操作失败 。
对于请求消息体的某行的某列名 :若未设定时间戳 ,则返回最新版本列值 ;若设定了时间戳 ,则返回早于指定时间戳的(唯一)最新版本列值 ;若该版本不存在 ,则等同于该列不存在 ,操作失败 。
结果数据集由多行组成 ,每行包含行键 、列名和列值 ,结果数据集为 XML格式 , 随响应消息体返回到客户端 。
6.9.2 请求定义
请求定义表述为 :
POST/[Account]/[Table]/Row HTTP/1.1
6.9.3 请求 URL
请求 URL表述为 :
http://example. clouddb. cn/[Account]/[Table]/Row
其中 : [Account]表示账户 ID, [Table]表示表名 。
6.9.4 请求消息头
按公共请求头定义 。
6.9.5 请求消息体
请求消息体应包括信息见表 7。
表 7 请求消息体
6.9.6 响应状态码
状态码包括 200,400,401,404,405,406,408,409,415,500,501,503。
6.9.7 响应消息头
按公共响应头定义 。
6.9. 8 响应消息体
当返回 200时 , 响应消息体应包括信息见表 8。
表 8 响应消息体
当 返 回 400 时 , 消 息 体 包 含 的 错 误 名 称 为 InvalidRequestBody、InvalidTimestamp、DateSkewed之一 。
当返回 401时 ,消息体包含的错误名称为 AccountNotExist、Unauthorized、MissingAuthorization、 AccountProblems、AccountDisabled之一 。
当返回 404 时 , 消 息 体 包 含 的 错 误 名 称 为 TableNotExist、RowKeyNotExist、ColumnNotExist、 ColumnOnTimestampNotExist之一 。
当返回 405时 ,消息体包含的错误名称为 MethodNotAllowed。
当返回 406时 ,消息体包含的错误名称为 NotAcceptable。
当返回 408时 ,消息体包含的错误名称为 RequestTimeout。
当返回 409时 ,消息体包含的错误名称为 TooLargeResultSize。
当返回 415时 ,消息体包含的错误名称为 UnsupportedMediaType。
当返回 500时 ,消息体包含的错误名称为 InternalServerError。
当返回 501时 ,消息体包含的错误名称为 NotImplemented。
当返回 503时 ,消息体包含的错误名称为 ServiceUnavailable。
6.9.9 示例
请求消息见示例 1。
示例 1:
GET/MyAccount/MyTable/Row HTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
Content-type: text/xml
Row001
Color
Price
20110503T173008+08
Row002
响应消息见示例 2。
示例 2:
HTTP/1.1206OK
Content-Type: text/xml
Row001
〈Name〉Color〈/Name〉
〈Value〉Blue〈/Value〉
〈/Column〉
〈Column〉
〈Name〉Price〈/Name〉
〈Value〉14. 99〈/Value〉
〈/Column〉
〈/Row〉
〈Row〉
〈Key〉Row002〈/Key〉
〈Column〉
〈Name〉Color〈/Name〉
〈Value〉Black〈/Value〉
〈/Column〉
〈Column〉
〈Name〉Size〈/Name〉
〈Value〉Med〈/Value〉
〈/Column〉
〈Column〉
〈Name〉Price〈/Name〉
〈Value〉7. 89〈/Value〉
〈/Column〉
〈Column〉
〈Name〉Length〈/Name〉
〈Value〉12. 98〈/Value〉
〈/Column〉
〈Column〉
〈Name〉Width〈/Name〉
〈Value〉4. 56〈/Value〉
〈/Column〉
〈/Row〉
〈/Values〉
6. 10 条件表达式查询数据
6. 10. 1 功能描述
使用一组条件表达式查询某数据库表 ,返回满足条件的行 。 多个条件表达式用 “AND”或 “OR”运算符连接 ,条件表达式形见示例 。
示例 :
Colunm
Equal|NotEqual|Greater|Less|GreaterEqual|LessEqual|Like|NotLike|Null|NotNull
GivenValue[onTimestamp]
在查询条件中 ,若指定列不存在 ,则条件表达式返回空 。
在查询条件中 ,若指定列的时间戳 ,则参与逻辑运算的列值为该时间戳之前的最新版本 ,若该版本不存在 ,则等同于列不存在 ;若不指定列的时间戳 ,则参与逻辑运算的列值为最新版本 。
结果数据集由多个行组成 ,每行包含行键和特定列的值 。对于每一行 ,行键默认为返回结果 ,列则默认为不返回结果(除非明确指定该列需要返回) 。结果数据集为 XML格式 , 随响应消息体返回到客
户端 。
在指定的返回列中 ,若某行该列不存在 ,则该行不包括此列 。
在返回列定义中 ,若指定列的时间戳 ,则返回的列值为该时间戳之前的最新版本 ,若该版本不存在 ,则等同于列不存在 ;若不指定列的时间戳 ,则返回的列值为最新版本 。
查询请求可以指定结果集大小和偏移量 , 即上一次返回结果的行数 , 以实现分页查询 。此功能亦可通过限制客户端一次可以访问的数据量 , 同时在响应消息中添加数据未结束的标识来实现 ,本部分对相关实现细节不做规范 。
当结果集大小未指定 ,且查询结果超出云存储系统预设的最大结果集大小 ,则返回最大结果集行数 ,且响应状态码为 206;否则 ,返回指定结果集行数 ,且响应状态码为 206。
当返回结果集大小 小 于 或 等 于 指 定(或 预 设) 结 果 集 大 小 , 则 返 回 全 部 查 询 结 果 , 且 响 应 状 态 码为 200。
当指定的结果集大小大于云存储系统预设的最大结果集大小 ,则操作失败 。
当未指定偏移量 ,返回结果集从首行开始 ;否则 ,从指定偏移量(行键)的下一行开始 。
6. 10.2 请求定义
请求定义表述为 :
POST/[Account]/[Table]/QueryHTTP/1.1
6. 10.3 请求 URL
请求 URL表述为 :
http://example. clouddb. cn/[Account]/[Table]/Query
其中 : [Account]表示账户 ID, [Table]表示表名 。
6. 10.4 请求消息头
按公共请求头定义 。
6. 10.5 请求消息体
请求消息体见表 9。
表 9 请求消息体
表 9 (续)
6. 10.6 响应状态码
状态码包括 200,206,400,401,404,405,406,408,409,413,415,500,501,503。返回全部结果集时状态码为 200;返回部分结果集时状态码为 206。
6. 10.7 响应消息头
按公共响应头定义 。
6. 10. 8 响应消息体
当返回 200或 206时 , 响应消息体应包括信息见表 10。
表 10 响应消息体
当 返 回 400 时 , 消 息 体 包 含 的 错 误 名 称 为 InvalidRequestBody、InvalidTimestamp、 InvalidOperator、InvalidLogic、InvalidConditionOrders、DateSkewed之一 。
当返回 401时 ,消息体包含的错误名称为 AccountNotExist、Unauthorized、MissingAuthorization、 AccountProblems、AccountDisabled之一 。
当返回 404时 ,消息体包含的错误名称为 TableNotExist、ColumnNotExist、OffsetOverflow 之一 。当返回 405时 ,消息体包含的错误名称为 MethodNotAllowed。
当返回 406时 ,消息体包含的错误名称为 NotAcceptable。
当返回 408时 ,消息体包含的错误名称为 RequestTimeout。
当返回 409时 ,消息体包含的错误名称为 TooLargeResultSize、TooManyConditions之一 。
当返回 413时 ,消息体包含的错误名称为 RequestEntityTooLarge。
当返回 415时 ,消息体包含的错误名称为 UnsupportedMediaType。
当返回 500时 ,消息体包含的错误名称为 InternalServerError。
当返回 501时 ,消息体包含的错误名称为 NotImplemented。
当返回 503时 ,消息体包含的错误名称为 ServiceUnavailable。
6. 10.9 示例
请求消息见示例 1。
示例 1:
POST/MyAccount/MyTable/Query HTTP/1.1
Host: example.clouddb. cn
Accept: text/xml
Content-type: text/xml
2
99
1
Color
20110503T173008+08 Equal
Red
And
2
Price
Less
5
Length
20110503T173008+08
Width
消息响应见示例 2。
示例 2:
HTTP/1.1206PartialContent Content-Type: text/xml
Row001
Length
1024
Width
768
Row002
Length
1280
Width
1024
附 录 A (规范性附录)补充出错信息
基于 Key-Value的云数据管理对 HTTP状态码的补充出错信息描述见表 A.1。
表 A. 1 补充出错信息描述
相关推荐
- GB/T 20015-2005 金属和其他无机覆盖层 电镀镍、自催化镀镍、电镀铬及最后精饰自动控制喷丸硬化前处理
- GB/T 50779-2022 石油化工建筑物抗爆设计标准
- GB/T 18442.7-2017 固定式真空绝热深冷压力容器 第7部分:内容器应变强化技术规定
- GB/T 12217-2005 机器 轴高
- GB/T 18262-2024 人造板机械 通用技术条件
- GB/T 51358-2019 城市地下空间规划标准
- GB/T 35083.1-2018 滑动轴承 轴承材料摩擦学特性试验 第1部分:金属轴承材料试验
- GB∕T 6113.104-2021 无线电骚扰和抗扰度测量设备和测量方法规范 第1-4部分:无线电骚扰和抗扰度测量设备 辐射骚扰测量用天线和试验场地
- GB∕T 40435-2021 变电站数据通信网关机技术规范
- GB/T 42291-2022 压水堆核电厂控制区门窗辐射防护设计准则

