-
监控指标 表1 KVS支持的监控指标 指标ID 指标名称 指标含义 取值范围 单位 进制 测量对象 监控周期(原始指标) store_kv_request_count 总接口请求数 该指标用于统计当前统计周期的请求总数。 ≥ 0 Count 不涉及 仓 1分钟 store_request_count_monitor_2XX 2xx状态码个数 该指标用于统计响应状态码为2XX的请求数。 ≥ 0 Count 不涉及 仓 1分钟 store_request_count_monitor_4XX 4xx状态码个数 该指标用于统计响应状态码为4xx的请求数。 ≥ 0 Count 不涉及 仓 1分钟 store_request_count_monitor_5XX 5xx状态码个数 该指标用于统计响应状态码为5xx状态码个数。 ≥ 0 Count 不涉及 仓 1分钟 store_kv_request_latency_ave 请求平均时延 该指标用于统计周期内从系统收到完整请求到结束返回响应的耗时平均值。 ≥ 0 ms 不涉及 仓 1分钟 store_read_traffic 读流量 该指标用于统计当前统计周期内读取类请求文档大小总和。 ≥ 0 Byte 1024(IEC) 仓 1分钟 store_write_traffic 写流量 该指标用于统计当前统计周期内写入类请求文档大小总和。 ≥ 0 Byte 1024(IEC) 仓 1分钟
-
什么是区域、可用区? 区域和可用区用来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
-
产品优势 Serverless
云存储 无需购买计算资源且无需预置资源,完全托管,简单易用,为您节省运维成本,拥有云账号即可实现键值的存取。 存储结构灵活 支持BSON格式数据类型,原生数据格式无需字符串转换,数据处理更高效,且支持多数据类型字段自由组合。 数据读写效率高 支持本地二级索引和全局二级索引,提升检索效率; 支持前缀遍历,提升遍历效率。 数据高可用 提供区域内多可用区的同步读写,任一可用区故障均不影响业务; 提供多可用区的高可用集群,数据存储在多个可用区,任一可用区故障均不影响业务,数据可用性达99.99%,数据持久度达99.9999999999%。 数据安全可靠 KVS的传输链路支持HTTPS加密传输,TLS加密套件优先使用高安全加密算法。 弹性扩展无上限 用户表的数据规模可以无限扩展,访问流量可以自动扩展,且自动满足业务高峰低谷访问的弹性需求。 权限控制方式多 提供公网访问能力,对云内云外每个请求进行签名认证; 系统还会对用户进行运营权限检查。
-
KV限制 KV类型包含字符串、布尔值、空值、浮点数、数组、映射、日期和ObjectId,对于这些类型的KV,一条KV的key和value之和最大为512KB,包含主键和本地二级索引。 字段名称长度范围为1-63个字节,大小写敏感,不支持“.”和“$”。“X”字符为前缀的字段名称为系统预留字段名称,目前系统预留字段名称包括“Xattr”和“Xblob”,不建议您使用作为字段名。 主键总长不超过1200个字节,且主键必须唯一。 使用API请求方式访问的KV,只能属于一个存储仓。 一个KV一定归属于某个表。 仓+表+主键可以唯一定位一条KV。
-
索引限制 本地二级索引必须以表分区键作为前缀。 全局二级索引KV写后延迟约1秒内可见。 一条索引记录不超过1200个字节。 仅支持在创建表的过程中创建索引。 当一个主表创建多个全局二级索引时,这个主表下的全局二级索引之间的复合主键(分区键和排序键)不能重复。 单个全局二级索引中,不允许存在相同的键。 全局二级索引的分区键不能和主表的分区键完全相同。 当一个主表创建多个本地二级索引时,这个主表下的本地二级索引之间的排序键不能重复。 单个本地二级索引中,不允许存在相同的键。 本地二级索引的排序键不允许与主表的分区键重复。 本地二级索引的排序键不允许与主表的排序键重复。
-
键值存储服务基本概念 存储仓(Store) 存储仓,简称仓,是用来存储表数据的单元。用户可以根据自己的业务系统划分,创建不同的仓。 表(Table) 表是用来存储键值数据的集合,归属于某个仓。用户可以在一个仓中创建多个表,用来储存键值数据。通过本地二级索引和全局二级索引可以快速而准确地检索到表中的键值数据。 KV(Key-Value) 键值数据(Key-Value),简称KV,是文档型的数据项,提供主键到整条数据的映射。KV数据存储在表中。 分区键和排序键 分区键:分区键是一个表的属性,用于确定该表中的每一个KV存储所在的分区。例如,对于一个用户表,可以指定用户名属性作为分区键。 KVS会根据此用户名的名称(KV)选择分区,同样的用户名名称存储在同一个分区。 排序键:排序键是一个表的属性,该表中的KV会根据排序键进行排序以后存储。查询数据时,您可以按照排序键输出数据。 创建表时,除表名称外,您还必须指定表的主键。主键唯一标识表中的每个KV,因此,任意两个KV的主键都不相同。KVS支持两种不同类型的主键: 简单主键:由分区键构成。 复合主键:由分区键和排序键组合构成。 索引 索引是用来辅助查询表中的KV数据,能够加速键值检索,准确访问键值数据。KVS提供本地二级索引和全局二级索引。 本地二级索引:对于复合主键(分区键+排序键)的表,支持创建本地二级索引,实现分区键下的多个键值的辅助索引。键值写入时,自动生成并存储本地二级索引记录,并保证键值与本地二级索引记录的强一致。 全局二级索引:索引分区键和主表分区键不同,全局二级索引只保存索引记录,不保存完整键值内容。键值写入时,自动生成索引记录,并异步写入全局二级索引,键值与全局二级索引记录为最终一致。 关于存储仓、表、KV、索引之间的关系,如图1所示。 图1 KVS基本概念之间的关系 父主题: 基本概念
-
访问方式 云服务平台提供的Web化的服务管理平台,即管理控制台、基于HTTPS请求的API(Application programming interface)管理方式以及SDK方式均可访问键值存储服务。 API方式 如果用户需要将云服务平台上的键值存储服务集成到第三方系统,用于二次开发,请使用API方式访问键值存储服务,具体操作请参见《键值存储服务API参考》。 管理控制台方式 其他相关操作,请使用管理控制台方式访问键值存储服务。 如果用户已注册,可直接登录管理控制台,从主页选择“键值存储服务 KVS”。如果未注册,请参见
注册华为账号 并开通华为云并完成实名认证。 SDK方式 KVS提供Java、C++等主流语言,帮助用户使用SDK完成二次开发,使用SDK方式访问键值存储服务,具体操作请参见《键值存储服务SDK参考》。
-
KVS简介 键值存储服务(Key-Value Storage Service,KVS)主要面向游戏、大数据、互联网等业务场景提供完全托管的键值存储及索引服务,主要用于应用的键值类数据(如:元数据、描述数据、管理参数、状态数据)的存储,提供可预测的性能和无缝扩展,无需进行分区管理、硬件预置、集群扩展等操作。 使用KVS创建一个存储仓,在存储仓中创建一个或多个表,来存储和检索任意规模的数据。 虽然KVS服务支持您将数据同步到华为云键值存储指定Region的存储仓里,但是华为云并不感知您对象的具体内容。如果您的行为涉及跨境传输,请您确保使用本服务符合所适用的法律法规要求。
-
产品架构 KVS产品结构请参考图1。通过和其他产品、服务组合,KVS可以实现如下功能:
CES 实时采样KVS监控指标,提供及时有效的资源信息监控告警,支持配置监控告警,告警通知随时触发随时响应。 使用KVS在某个区域可以创建多个仓,在仓中可以创建多个表,在表中可以存储键值(Key-Value,简称KV)数据。 KVS提供本地二级索引、全局二级索引,帮助您快速检索表中的键值数据,实现快速且准确访问。 图1 KVS产品架构
-
产品功能 表1列出了KVS提供的主要功能特性。 表1 KVS功能概览 功能名称 功能描述 存储仓管理 存储仓是用来存储表数据的单元。用户可以根据自己的业务系统划分,创建不同的仓。支持创建、查询存储仓。 表管理 表是用来存储键值数据的集合,归属于某个仓。用户可以在一个仓中创建一个或多个表,用来储存键值数据。支持创建、查询表。 KV管理 KV是表的最小存储粒度,提供键到值的映射。KV数据存储在表中。支持插入、更新、删除、扫描KV数据。 索引管理 索引是用来辅助查询表中的KV数据,能够加速键值检索,准确访问键值数据。KVS提供本地二级索引和全局二级索引。支持创建、查询、删除索引。
-
操作步骤 登录KVS管理控制台。 在KVS管理控制台左侧导航栏选择“仓”,进入存储仓列表。 在仓列表中找到需要创建索引的表所在的仓,在仓对应的操作列,单击“创建表”,或者单击仓名称进入仓的详情页面,在“表信息”下单击“创建表”。 根据界面提示,选择计费模式、填写表详细信息或预置读/写吞吐量。 根据界面提示,配置“二级索引”。支持创建本地二级索引和全局二级索引。 单击“创建本地二级索引”,配置参数信息如表1所示。确认配置信息后单击“确定”。 图1 “创建本地二级索引”界面 表1 “创建本地二级索引”参数说明 类别 参数名称 描述 创建本地二级索引 名称 必选参数。 本地二级索引的名称。名称的长度范围为1-255个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”、“.”组成。名称不支持设置为“XPriIndex”。 排序键 必选参数。 排序键的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。首字母不支持设置为“_”。 摘要字段 可选参数。 本地二级索引的摘要字段。支持创建多个摘要。摘要的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。 首字母不支持设置为“_”。 单击“创建全局二级索引”,配置参数信息如表2所示。确认配置信息后单击“确定”。 图2 “创建全局二级索引”界面 表2 “创建全局二级索引”参数说明 类别 参数名称 描述 创建全局二级索引 名称 必选参数。 全局二级索引的名称。名称的长度范围为1-255个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”、“.”组成。名称不支持设置为“XPriIndex”。 分区键 必选参数。 分区键的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。 首字母不支持设置为“_”。 排序键 可选参数。 排序键的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。 首字母不支持设置为“_”。 读取吞吐量 输入范围:1-50000,单位:RCU。仅在预置计费模式下展示该字段并生效。 写入吞吐量 输入范围:1-50000,单位:WCU。仅在预置计费模式下展示该字段并生效。 摘要字段 可选参数。 全局二级索引的摘要字段。支持创建多个摘要。摘要的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。首字母不支持设置为“_”。 信息设置完成后,单击“确定”。
-
约束与限制 一个表支持创建5个本地二级索引和20个全局二级索引。 仅支持在创建表的过程中创建索引。 当一个主表创建多个全局二级索引时,这个主表下的全局二级索引之间的复合主键(分区键和排序键)不能重复。 单个全局二级索引中,不允许存在相同的键。 全局二级索引的分区键不能和主表的分区键完全相同。 当一个主表创建多个本地二级索引时,这个主表下的本地二级索引之间的排序键不能重复。 单个本地二级索引中,不允许存在相同的键。 本地二级索引的排序键不允许与主表的分区键重复。 本地二级索引的排序键不允许与主表的排序键重复。
-
SDK列表 表1提供了KVS服务支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获取安装包以及查看指导文档。 表1 SDK列表 编程语言 Github地址 参考文档 Java huaweicloud-sdk-java-v3 Java SDK使用指导 Python huaweicloud-sdk-python-v3 Python SDK使用指导 Go huaweicloud-sdk-go-v3 Go SDK使用指导 C++ huaweicloud-sdk-cpp-v3 C++ SDK使用指导 用户购买
VPC终端节点 ,创建内网
域名 ,内网域名即用户使用SDK访问KVS过程中使用到的终端节点。
-
请求示例 批量写请求,向test-store仓内的test-table-1表中插入和删除一个kv POST https://test-store.{endpoint}/v1/batch-write-kv
{
"table_opers" : [ {
"table_batch" : {
"table_name" : "test-table-1",
"kv_opers" : [ {
"put_kv" : {
"oper_id" : 1,
"kv_doc" : {
"owner" : "user-1",
"filename" : "test-file-1"
}
}
}, {
"delete_kv" : {
"oper_id" : 2,
"primary_key" : {
"owner" : "user-2",
"filename" : "test-file-2"
}
}
} ]
}
} ]
}
-
请求参数 表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操作。 delete_kv 否 delete_kv object 删除kv操作。 表5 put_kv 参数 是否必选 参数类型 描述 oper_id 是 Integer 请求内的操作编码,未成功的操作返回该标识。 kv_doc 否 Document 用户文档。 表6 delete_kv 参数 是否必选 参数类型 描述 oper_id 是 Integer 请求内的操作编码,未成功的操作返回该标识。 primary_key 是 Document 用户自定义的主键名及值。