云服务器内容精选

  • KV限制 对于文档类型的KV,包含所有的本地二级索引,key和value之和最大为512KB。 字段名称长度范围为1-63个字节,大小写敏感,不支持“.”和“$”。“X”字符为前缀的字段名称为系统预留字段名称,目前系统预留字段名称包括“Xattr”和“Xblob”,不建议您使用作为字段名。 对于主键,包含所有的本地二级索引,总长不超过1024个字节,且主键必须唯一。 使用API请求方式访问的KV,只能属于一个存储仓。 一个KV一定归属于某个表。 仓+表+Key可以唯一定位KV。
  • 键值存储服务基本概念 存储仓(Store) 存储仓,简称仓,是用来存储表数据的单元。用户可以根据自己的业务系统划分,创建不同的仓。 表(Table) 表是用来存储键值数据的集合,归属于某个仓。用户可以在一个仓中创建多个表,用来储存键值数据。通过本地二级索引和全局二级索引可以快速而准确地检索到表中的键值数据。 KV(Key-Value) 键值数据(Key-Value),简称KV,是文档型的数据项,提供主键到Value的映射。KV数据存储在表中。 分区键和排序键 分区键:分区键是一个表的属性,用于确定该表中的每一个KV存储所在的分区。例如,对于一个用户表,可以指定用户名属性作为分区键。 KVS会根据此用户名的名称(KV)选择分区,同样的用户名名称存储在同一个分区。 排序键:排序键是一个表的属性,该表中的KV会根据排序键进行排序以后存储。查询数据时,您可以按照排序键输出数据。 创建表时,除表名称外,您还必须指定表的主键。表中的主键具有唯一性,因此,任意两个表中的主键都不相同。KVS支持两种不同类型的主键: 简单主键:由分区键构成。 复合主键:由分区键和排序键组合构成。 索引 索引是用来辅助查询表中的KV数据,能够加速键值检索,准确访问键值数据。KVS提供本地二级索引和全局二级索引。 本地二级索引:对于复合主键(分区键+排序键)的表,支持创建本地二级索引,实现分区键下的多个键值的辅助索引。键值写入时,自动生成并存储本地二级索引记录,并保证键值与本地二级索引记录的强一致。 全局二级索引:表支持创建非主键字段的全局检索,全局二级索引只保存索引记录,不保存完整键值内容。键值写入时,自动生成索引记录,并异步写入全局二级索引,键值与全局二级索引记录为最终一致。 关于存储仓、表、KV、索引之间的关系,如图1所示。 图1 KVS基本概念之间的关系 父主题: 基本概念
  • KVS简介 键值存储服务(Key-Value Storage Service,KVS)主要面向游戏、大数据、互联网等业务场景提供完全托管的键值存储及索引服务,主要用于应用的键值类数据(如:元数据、描述数据、管理参数、状态数据)的存储,提供可预测的性能和无缝扩展,无需进行分区管理、硬件预置、集群扩展等操作。 使用KVS创建一个存储仓,在存储仓中创建一个或多个表,来存储和检索任意规模的数据。 虽然KVS服务支持您将数据同步到华为云键值存储指定Region的存储仓里,但是华为云并不感知您对象的具体内容。如果您的行为涉及跨境传输,请您确保使用本服务符合所适用的法律法规要求。
  • 产品架构 KVS产品结构请参考图1。通过和其他产品、服务组合,KVS可以实现如下功能: CES实时采样KVS监控指标,提供及时有效的资源信息监控告警,支持配置监控告警,告警通知随时触发随时响应。 使用KVS在某个区域可以创建多个仓,在仓中可以创建多个表,在表中可以存储键值(Key-Value,简称KV)数据。 KVS提供本地二级索引、全局二级索引,帮助您快速检索表中的键值数据,实现快速且准确访问。 图1 KVS产品架构
  • 访问方式 云服务平台提供的Web化的服务管理平台,即管理控制台、基于HTTPS请求的API(Application programming interface)管理方式以及SDK方式均可访问键值存储服务。 API方式 如果用户需要将云服务平台上的键值存储服务集成到第三方系统,用于二次开发,请使用API方式访问键值存储服务,具体操作请参见《键值存储服务API参考》。 管理控制台方式 其他相关操作,请使用管理控制台方式访问键值存储服务。 如果用户已注册,可直接登录管理控制台,从主页选择“键值存储服务 KVS”。如果未注册,请参见注册华为云并实名认证。 SDK方式 KVS提供Java、C++等主流语言,帮助用户使用SDK完成二次开发,使用SDK方式访问键值存储服务,具体操作请参见《键值存储服务SDK参考》。
  • KV简介 键值数据(Key-Value),以下简称KV,是KVS云服务数据存储的最小单位,用来存储用户具体数据信息,是文档型的数据项。KVS自顶向下按照仓、表、KV的结构存储数据,仓中包含1个或多个表,表中包含0个或多个KV,每个KV都有不同于其他所有KV的唯一标识。例如,用一张表记录某个部门所有员工的信息,每一个KV就代表一个员工,员工的身份证号就是唯一标识。 图1 KV简介 每个KV包含一个或多个属性,属性有必选属性和可选属性,必选属性对应分区键和排序键,每一条KV都必须填写,否则会导致插入KV失败。可选属性您可以根据自身诉求自定义添加,不会影响KV插入。 例如,以下为一个员工信息表,每一条KV代表一个员工。对于KV的属性,身份证号(SSN)是分区键,姓名(Name)是排序键,这两者KV必须赋值。性别(Gender)、职位(Job)、获奖记录(Award Records)等属性是附加的可选属性,用户可以自定义。 Employee { "SSN": 0123456789, "Name": "张三", } { "SSN": 9876543210, "Name": "李四", "Gender": "female", "Job": "O&M staff", "Award Records": "Best Employee Award" } KVS云服务支持上传、更新、删除、查询KV列表、查询KV详细信息。 表1 KVS云服务支持的KV相关功能 功能 描述 插入KV 向指定表中插入新的KV数据。 更新KV 更新指定表中指定KV的数据。 删除KV 删除指定KV。 查询KV 查询指定表中的KV数据。 父主题: KV管理
  • 监控指标 表1 KVS支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) store_request_count_monitor_2XX 2xx状态码个数 该指标用于统计响应状态码为2XX的请求数。 单位:个 ≥ 0 counts 仓 1分钟 store_request_count_monitor_4XX 4xx状态码个数 该指标用于统计响应状态码为4xx的请求数。 单位:个 ≥ 0 counts 仓 1分钟 store_request_count_monitor_5XX 5xx状态码个数 该指标用于统计响应状态码为5xx状态码个数。 单位:个 ≥ 0 counts 仓 1分钟 store_kv_request_latency_ave 请求平均时延 该指标用于统计周期内从系统收到完整请求到结束返回响应的耗时平均值。 单位:毫秒 ≥ 0 ms 仓 1分钟 store_read_traffic 读流量 该指标用于统计当前统计周期内读取类请求文档大小总和。 单位:字节 ≥ 0 bytes 仓 1分钟 store_write_traffic 写流量 该指标用于统计当前统计周期内写入类请求文档大小总和。 单位:字节 ≥ 0 bytes 仓 1分钟 store_kv_request_count 总接口请求数 该指标用于统计当前统计周期的请求总数。 单位:个 ≥ 0 counts 仓 1分钟
  • 计费示例 以下示例中出现的费用价格仅供参考。 假设某用户有一张exampletable KVS表,2024年4月30日8:00:00~9:00:00 exampletable数据总量为10GB,查询请求产生1百万RRU;2024年4月30日9:00:00~10:00:00,exampletable数据总量为10.1GB,上传请求产生2百万WRU。那么,该用户在8:00:00~10:00:00之间需要支付多少费用?费用构成及计费过程如下表所示: 表3 费用构成及计费过程 时间 用户操作 涉及计费项 单价 计费量 费用 8:00:00~9:00:00 存储数据 标准型容量 0.00291666元/GB 10GB 0.00291666元/GB×10GB=0.0291666元 查询请求 标准型读取请求 2.10元/百万RRU 1百万WRU 1百万RRU×2.10元/百万RRU=2.10元 9:00:00~10:00:00 存储数据 标准型容量 0.00291666元/GB 10.1GB 0.00291666元/GB×10.1GB=0.029458266元 上传请求 标准型写入请求 10.60元/百万WRU 2百万WRU 2百万WRU×10.60元/百万WRU=21.20元 合计 / / / / 23.358624866元 综上所述,该用户在8:00:00~10:00:00之间需要支付23.358624866元费用。
  • 计费公式 存储费用的计算公式为(按每小时结算):费用=实际资源存储容量(GB)×官网单价(元) 请求费用的计算公式为(按每小时结算):费用=请求单位数×官网单价(元) 对于标准型写入请求,KVS将1KB的KV按1个写入请求单位(WRU,Write Request Unit)收费,而对于标准型读取请求,KVS将4KB的KV按1个读取请求单位(RRU,Read Request Unit)收费。请求单位的换算方式参见下表: 表2 请求单位数换算方式 计费项 换算公式 换算举例 标准型写入请求 1KB(KV大小)=1WRU(标准型写入请求单位数) 用户调用了1次put-kv接口,上传的KV大小为5KB,那么此次计费的标准型写入请求单位数换算过程如下所示: 标准型写入请求单位数:5KB÷1KB=5WRU 标准型读取请求 4KB(KV大小)=1RRU(标准型读取请求单位数) 用户调用了1次get-kv接口,查询的KV大小为8KB,那么此次计费的标准型读取请求单位数换算过程如下所示: 标准型读取请求单位数:8KB÷4KB=2RRU 结算标准型写入请求费用时,API调用KV的大小不足1KB的,按1KB计算;结算标准型读取请求费用时,API调用KV的大小不足4KB的,按4KB计算。
  • 适用计费项 以下计费项支持按需计费。 表1 适用计费项 计费项 单价 说明 存储费用 标准型容量 0.00291666元/GB/小时 KVS中存储数据(所有KV和索引)所占用的存储空间容量。 存储时间按照数据在KVS中存储的实际每小时计算。 请求费用 标准型写入请求 10.60元/百万WRU 将数据写入表的请求计量,包括put-kv(上传单个kv)、update-kv(更新单个kv)、delete-kv(删除单个kv)、batch-write-kv(批量写请求) 等。 标准型读取请求 2.10元/百万RRU 从表读取数据的请求计量,包括get-kv(查询单个kv)、scan-kv(扫描所有kv)、scan-skey-kv(扫描分区键内kv)等。
  • 什么是区域、可用区? 区域和可用区用来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 table_opers 是 Array of table_batch objects 行操作数组,可以是多个表的操作。 表3 table_batch 参数 是否必选 参数类型 描述 table_name 是 String 表名,仓内唯一。 长度:[3, 63] 取值字符限制:[a-z0-9_-]+ kv_opers 是 Array of oper_item objects kv操作数组。 表4 oper_item 参数 是否必选 参数类型 描述 put_kv 否 put_kv object 上传kv操作,上传的数据类型kvblob和kvdoc二选一。 delete_kv 否 delete_kv object 删除kv操作。 表5 put_kv 参数 是否必选 参数类型 描述 oper_id 是 Integer 请求内的操作编码,未成功的操作返回该标识。 kv_doc 否 Document 用户文档。 kv_blob 否 kv_blob object 用户非结构化数据。 表6 kv_blob 参数 是否必选 参数类型 描述 primary_key 是 Document 用户自定义的主键名及值。 说明: 内容字段:主键字段名和值,组合索引多个元素。 xblob 否 String 属性信息,最大2kb。 xattr 否 String 非结构化数据内容。 表7 delete_kv 参数 是否必选 参数类型 描述 oper_id 是 Integer 请求内的操作编码,未成功的操作返回该标识。 primary_key 是 Document 用户自定义的主键名及值。
  • 响应参数 状态码: 200 表8 响应Body参数 参数 参数类型 描述 exception_opers Array of exception_opers_of_table objects 异常处理的操作,按照table分类组织。 表9 exception_opers_of_table 参数 参数类型 描述 table_name String 表名,仓内唯一。 长度:[3, 63] 取值字符限制:[a-z0-9_-]+ unprocessed_opers Array of integers 未处理的操作列表。 数组元素:未处理的操作标识。 failed_opers Array of fail objects 失败的操作列表,可以是多个。 表10 fail 参数 参数类型 描述 oper_id Integer 失败的操作标识,1个或多个。 status String 处理失败操作提示。
  • 请求示例 批量写请求,向test-table-1表中下载一个kv和删除一个kv POST https://{endpoint}/v1/batch-write-kv { "table_opers" : [ { "table_batch" : { "table_name" : "test_table_1", "kv_opers" : [ { "put_kv" : { "oper_id" : 1, "kv_blob" : { "primary_key" : { "owner" : "user_3", "filename" : "test_file_3" } } } }, { "delete_kv" : { "oper_id" : 2, "primary_key" : { "owner" : "user_2", "filename" : "test_file_2" } } } ] } } ] }
  • 请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 table_name 是 String 表名,仓内唯一。 长度:[3, 63] 取值字符限制:[a-z0-9_-]+ primary_key 是 Document 用户自定义的主键名及值。 说明: 内容字段为主键字段名和值,组合索引多个元素。 condition_expression 否 condition_expression object 条件表达式,参见conditional小节。 说明: 禁止携带主键字段, 参见conditional小节的定义。 projection_fields 否 Array of strings 对kv_doc有效,返回哪些字段列表,默认全部。 projection_blob 否 projection_blob object 对kv_blob有效,返回局部数据。 表3 condition_expression 参数 是否必选 参数类型 描述 single_field_expression 否 single_field_expression object 单字段条件。 multi_field_expression 否 multi_field_expression object 多字段条件,多个相同优先级的单字段条件。 single_kv_expression 否 single_kv_expression object 文档表达式。 composed_expression 否 composed_expression object 组合条件, 逐层同级的子表达式嵌套。 表4 composed_expression 参数 是否必选 参数类型 描述 logic 否 String 逻辑关系,取值如"$and", "$or", "$nor"。 expressions 是 Array of expression objects 多个相同优先级且相同逻辑的单字段或多字段条件。 表5 expression 参数 是否必选 参数类型 描述 single_kv_expression 否 single_kv_expression object 单KV条件。 single_field_expression 否 single_field_expression object 单字段条件。 multi_field_expression 否 multi_field_expression object 多字段条件。 表6 single_kv_expression 参数 是否必选 参数类型 描述 func 是 String 取值:"is_doc", "is_blob", "is_exist", "not_exist"。 表7 single_field_expression 参数 是否必选 参数类型 描述 field 是 String 条件字段。 func 是 String 条件函数,取值如"$gt", $lt","$gte", $lte" "$eq", "$ne", "$prefix", "$in","$nin", "$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"。 表8 multi_field_expression 参数 是否必选 参数类型 描述 logic 否 String 多字段条件,多个相同优先级的单字段条件。 expressions 是 Array of single_field_expression objects 多个相同逻辑操作的单字段条件。 表9 projection_blob 参数 是否必选 参数类型 描述 with_attr 否 Boolean 是否返回kv_blob的属性信息, 默认返回。 offset 否 Integer value部分的偏移位置,超过实际size不返回,默认0。 len 否 Integer 数据长度,默认offset后全部数据。