云服务器内容精选

  • KV限制 KV类型包含字符串、布尔值、空值、浮点数、数组、映射、日期和ObjectId,对于这些类型的KV,一条KV的key和value之和最大为512KB,包含主键和本地二级索引。 字段名称长度范围为1-63个字节,大小写敏感,不支持“.”和“$”。“X”字符为前缀的字段名称为系统预留字段名称,目前系统预留字段名称包括“Xattr”和“Xblob”,不建议您使用作为字段名。 主键总长不超过1200个字节,且主键必须唯一。 使用API请求方式访问的KV,只能属于一个存储仓。 一个KV一定归属于某个表。 仓+表+主键可以唯一定位一条KV。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的IaaS、PaaS和SaaS类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的IaaS、PaaS和SaaS类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 什么是区域、可用区? 区域和可用区用来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 键值存储服务基本概念 存储仓(Store) 存储仓,简称仓,是用来存储表数据的单元。用户可以根据自己的业务系统划分,创建不同的仓。 表(Table) 表是用来存储键值数据的集合,归属于某个仓。用户可以在一个仓中创建多个表,用来储存键值数据。通过本地二级索引和全局二级索引可以快速而准确地检索到表中的键值数据。 KV(Key-Value) 键值数据(Key-Value),简称KV,是文档型的数据项,提供主键到Value的映射。KV数据存储在表中。 分区键和排序键 分区键:分区键是一个表的属性,用于确定该表中的每一个KV存储所在的分区。例如,对于一个用户表,可以指定用户名属性作为分区键。 KVS会根据此用户名的名称(KV)选择分区,同样的用户名名称存储在同一个分区。 排序键:排序键是一个表的属性,该表中的KV会根据排序键进行排序以后存储。查询数据时,您可以按照排序键输出数据。 创建表时,除表名称外,您还必须指定表的主键。表中的主键具有唯一性,因此,任意两个表中的主键都不相同。KVS支持两种不同类型的主键: 简单主键:由分区键构成。 复合主键:由分区键和排序键组合构成。 索引 索引是用来辅助查询表中的KV数据,能够加速键值检索,准确访问键值数据。KVS提供本地二级索引和全局二级索引。 本地二级索引:对于复合主键(分区键+排序键)的表,支持创建本地二级索引,实现分区键下的多个键值的辅助索引。键值写入时,自动生成并存储本地二级索引记录,并保证键值与本地二级索引记录的强一致。 全局二级索引:表支持创建非主键字段的全局检索,全局二级索引只保存索引记录,不保存完整键值内容。键值写入时,自动生成索引记录,并异步写入全局二级索引,键值与全局二级索引记录为最终一致。 关于存储仓、表、KV、索引之间的关系,如图1所示。 图1 KVS基本概念之间的关系 父主题: 基本概念
  • IAM 身份认证 用户访问KVS的方式有多种,包括KVS控制台、API、SDK,无论访问方式封装成何种形式,其本质都是通过KVS提供的REST风格的API接口进行请求。 KVS的接口支持认证请求。经过认证的请求总是需要包含一个签名值,该签名值以请求者的访问密钥(AK/SK)作为加密因子,结合请求体携带的特定信息计算而成。通过访问密钥(AK/SK)认证方式进行认证鉴权,即使用Access Key ID(AK)/Secret Access Key(SK)加密的方法来验证某个请求发送者身份。关于访问密钥的详细介绍及获取方式,请参见访问密钥(AK/SK)。
  • 产品功能 表1列出了KVS提供的主要功能特性。 表1 KVS功能概览 功能名称 功能描述 存储仓管理 存储仓是用来存储表数据的单元。用户可以根据自己的业务系统划分,创建不同的仓。支持创建、查询存储仓。 表管理 表是用来存储键值数据的集合,归属于某个仓。用户可以在一个仓中创建一个或多个表,用来储存键值数据。支持创建、查询表。 KV管理 KV是表的最小存储粒度,提供键到值的映射。KV数据存储在表中。支持插入、更新、删除、查询KV数据。 索引管理 索引是用来辅助查询表中的KV数据,能够加速键值检索,准确访问键值数据。KVS提供本地二级索引和全局二级索引。支持创建、查询、删除索引。
  • 产品优势 Serverless 云存储 无需购买计算资源且无需预置资源,完全托管,简单易用,为您节省运维成本,拥有云账号即可实现键值的存取。 存储结构灵活 支持BSON格式数据类型,原生数据格式无需字符串转换,数据处理更高效,且支持多数据类型字段自由组合。 数据读写效率高 支持本地二级索引和全局二级索引,提升检索效率; 支持前缀遍历,提升遍历效率。 数据高可用 提供区域内多可用区的同步读写,任一可用区故障均不影响业务; 提供多可用区的高可用集群,数据存储在多个可用区,任一可用区故障均不影响业务,数据可用性达99.99%,数据持久度达99.9999999999%。 数据安全可靠 KVS的传输链路支持HTTPS加密传输,TLS加密套件优先使用高安全加密算法; 支持KMS 数据加密 功能,消除在保护敏感数据时涉及的操作负担和复杂性。 弹性扩展无上限 用户表的数据规模可以无限扩展,访问流量可以自动扩展,且自动满足业务高峰低谷访问的弹性需求。 权限控制方式多 提供公网访问能力,对云内云外每个请求进行签名认证; 系统还会对用户进行运营权限检查。
  • 访问方式 云服务平台提供的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产品架构
  • 操作步骤 登录KVS管理控制台。 在KVS管理控制台左侧导航栏选择“仓”,进入存储仓列表。 单击仓名进入要插入KV的仓,单击表名进入要插入KV的表。 选择“KV信息”页签。 单击左上角的“插入KV”。 图1 “插入KV”界面 填写必选属性的属性值,即KV分区键和排序键的值。 【可选】如果您除了分区键和排序键外,还需要新增其他属性,可以单击“添加字段”选择KV类型,自定义属性和属性值。KV类型支持选择字符串、布尔值、空值、浮点数、数组、映射、二进制、日期和ObjectId。 所有属性和属性值填写完成后,单击右下角的“确定”,完成KV插入。 查看KV列表,检查新插入的KV是否在列表中,KV存在则插入成功,KV不存在则插入失败。
  • 开发流程 本文档主要介绍在CloudTable集群模式下如何调用HBase开源接口进行Java应用程序的开发。 开发流程中各阶段的说明如图1和表1所示。 图1 应用程序开发流程 表1 应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解HBase的基本概念,了解场景需求,设计表等。 HBase 准备开发环境 HBase应用程序当前推荐使用Java语言进行开发。可使用Eclipse工具。 开发环境简介 准备运行环境 应用程序的运行环境即客户端环境,请根据指导完成客户端的安装和配置。 准备Windows运行环境 准备工程 CloudTable为用户提供了不同场景下的样例程序,您可以导入样例工程进行程序学习。或者您可以根据指导,新建一个工程。 下载样例工程 配置并导入工程 根据场景开发工程 提供了Java语言的样例工程,包含从建表、写入到删除表全流程的样例工程。 开发HBase应用 编译并运行程序 指导用户将开发好的程序编译并提交运行。 编译并运行程序 安装客户端时编译并运行程序 或 未安装客户端时编译并运行程序 查看程序运行结果 程序运行结果会写在用户指定的路径下。用户还可以通过UI查看应用运行情况。 在Windows环境中:查看调测结果 在Linux环境中:查看调测结果 父主题: HBase应用开发指导
  • 样例代码 创建ClickHouse冷热分离表test_table。 CREATE TABLE IF NOT EXISTS test_table ( `timestamp` DATETIME NOT NULL COMMENT '日志时间', `type` INT NOT NULL COMMENT '日志类型', `error_code` INT COMMENT '错误码', `error_msg` VARCHAR(1024) COMMENT '错误详细信息', `op_id` BIGINT COMMENT '负责人id', `op_time` DATETIME COMMENT '处理时间' ) ENGINE = MergeTree() PARTITION BY timestamp ORDER BY timestamp TTL timestamp + INTERVAL 1 DAY TO DISK 'cold_disk' SETTINGS storage_policy = 'hot_to_cold'; 执行以下命令插入验证数据: insert into test_table values('2024-06-04 10:36:00','1','404','Resource Not Found','998756','2024-06-04 11:36:00'); -- hot data insert into test_table values('2024-06-04 10:35:00','1','404','Resource Not Found','998756','2024-06-04 11:35:00'); -- hot data insert into test_table values('2024-06-03 10:33:00','1','404','Resource Not Found','998756','2024-06-03 11:33:00'); -- cold data insert into test_table values('2024-03-27 09:10:00','1','200','ok','998756','2024-03-27 10:10:00'); -- cold data insert into test_table values('2024-03-25 11:08:00','1','404','Resource Not Found','998756','2024-03-25 12:08:00'); -- cold data 查询插入的数据。 查询数据。 select * from test_table FORMAT CS V; 查询数据表分区存储的分区字段名、分区和存储路径。 SELECT name,partition,active,path FROM system.parts WHERE database = 'default' and table = 'test_table' and active = 1; 图1 查询数据 当前系统时间为2024年6月4日22点,test_table表timestamp列超过一天的数据存储到了名为cold_disk的OBS下。
  • 场景说明 假定用户开发一个网站系统,test_tbl用于实时用户访问网站的记录,记录数据如下表: 表1 原始数据 timestamp type error_code error_msg op_id op_time 2024-06-04 10:36:00 1 404 Resource Not Found 998756 2024-06-04 11:36:00 2024-06-04 10:35:00 1 404 Resource Not Found 998756 2024-06-04 11:35:00 2024-06-03 10:33:00 1 404 Resource Not Found 998756 2024-06-03 11:33:00 2024-03-27 09:10:00 1 200 ok 998756 2024-03-27 10:10:00 2024-03-25 11:08:00 1 404 Resource Not Found 998756 2024-03-25 12:08:00
  • 数据查询 【规则】不要使用select *,只查询需要的字段,减少机器负载,提升查询性能。 OLAP分析场景,一张大宽表通常能有几百甚至上千列,选择其中少数的几列做维度列、指标列计算。在这种场景下,ClickHouse的数据也是按照列存储。如果使用select *,会加重系统的压力。 【规则】通过limit限制查询返回的数据量,节省计算资源、减少网络开销。 如果返回的数据量过大,客户端有可能出现内存溢出等服务异常。在前端使用ClickHouse的场景下,如果要查询的数据量比较大,建议每次可适当的进行分页查询返回数据,以减少查询数据量对网络带宽和计算资源的占用。 【规则】关联查询必须大表join小表。 对于ClickHouse来说,原则上需要把多表join模型提前加工为宽表模型,多个表以及维度表变化比较频繁情况下,不适合进行宽表加工处理,必须使用Join模型以实时查询到最新数据。两个表做join操作,建议大表join小表,必须使用关联条件。小表的数据量控制在百万~千万行级别,且需要在join前把小表数据通过条件进行有效过滤。 【建议】使用GLOBAL JOIN/IN替换普通的JOIN。 ClickHouse基于分布式表查询会转换成所有分片的本地表操作,再汇总结果。实际使用中,join和global join的执行逻辑差别很大,建议使用global join做分布式表查询。 【规则】合理使用数据表的分区字段和索引字段。 MergeTree引擎,数据是以分区目录形式进行组织存储的,在进行数据查询时,使用分区可以有效跳过无用的数据文件,减少数据的读取。 MergeTree引擎会根据索引字段进行数据排序,并且根据index_granularity的配置生成稀疏索引。根据索引字段查询,能快速过滤数据,减少数据的读取,大大提升查询性能。 【建议】明确数据查询的范围。 增加条件过滤和查询数据周期过滤,缩小数据查询范围。例如查询指定分区,通过指定分区字段会减少底层数据库扫描的文件数量,提升查询性能。例如:700个分区的千列大表,需要查询一个分区中有7000万数据,其他699个分区中无数据,虽然只有一个分区有数据,其他分区无数据,但是查询指定分区为百毫秒级性能,没有指定分区查询性能为1~2秒左右,性能相差20倍。 【建议】慎用final查询。 在查询语句的最后跟上final,通常是对于ReplacingMergeTree引擎,数据不能完全去重情况下,少数开发人员习惯使用final关键字进行实时合并去重操作(merge-on-read),保证查询数据无重复数据。可以通过argMax函数或其他方式规避此问题。 【建议】使用物化视图加速查询。 对于固定查询方式的场景,建议使用物化视图,提前做好数据聚合,相对于查询明细表,性能有数量级的提升。 【建议】物化视图创建时不会进行语法校验,只有发生实际数据插入与查询时才会出错。物化视图上线前,需做好充分验证。