云服务器内容精选

  • 分区键和排序键有什么区别? 分区键和排序键之间的对比如表1所示 表1 分区键、排序键对比 对比维度 分区键 排序键 应用场景 分区键用于确定该表中的每一个KV所在的分区。例如,对于一个用户表,可以指定用户名属性作为分区键。 KVS会根据此用户名的名称(KV)选择分区,同样的用户名名称存储在同一个分区。 表中的KV会根据排序键进行排序以后存储。查询数据时,您可以按照排序键输出数据。 支持主键 简单主键(分区键)和复合主键(分区键和排序键)。 复合主键(分区键和排序键)。 父主题: 概念类
  • 本地二级索引与全局二级索引有什么区别? 本地二级索引和全局二级索引之间的对比如表1所示。 每个索引属于一个表,该表称为索引的主表。 表1 本地二级索引、全局二级索引对比 对比维度 本地二级索引 全局二级索引 概念 对于复合主键(分区键+排序键)的表,支持创建本地二级索引,实现分区键下的多个键值的辅助索引。 表支持创建非主键字段的全局检索,全局二级索引只保存索引记录,不保存完整键值内容。 应用场景 创建一个用户运动信息统计表,此表包含属性:用户名、所在城市、运动时长、运动日期、热量消耗。 主索引的分区键为用户名,排序键为运动时长;本地二级索引的排序键为运动日期,通过该索引可快速查询某一天的运动时长最长或最短的用户信息。 创建一个用户运动信息统计表,此表包含属性:用户名、所在城市、运动时长、运动日期、热量消耗。 主索引的分区键为用户名,排序键为运动时长;全局二级索引的分区键为所在城市,排序键为热量消耗,由于主键字段会投影到全局二级索引的键值中,即全局二级索引记录中包含用户名和运动时长的信息,通过该索引可快速查询到在某城市热量消耗最多或者最少的用户信息。 键架构 复合主键(分区键和排序键)。 简单主键(分区键)或复合主键(分区键和排序键)。 特点 分区键与主表相同但排序键不同。 分区键和排序键可与主表中的对应键不同。 一致性 KV写入时,自动生成并存储本地二级索引记录,并保证KV写入与本地二级索引记录的强一致。 KV写入时,自动生成索引记录,并异步写入全局二级索引,KV写入与全局二级索引记录为最终一致。 创建数量 一个表最多支持创建5个本地二级索引。 一个表最多支持创建20个全局二级索引。 父主题: 概念类
  • 状态码 正常状态码 描述 200 OK 201 Created 202 Accepted 204 No Content 错误状态码 描述 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Method Not Allowed 409 Conflict 413 Request Entity Too Large 415 Unsupported Media Type 429 Too Many Requests 500 Internal Server Error 501 Not Implemented 503 Service Unavailable 父主题: 附录
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小在12MB以内。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):私有访问密钥。与访问密钥ID结合使用,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • 请求URI 请求URI由如下部分组成(方括号部分可选): {URI-scheme}://[{store-name}.]{Endpoint}/{resource-path}[?{query-string}] 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 请求使用的协议类型,如HTTP、HTTPS。HTTPS表示通过安全的HTTPS访问该资源,键值存储服务支持HTTP,HTTPS两种传输协议。 store-name 请求使用的仓名称,是可选部分,并不是每个API都有仓名称。存储仓的命名规范为{用户自定义前缀}-{KVS所在区域的区 域名 }-{用户的账号ID} ,例如:exampleprefix-cn-north-4-exampledomainid。如何获取账号ID请参见获取账号ID Endpoint 指定承载KVS服务端点的服务器域名或IP。Endpoint需要通过购买 VPC终端节点 ,创建内网域名来获取,具体操作请参见VPC终端节点对接KVS。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取,例如“创建表”API接口的resource-path为“/v1/create-table”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“?store-name=exampleprefix-cn-north-4-exampledomainid”,表示仓名称为exampleprefix-cn-north-4-exampledomainid。 例如您需要在KVS的“华北-北京四”区域创建表,则需使用“华北-北京四”区域的Endpoint(kvs.cn-north-4.myhuaweicloud.com),并在具体API的URI部分找到resource-path(/v1/create-table),拼接起来如下所示。其中${store-name}为仓名。 1 https://${store-name}.kvs.cn-north-4.myhuaweicloud.com/v1/create-table 为方便查看,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时该字段必选。 code.test.com or code.test.com:443 Content-Type 消息体的类型(格式)。推荐用户使用默认值application/bson,有其他取值时会在具体接口中专门说明。 是 application/bson Content-Length 请求body长度,单位为Byte。 否 3495 X-Project-Id project id,项目编号。请参考获取项目ID章节获取项目编号。 否 如果是专属云场景采用AK/SK认证方式的接口请求,或者多project场景采用AK/SK认证的接口请求,则该字段必选。 e9993fc787d94b6c886cbaa340f9c0f4 API同时支持使用AK/SK认证,AK/SK认证使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。
  • 请求消息体(可选) 该部分可选。请求消息体通常以Bson格式发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),列举仓接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于创建表接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,斜体字段需要根据实际值填写,其中${store-name}为仓名,$YOUR_TABLE_NAME为表名,$YOUR_SHARD_KEY_NAME为分区键名称,$YOUR_SORT_KEY_NAME为排序键名称。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 POST https://${store-name}.kvs.cn-north-4.myhuaweicloud.com/v1/create-table Content-Type: application/bson { "table_name" : "$YOUR_TABLE_NAME", "primary_key_schema" : { "shard_key_fields" : [ { "name" : "$YOUR_SHARD_KEY_NAME", "order" : true } ], "sort_key_fields" : [ { "name" : "$YOUR_SORT_KEY_NAME", "order" : true } ] } } 到这里为止这个请求需要的内容就具备齐全了,您可以直接编写代码发送请求调用API。对于创建表接口,返回的响应体中包含了创建表的属性信息。表创建好以后,您就可以调用其他API执行向表中插入数据、查询表中数据等其他操作了。
  • API概览 表1 接口说明 类型 子类型 说明 仓接口 列举仓 一个账户下可以创建最多25个仓,每个仓可以创建最多100个store,响应中一次性返回所有仓名称。 创建表 在指定存储仓内创建表,表名在存储仓内唯一; 创建表时,指定主键模板及本地二级索引模板及全局二级索引模板。 列举表 指定存储仓列举创建的所有表。 表接口 查询表 指定存储仓查询表属性,如容量,规模,配额。 KV接口 上传单个kv 指定表,新建kv或覆盖已有kv,且满足表的key schema描述;允许指定条件执行。 查询单个kv 下载一个kv文档的全部内容,或者部分字段的内容。 更新单个kv 指定表,指定主键,指定更新文档的部分内容,如果是自描述文档,指定字段名;如果是二进制文档,指定偏移位置和长度;允许指定条件执行。 删除单个kv 指定表,指定主键,删除该文档;允许指定条件执行。 扫描所有kv 指定表,扫描表下所有kv;允许指定过滤条件。 扫描分区键内kv 指定表及分区键,携带条件查询kv;允许指定过滤条件。 批量写请求 批量写请求,其中可以携带一或多个表的不同kv的写操作,上传kv/删除kv。
  • 基本概念 账号 用户注册时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用用户进行日常管理工作。 用户 由账号在 IAM 中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和IAM用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中的资源,使得资源的权限控制更加精确。 图1 项目隔离模型 同样在我的凭证下,您可以查看项目ID。 企业项目 企业项目是项目的升级版,针对企业不同项目间的资源进行分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理用户指南》。 父主题: 使用前必读
  • 概述 欢迎使用键值存储服务(Key-Value Storage Service, KVS)。键值存储服务提供完全托管的键值存储及索引服务,主要用于应用的键值类数据(如:元数据、描述数据、管理参数、状态数据)的存储,提供可预测的性能和无缝扩展,无需进行分区管理、硬件预置、集群扩展等操作。 您可以使用本文档提供API对键值存储服务进行相关操作,如创建、查询、删除、更新等。支持的全部操作请参见API概览。 在调用键值存储服务API之前,请确保已经充分了解键值存储服务相关概念,详细信息请参见《用户指南》的“产品介绍”。 父主题: 使用前必读
  • 请求示例 更新单个kv,设置表名为test-table-1,设置更新的kv分区键值为user1,排序键为test-file-1,设置更新的鑫数据为非结构化数据。 POST https://{endpoint}/v1/update-kv { "table_name" : "test-table-1", "primary_key" : { "owner" : "user-1", "filename" : "test-file-1" }, "update_fields" : { "set" : { "updateKey" : "updateValue" } } }
  • 请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 table_name 是 String 表名,仓内唯一。 长度:[3, 63] 取值字符限制:[a-z0-9_-]+ primary_key 是 Document 用户自定义的主键名及值。 说明: 内容字段:主键字段名和值,组合索引多个元素。 condition_expression 否 condition_expression object 条件表达式,参见conditional小节,禁止携带主键字段。 update_fields 否 update_fields object 对kv_doc有效。 表3 condition_expression 参数 是否必选 参数类型 描述 single_field_expression 否 single_field_expression object 单字段条件。 multi_field_expression 否 multi_field_expression object 多字段条件,多个相同优先级的单字段条件。 composed_expression 否 composed_expression object 组合条件, 逐层同级的子表达式嵌套。 表4 multi_field_expression 参数 是否必选 参数类型 描述 logic 否 String 多字段条件,多个相同优先级的单字段条件。 expressions 是 Array of single_field_expression objects 多个相同逻辑操作的单字段条件。 表5 single_field_expression 参数 是否必选 参数类型 描述 field 是 String 条件字段。 func 是 String 条件函数,取值如"$gt", $lt","$gte", $lte" "$eq", "$ne", "$prefix", "$exists"。 value 否 Document value和value_array二选一。 value条件值,适用于除"$in", "$nin"外的func。 字段名无意义,可以传空,也可以传字段名。 $exists值为true/false。 说明: $prefix操作只适用于string和binary类型。 value_array 否 Array of strings "value"和"value_array"二选一。 "value_array" 条件值列表, 值用于"$in", "$nin"。 表6 composed_expression 参数 是否必选 参数类型 描述 logic 否 String 逻辑关系,取值如"$and", "$or", "$nor"。 expressions 是 Array of expression objects 多个相同优先级且相同逻辑的单字段或多字段条件。 表7 expression 参数 是否必选 参数类型 描述 single_field_expression 否 single_field_expression object 单字段条件。 multi_field_expression 否 single_field_expression object 多字段条件,多个相同优先级的单字段条件。 composed_expression 否 composed_expression object 组合条件, 逐层同级的子表达式嵌套。 表8 update_fields 参数 是否必选 参数类型 描述 set 否 Document 新增字段或覆盖1个或多个字段的值。 说明: 禁止修改sortkey的字段。 add 否 Document 对1个或多个字段做加法运算,并更新为运算后的值。 rmv 否 Array of strings 删除1个或多个字段。 数组元素为待删除字段名。 insert 否 Document 插入元素到数组中 说明: 非数组返回失败。 delete 否 Document 从数组中删除某个元素 说明: 值不存在则返回失败。
  • URI POST /v1/update-kv 表1 Query参数 参数 是否必选 参数类型 描述 store_name 否 String 仓名,全域唯一,不同租户的仓名不能相同。 格式:${prefix}-${region-code}-${account-id},其中prefix为自定义前缀,region-code为kvs集群所在的区域代码,account-id为用户的账户id 取值字符限制:[a-z0-9-]+ 长度:[16,52] 说明: "-"不能出现在名字头部或尾部
  • 响应参数 状态码: 200 表8 响应Body参数 参数 参数类型 描述 returned_count Long 返回的文档数量,为0不表示结束。 如果filtered_count超过500仍无匹配,则返回0。 长度:4 filtered_count Integer 被过滤掉的文档数量。 长度:4 cursor_sort_key Document 下次请求时的start_key。 说明: 该值为空时,表示指定范围或者指定filter条件所有kv已经返回。 returned_kv_items Array of returned_kv_item objects 返回的kv列表,与scan-kv接口的returned_kv_item字段相同。 表9 returned_kv_item 参数 参数类型 描述 kv_doc Document 对kv_doc有效。
  • 响应示例 状态码: 200 表示扫描分区键内kv请求成功 { "returned_count" : 1, "filtered_count" : 0, "kv_array" : [ { "returned_kv_items" : { "kv_doc" : { "owner" : "user-1", "filename" : "test-file-1", "otherkey" : "otherValue" } } } ] }