华为云用户手册

  • 请求参数 表2 参数说明 参数 是否必须 类型 位置 描述 confUUID 是 String Query 会议UUID。 confType 是 String Query 会议类别。 online:在线会议,正在召开的会议 history:历史会议,已结束的会议 offset 否 Integer Query 查询偏移量。 取值:大于等于0,默认值为0。 大于等于最大条目数量,则返回最后一页的数据。 limit 否 Integer Query 查询的条目数量。 取值:1-500,默认值为20。 searchKey 否 String Query 查询条件。与会者名称可作为搜索内容。长度限制为1-512个字符。 X-Access-Token 是 String Header 授权令牌。获取“执行App ID鉴权”响应的accessToken。
  • 响应消息示例 HTTP/1.1 200 Date: Wed, 18 Dec 2019 06:20:40 GMT Content-Type: application/json;charset=UTF-8 Content-Length: 2450 Connection: keep-alive Expires: 0 Pragma: No-cache Cache-Control: no-cache http_proxy_id: 6fba0eff9f832b463580fb06c5b0ff9c Server: api-gateway X-Request-Id: ac9f75ec3c97c823f128526a924532b2 { "count": 2, "limit": 10, "offset": 0, "data": [{ "time": "2021-03-02", "confCount": "122", "confDuration": "1124", "attendeeCount": "261", "confConcurrentUsedCount": "11" }, { "time": "2021-03-03", "confCount": "122", "confDuration": "1124", "attendeeCount": "261", "confConcurrentUsedCount": "11" } ] }
  • CURL命令示例 curl -k -i -X GET -H 'X-Access-Token:stbX5ElstO5QwOwPB9KGQWUZ1DHoFrTsQjjC' -s "https://api.meeting.huaweicloud.com/v1/metrics/dashboard/statistic/conference/info?timeUnit=D&startTime=2021-03-02&endTime=2021-03-03&category=conference_info&offset=0&limit=20"
  • 请求消息示例 GET /v1/metrics/dashboard/statistic/conference/info?timeUnit=D&startTime=2021-03-02&endTime=2021-03-03&category=conference_info&offset=0&limit=20 Connection: keep-alive X-Access-Token: stbX5ElstO5QwOwPB9KGQWUZ1DHoFrTsQjjC user-agent: WeLink -desktop Host: api.meeting.huaweicloud.com User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_191)
  • 请求参数 表2 参数说明 参数 是否必须 类型 位置 描述 offset 否 Integer Query 查询偏移量。 取值:大于等于0,默认值为0 若offset大于等于最大条目数量,则返回最后一页数据,页数根据总条目数和limit计算得出 limit 否 Integer Query 查询的条目数量。 取值:1-500,默认值为20 timeUnit 是 String Query 查询时间维度,取值: D: 按日查询 M: 按月查询 startTime 是 String Query 查询时间范围的开始时间,格式根据timeUnit的取值而定。 timeUnit = D,格式:yyyy-MM-dd,此情况下startTime与endTime间隔最多31日 timeUnit = M,格式:yyyy-MM,此情况下startTime与endTime间隔最多12个月 endTime 是 String Query 查询时间范围的结束时间,格式根据timeUnit的取值而定。 timeUnit = D,格式:yyyy-MM-dd,此情况下startTime与endTime间隔最多31日 timeUnit = M,格式:yyyy-MM,此情况下startTime与endTime间隔最多12个月 category 是 String Query 查询分类,取值: conference_info: 会议总体数据 conference_hourly_info: 单日内会议总体数据 category = conference_hourly_info时,timeUnit只能取值'D',且startTime与endTime必须为同一天 X-Access-Token 是 String Header 授权令牌。获取“执行App ID鉴权”响应的accessToken。
  • 关于《华为云云商店商品安全审核标准3.0》上线通知 尊敬的华为云云商店合作伙伴: 感谢您长期以来对华为云云商店(以下简称:云商店)的支持。 为了更好地服务客户,提升云商店的商品安全性以及伙伴在上架过程中安全测试的效率,云商店发布了《云商店商品安全审核标准3.0》,并且在商品上架过程中提供了自动化安全测试和安全自检能力。自2024年10月11日起,在云商店平台上架的产品需要符合《云商店商品安全审核标准3.0》的要求。 1.具体各接入类型的上架方式的调整如下: 接入类型 上线前 上线后 相关指南 通用商品 联营商品 所有商品 镜像商品 1、商家需要提供HSS基线扫描结果和病毒扫描结果,邮件发送至平台安全人员审核。 2、提交镜像后等待安全人员进行人工测试和审核。 1、商家需要执行病毒扫描、HSS基线规则扫描、二进制扫描、WEB 漏洞扫描 。 2、提供手工测试用例的结果。 1、镜像文件在资产中心提交,自动化扫描+安全自检。 2、工具测试内容:病毒、漏洞(业界定义的高危),预置账号、弱密码规则等。 3、联营认证的海顿测试中,无需再执行安全测试。 《镜像类资产管理指导》https://support.huaweicloud.com/usermanual-marketplace/sp_topic_0000056.html License商品 无需测试 1、上传软件包至海顿平台,执行病毒扫描、HSS基线规则扫描、二进制扫描、WEB漏洞扫描。 2、提供手工测试用例的结果 1、软件包在在资产中心提交,自动化扫描+安全自检。 2、工具测试内容:病毒、漏洞(业界定义的高危)等 3、联营认证的海顿测试中,无需再执行安全测试。 《应用资产管理指导》https://support.huaweicloud.com/usermanual-marketplace/zh-cn_topic_0000002037060122.html SaaS商品 在卖家中心填入SaaS网站地址,自动触发WEB漏洞扫描 1、上传软件包至海顿平台,执行病毒扫描、HSS基线规则扫描、二进制扫描、WEB漏洞扫描。 2、提供手工测试用例的结果。 1、卖家中心的SAAS安全扫描界面自动触发WEB漏洞扫描+安全自检。 2、联营认证的海顿测试中,无需再执行安全测试。 《SaaS类商品安全漏洞扫描操作指导》https://support.huaweicloud.com/usermanual-marketplace/zh-cn_topic_0268096870.html 其他商品 不测试 不测试 商家发布商品时进行安全自检 2.您的响应方式: 如您有任何问题,可随时通过工单、服务热线(+86-4000-955-988 )或与云商店邮箱联系(partner@huaweicloud.com) 期待在您的支持下,云商店在2024年能获得更加快速的发展。 感谢您对华为云云商店的支持! 华为云云商店 2024年10月11日 父主题: 公告
  • 准备开发环境 安装开发工具 请根据所使用语言选择适合的开发工具。 安装2018.3.5或以上版本的IntelliJ IDEA,安装包请至IntelliJ IDEA官方网站下载。 安装3.0.3及以上版本Apache Maven,安装包请至Maven官方下载页面下载。 安装2019 version 16.8.4及以上版本的Visual Studio,安装包请至Visual Studio官方网站下载。 安装开发语言环境 Java:安装1.8.111或以上版本的Java Development Kit,安装包请至Oracle官方下载页面下载。 Python:安装2.7或3.X版本的Python,安装包请至Python官方下载页面下载。 Go:安装1.14及以上版本的Go,安装包请至Go官方下载页面下载。 C#:安装6.0及以上版本的.NET,安装包请至.NET官方下载页面下载。
  • 准备开发环境 安装开发工具 请根据所使用语言选择适合的开发工具。 安装2018.3.5或以上版本的IntelliJ IDEA,安装包请至IntelliJ IDEA官方网站下载。 安装2019 version 16.8.4及以上版本的Visual Studio,安装包请至Visual Studio官方网站下载。 安装开发语言环境 Java:安装1.8.111或以上版本的Java Development Kit,安装包请至Oracle官方下载页面下载。 Python:安装2.7或3.X版本的Python安装包,安装包请至Python官方下载页面下载。
  • 准备开发环境 安装开发工具 请根据所使用语言选择适合的开发工具。 安装2018.3.5或以上版本的IntelliJ IDEA,安装包请至IntelliJ IDEA官方网站下载。 安装2019 version 16.8.4及以上版本的Visual Studio,安装包请至Visual Studio官方网站下载。 安装开发语言环境 Java:安装1.8.111或以上版本的Java Development Kit,安装包请至Oracle官方下载页面下载。 Go:安装1.14及以上版本的Go安装包,安装包请至Go官方下载页面下载。 Python:安装2.7或3.X版本的Python安装包,安装包请至Python官方下载页面下载。 JavaScript:安装15.10.0及以上版本的Nodejs安装包,安装包请至Nodejs官方下载页面下载。 PHP:安装8.0.3及以上版本的PHP安装包,安装包请至PHP官方下载页面下载。 Android:安装4.1.2及以上版本的Android Studio,安装包请至Android Studio官方网站下载。
  • 应用场景 当在公网中调用APIG上公开的业务API时,如果不限制API调用的次数,随着用户的不断增加,会引起后端性能的下降,甚至会因为恶意用户发送的大量请求导致网站或程序崩溃。APIG提供了传统策略:流量控制,从API、用户、凭据、源IP等多个维度进行流控。 然而,随着用户多样性以及需求多样性的增加,传统流控策略无法满足更加精细的流量控制场景。比如针对某一请求参数的流控或者某一租户的流控,APIG在传统流量控制策略的基础上提供了插件策略:流量控制2.0,通过制定更加精细的方案来进行流控。 以下将以流量控制2.0为例,进行实践说明,讲述如何通过创建流量控制2.0策略来应对不同场景的网关限流。
  • 约束与限制 API添加流量控制2.0策略相当于流量控制2.0策略同步绑定了API。同一个环境中,一个API只能被一个流量控制2.0策略绑定,但一个流量控制2.0策略可以绑定多个API。(使用前提是绑定的API已发布。) 如果API未绑定流量控制2.0策略,流控限制值为实例“配置参数”中“ratelimit_api_limits”的参数运行值。 如果一个API绑定传统流量控制策略后,继续绑定流量控制2.0策略,传统流量控制策略会失效。 参数流控的规则最多可定义100个。 策略内容最大长度65535。 如果您的实例不支持流量控制2.0,请联系技术支持。
  • 方案优势 流量控制2.0策略可以限制单位时间内API的被调用次数,支持基础流控、参数流控和基于基础流控的特殊流控。 基础流控:可以对API、用户、凭据、源IP进行多维度流控,与已有的流量控制策略说明功能一致,但配置方式不兼容。 参数流控:支持根据Header、Path、Method、Query以及系统变量中的参数值进行自定义流控。 基于基础流控的特殊流控:对某个租户或凭证进行特定的流控。 支持从用户、凭据和时间段等不同的维度限制对API的调用次数。 支持按天以及按时分秒粒度的流量控制。
  • 调试API 为了方便观察,在创建策略后端时后端服务类型选择“Mock”,并且设置Mock返回结果。如果策略后端的后端服务类型为其他,可以观察对应的后端地址是否被成功访问。 在“API运行”页面单击“调试”,调试已创建的API。 响应结果中显示“200 OK”,表示API调用成功,并且返回值中有“策略后端”字样,表示设置的策略后端的匹配条件成功匹配到前端自定义认证函数返回体中的context字段中的键值对,API调用策略后端成功。否则,请参考错误码章节处理。 在“API运行”页面,单击“编辑”,进入API设置页面。 单击“下一步”,进入API的后端设置页面,修改已添加策略后端的策略条件值为“True”。 单击“完成”,完成API的编辑。 再次调试API。 由于此时设置的策略后端的参数和条件值没有匹配到前端自定义认证函数返回体中context字段下的任意键值对,因此,无法通过前端自定义认证参数匹配到API的策略后端,此时API的响应结果显示“200 OK”,但是返回值为“默认后端”,表示此时调用的是API的默认后端。否则,请参考错误码章节处理。
  • 配置API后端 前端设置完成后,单击“下一步”,进入后端设置页面。 设置“默认后端”的后端服务类型为“Mock”类型,Mock返回结果填写“默认后端”。 单击根据下表添加策略后端。 表2 配置策略后端 参数 配置说明 后端策略名称 填写后端策略名称,建议您按照一定的命名规则填写,方便您快速识别和查找。 后端服务类型 此处选择“Mock”。 Mock返回结果 此处填写“策略后端”。 策略条件 条件来源:选择“系统参数-前端认证参数”。 参数名称:填写前提条件已创建自定义认证函数返回体中context字段下的 "authstatus1"。 条件类型:选择“相等”。 条件值:填写前提条件已创建自定义认证函数返回体中context字段下的“False”。 单击“完成”,完成创建API。
  • 创建E CS 进入云服务器控制台。 单击“购买弹性云服务器”。 基础配置后,单击“下一步:网络配置”。 表9 基础配置 参数 配置说明 计费模式 选择“按需计费”。 区域 选择弹性云服务器所属区域,且与VPC2同一区域。 可用区 选择弹性云服务器所属可用区。 CPU架构 默认“x86计算”。 规格 根据业务规划,选择规格。 镜像 根据业务规划,选择镜像。 虚拟私有云 选择已创建的虚拟私有云“VPC2”。 主网卡 选择已创建的虚拟私有云的子网。 安全组 选择专享版实例中已创建的安全组。 弹性公网IP 选择“暂不购买”。 云服务器名称 填写弹性云服务器名称,建议您按照一定的命名规则填写,方便您快速识别和查找。 登录凭证 登录云服务器凭证,此处默认“密码”。 用户名 默认“root”。 密码 填写登录云服务器的密码。 确认密码 保证密码正确性。 企业项目 此处选择“default”。 同意协议声明后,单击“立即购买”。
  • 创建实例 进入API网关控制台。 在左侧导航栏选择“实例管理”。 单击“购买实例”。 表3 实例信息 参数 配置说明 计费模式 选择实例的计费模式,此处选择“按需计费”。 区域 选择实例所在的区域,且与VPC1同区域。 可用区 选择实例所在的可用区,此处选择“可用区1”。 实例名称 填写实例的名称,根据规划自定义。建议您按照一定的命名规则填写实例名称,方便您快速识别和查找。 实例规格 选择实例的容量规格,实例创建后规格不可修改,此处选择“专业版”。 可维护时间窗 选择技术支持对实例进行维护的时间段,建议选择业务量较少的时间段,保持默认设置“22:00:00---02:00:00”。 企业项目 选择实例所属的企业项目,保持默认设置“default”。 网络 选择已创建的虚拟私有云“VPC1”和子网。 安全组 单击“管理安全组”,创建安全组,企业项目选择“default”后,即可创建。 描述 填写实例的描述信息。 单击“立即购买”。 规格确认无误后,勾选用户协议和隐私政策的阅读并同意声明。开始创建实例,界面显示创建进度。
  • 支持审计的关键操作列表 在您的账户中启用 云审计 服务后,通过云审计服务,您可以记录与云专线服务相关的操作事件,便于日后的查询、审计和回溯。 云审计支持的云专线操作列表如表1所示。 表1 云审计支持的云专线操作列表 操作名称 资源类型 事件名称 创建物理连接 dcaasConnection createConnection 修改物理连接 dcaasConnection modifyConnection 删除物理连接 dcaasConnection deleteConnection 创建虚拟网关 dcaasVirtualGateway createVirtualGateway 修改虚拟网关 dcaasVirtualGateway modifyVirtualGateway 删除虚拟网关 dcaasVirtualGateway deleteVirtualGateway 创建虚拟接口 dcaasVirtualInterface createVirtualInterface 修改虚拟接口 dcaasVirtualInterface modifyVirtualInterface 删除虚拟接口 dcaasVirtualInterface deleteVirtualInterface 父主题: 使用 CTS 审计云专线关键操作
  • 监控云专线 监控是保持云专线可靠性、可用性和性能的重要部分,通过监控,用户可以观察云专线资源。为使用户更好地掌握自己的云专线运行状态,公有云平台提供了 云监控 。您可以使用该服务监控您的云专线,执行自动实时监控、告警和通知操作,帮助您更好地了解云专线的各项性能指标。 通过后续章节,您可以了解以下内容: 支持的基础监控指标 支持的网络质量监控指标(安装Agent) 设置告警规则 查看监控指标 父主题: 使用 CES 监控云专线
  • 基本语法 DROP [TEMPORARY] TABLE [IF EXISTS] [database_name.]name [ON CLUSTER cluster] [SYNC] 示例: 删除表t1。 drop table t1 SYNC; 在删除复制表时,因为复制表需要在Zookeeper上建立一个路径,存放相关数据。ClickHouse默认的库引擎是原子数据库引擎,删除Atomic数据库中的表后,它不会立即删除,而是会在24小时后删除。在删除表时,加上SYNC字段,即可解决该问题,例如:drop table t1 SYNC; 删除本地表和分布式表,则不会出现该问题,可不带SYNC字段,例如:drop table t1; 如果建表语句中包含了“ON CLUSTER ClickHouse集群名”,删除表命令: drop table 表名 ON CLUSTER default_cluster; 如果建表语句不包含“ON CLUSTER ClickHouse集群名”,删除表命令: drop table 表名; 删除数据表前,需确认此数据表是否应用中,以免引起不必要的麻烦。删除数据表后可在24小时内恢复,超过24小时无法恢复。恢复命令如下: set allow_experimental_undrop_table_query = 1; UNDROP TABLE 数据表名;
  • 功能简介 HBase通过org.apache.hadoop.hbase.client.Admin对象的createTable方法来创建表,并指定表名、列族名。创建表有两种方式(强烈建议采用预分Region建表方式): 快速建表,即创建表后整张表只有一个Region,随着数据量的增加会自动分裂成多个Region。 预分Region建表,即创建表时预先分配多个Region,此种方法建表可以提高写入大量数据初期的数据写入速度。 表名以及列族名不能包含特殊字符,可以由字母、数字以及下划线组成。
  • 代码样例 public void testCreateTable() { LOG .info("Entering testCreateTable."); // Specify the table descriptor. HTableDescriptor htd = new HTableDescriptor(tableName); // (1) // Set the column family name to info. HColumnDescriptor hcd = new HColumnDescriptor("info"); // (2) // Set data encoding methods. HBase provides DIFF,FAST_DIFF,PREFIX // and PREFIX_TREE hcd.setDataBlockEncoding(DataBlockEncoding.FAST_DIFF); // 注[1] // Set compression methods, HBase provides two default compression // methods:GZ and SNAPPY // GZ has the highest compression rate,but low compression and // decompression efficiency,fit for cold data // SNAPPY has low compression rate, but high compression and // decompression efficiency,fit for hot data. // it is advised to use SANPPY hcd.setCompressionType(Compression.Algorithm.SNAPPY); htd.addFamily(hcd); // (3) Admin admin = null; try { // Instantiate an Admin object. admin = conn.getAdmin(); // (4) if (!admin.tableExists(tableName)) { LOG.info("Creating table..."); admin.createTable(htd); // 注[2] (5) LOG.info(admin.getClusterStatus()); LOG.info(admin.listNamespaceDescriptors()); LOG.info("Table created successfully."); } else { LOG.warn("table already exists"); } } catch (IOException e) { LOG.error("Create table failed.", e); } finally { if (admin != null) { try { // Close the Admin object. admin.close(); } catch (IOException e) { LOG.error("Failed to close admin ", e); } } } LOG.info("Exiting testCreateTable."); }
  • 注意事项 注[1] 可以设置列族的压缩方式,代码片段如下: //设置编码算法,HBase提供了DIFF,FAST_DIFF,PREFIX和PREFIX_TREE四种编码算法 hcd.setDataBlockEncoding(DataBlockEncoding.FAST_DIFF); //设置文件压缩方式,HBase默认提供了GZ和SNAPPY两种压缩算法 //其中GZ的压缩率高,但压缩和解压性能低,适用于冷数据 //SNAPPY压缩率低,但压缩解压性能高,适用于热数据 //建议默认开启SNAPPY压缩 hcd.setCompressionType(Compression.Algorithm.SNAPPY); 注[2] 可以通过指定起始和结束RowKey,或者通过RowKey数组预分Region两种方式建表,代码片段如下: // 创建一个预划分region的表 byte[][] splits = new byte[4][]; splits[0] = Bytes.toBytes("A"); splits[1] = Bytes.toBytes("H"); splits[2] = Bytes.toBytes("O"); splits[3] = Bytes.toBytes("U"); admin.createTable(htd, splits);
  • ClickHouse通过MySQL引擎对接RDS服务 MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERT和SELECT查询,以方便您在ClickHouse与MySQL之间进行数据交换。 MySQL引擎使用语法: CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] ENGINE = MySQL('host:port', ['database' | database], 'user', 'password') 表1 MySQL数据库引擎参数说明 参数 描述 hostport RDS服务MySQL数据库实例IP地址和端口。 database RDS服务MySQL数据库名。 user RDS服务MySQL数据库用户名。 password RDS服务MySQL数据库用户密码。 MySQL引擎使用示例: 连接到RDS服务的MySQL数据库。详细操作可以参考RDS服务MySQ L实例 连接。 在MySQL数据库上创建表,并插入数据。 使用客户端命令连接ClickHouse。 非安全集群连接命令 ./clickhouse client --host 集群内网地址 --port 端口 --user admin --password password 安全集群连接命令,详细操作请参见ClickHouse安全通道章节。 ./clickhouse client --host 集群内网地址 --port 端口 --user admin --password password --secure --config-file /root/config.xml 集群内网地址:集群详情页面中集群访问地址,这里替换成您自己购买的集群的访问地址。 在ClickHouse中创建MySQL引擎的数据库,创建成功后自动与MySQL服务器交换数据。 CREATE DATABASE mysql_db ENGINE = MySQL('RDS服务MySQL数据库实例IP地址:MySQL数据库实例端口', 'MySQL数据库名', 'MySQL数据库用户名', 'MySQL数据库用户名密码'); 切换到新建的数据库mysql_db,并查询表数据。 USE mysql_db; 在ClickHouse中查询MySQL数据库表数据。 SELECT * FROM mysql_table; ┌─int_id─┬─float─┐ │ 1 │ 2 │ └─────┴──── ┘ 新增插入数据后也可以正常进行查询。 INSERT INTO mysql_table VALUES (3,4); SELECT * FROM mysql_table; ┌─int_id─┬─float─┐ │ 1 │ 2 │ │ 3 │ 4 │ └─────┴──── ┘
  • 代码样例 下面代码片段在com.huaweicloudtable.hbase.examples包中。 private static void init() throws IOException { // Default load from conf directory conf = HBaseConfiguration.create(); // 注[1] String userdir = System.getProperty("user.dir") + File.separator + "conf" + File.separator; Path hbaseSite = new Path(userdir + "hbase-site.xml"); if (new File(hbaseSite.toString()).exists()) { conf.addResource(hbaseSite); } }
  • Python代码样例 # -*- coding: utf-8 -*- # 引入公共模块 import sys import os # 引入Thrift自带模块,如果不存在则需要执行pip install thrift安装 from thrift.transport import TTransport from thrift.protocol import TBinaryProtocol from thrift.transport import THttpClient from thrift.transport import TSocket # 引入通过hbase.thrift生成的模块 gen_py_path = os.path.abspath('gen-py') sys.path.append(gen_py_path) from hbase import THBaseService from hbase.ttypes import TColumnValue, TColumn, TTableName, TTableDescriptor, TColumnFamilyDescriptor, TGet, TPut, TScan # 配置CloudTable HBase集群的ThriftServer的IP,可以通过集群的详情页面获取 host = "x.x.x.x" socket = TSocket.TSocket(host, 9090) transport = TTransport.TBufferedTransport(socket) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = THBaseService.Client(protocol) transport.open() # 测试表名 tableNameInBytes = "test".encode("utf8") tableName = TTableName(ns="default".encode("utf8"), qualifier=tableNameInBytes) # 预分region的split key splitKeys=[] splitKeys.append("row3".encode("utf8")) splitKeys.append("row5".encode("utf8")) # 建表操作 client.createTable(TTableDescriptor(tableName=tableName, columns=[TColumnFamilyDescriptor(name="cf1".encode("utf8"))]), splitKeys) print("Create table %s success." % tableName) # Put单条数据 put = TPut(row="row1".encode("utf8"), columnValues=[TColumnValue(family="cf1".encode("utf8"), qualifier="q1".encode("utf8"), value="test_value1".encode("utf8"))]) client.put(tableNameInBytes, put) print("Put single row success.") # Put多条数据 puts = [] puts.append(TPut(row="row4".encode("utf8"), columnValues=[TColumnValue(family="cf1".encode("utf8"), qualifier="q1".encode("utf8"), value="test_value1".encode("utf8"))])) puts.append(TPut(row="row6".encode("utf8"), columnValues=[TColumnValue(family="cf1".encode("utf8"), qualifier="q1".encode("utf8"), value="test_value1".encode("utf8"))])) puts.append(TPut(row="row8".encode("utf8"), columnValues=[TColumnValue(family="cf1".encode("utf8"), qualifier="q1".encode("utf8"), value="test_value1".encode("utf8"))])) client.putMultiple(tableNameInBytes, puts) print("Put rows success.") # Get单条数据 get = TGet(row="row1".encode("utf8")) result = client.get(tableNameInBytes, get) print("Get Result: ", result) # Get多条数据 gets = [] gets.append(TGet(row="row4".encode("utf8"))) gets.append(TGet(row="row8".encode("utf8"))) results = client.getMultiple(tableNameInBytes, gets) print("Get multiple rows: ", results) # Scan数据 startRow, stopRow = "row4".encode("utf8"), "row9".encode("utf8") scan = TScan(startRow=startRow, stopRow=stopRow) caching=1 results = [] while True: scannerResult = client.getScannerResults(tableNameInBytes, scan, caching) lastOne = None for result in scannerResult: results.append(result) print("Scan Result: ", result) lastOne = result # 没有更多数据,退出 if lastOne is None: break else: # 重新生成下一次scan的startRow newStartRow = bytearray(lastOne.row) newStartRow.append(0x00) scan = TScan(startRow=newStartRow, stopRow=stopRow) # 禁用和删除表 client.disableTable(tableName) print("Disable table %s success." % tableName) client.deleteTable(tableName) print("Delete table %s success." % tableName) # 所有操作都结束后,关闭连接 transport.close()
  • VersionedCollapsingMergeTree 为了解决CollapsingMergeTree表引擎乱序写入导致无法正常折叠(删除)问题,云数据库ClickHouse提供了VersionedCollapsingMergeTree表引擎,在建表语句中新增一列Version,用于在乱序情况下记录状态行与取消行的对应关系。后台Compaction时会将主键相同、Version相同、Sign相反的行折叠(删除)。 建表语句。 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER ClickHouse集群名] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... ) ENGINE = VersionedCollapsingMergeTree(sign, version) [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [SETTINGS name=value, ...]
  • AggregatingMergeTree AggregatingMergeTree表引擎也是预先聚合引擎的一种,用于提升聚合计算的性能。 建表语句。 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER ClickHouse集群名] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... ) ENGINE = AggregatingMergeTree() [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [TTL expr] [SETTINGS name=value, ...]
  • Replicated*MergeTree引擎 ClickHouse中的所有MergeTree家族引擎前面加上Replicated就成了支持副本的合并树引擎。 图1 合并树引擎图 Replicated表引擎的创建模板: ENGINE = Replicated*MergeTree('ZooKeeper存储路径','副本名称', ...) 表5 参数表 参数 说明 ZooKeeper存储路径 ZooKeeper中该表相关数据的存储路径,建议规范化,如:/clickhouse/tables/{shard}/数据库名/表名。 副本名称 一般用{replica}即可。
  • ReplacingMergeTree 为了解决MergeTree表引擎相同主键无法去重的问题,云数据库ClickHouse提供了ReplacingMergeTree表引擎,用于删除主键值相同的重复项。 建表语句。 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER ClickHouse集群名] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... ) ENGINE = ReplacingMergeTree([ver]) [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [SETTINGS name=value, ...]
  • CollapsingMergeTree CollapsingMergeTree表引擎用于消除ReplacingMergeTree表引擎的功能限制。该表引擎要求在建表语句中指定一个标记列Sign,按照Sign的值将行分为两类:Sign=1的行称为状态行,用于新增状态。Sign=-1的行称为取消行,用于删除状态。 建表语句。 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER ClickHouse集群名] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... ) ENGINE = CollapsingMergeTree(sign) [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [SETTINGS name=value, ...]
共100000条