华为云用户手册

  • 配置阻断IP的防护规则需要注意哪些? 配置阻断IP的防护规则需注意以下几点: 建议优先配置精准的IP(如192.168.10.5),减少网段配置,避免误拦截。 对于反向代理IP(如内容分发网络(CDN)、DDoS高防、 Web应用防火墙 (WAF)的回源IP),请谨慎配置阻断的防护规则,建议配置放行的防护规则或白名单。 对于正向代理IP(如公司出口IP),影响范围较大,请谨慎配置阻断的防护规则。 配置“地域”防护时,需考虑公网IP可能更换地址的情况。 父主题: 功能类
  • 项目级权限 通过需求管理创建的所有项目都支持基于本项目的权限设置,且每一个项目的权限设置相互独立。 在需求管理中,角色包含四大类:项目管理员(项目创建者、项目经理、测试经理)、开发者(开发人员、测试人员、参与者)、浏览者和运维经理。 项目创建者:项目的创建者。 项目经理:项目开发管理员。 测试经理:项目测试管理员。 开发人员:参与项目开发的人员。 测试人员:参与项目测试的人员。 参与者:参与项目指定工作处理的人员。 浏览者:关注或浏览项目内容的成员。 运维经理:参与项目维护工作的成员。 表3 默认角色权限说明 角色 项目 迭代 工作项 设置 (成员/通知/模块/领域/自定义/审核) 报表 文档管理 Wiki管理 项目创建者 修改项目 删除项目 归档项目 移交项目创建者 新建迭代 修改迭代 删除迭代 状态设置 新建工作项 复制工作项 编辑工作项 删除工作项 导入工作项 导出工作项 成员设置(含添加、编辑、修改项目角色、移出、审核成员) 角色及权限的设置(含新建、编辑、删除角色、修改不同角色权限) 工作项自定义设置(含工作项模板编辑、状态与流转设置、公共字段设置、公共状态设置界面数据的增删改) 模块设置(含新建、编辑、删除) 领域设置(含新建、编辑、删除) 通知设置(修改通知项) 新建报表 编辑报表 删除报表 移动报表 导出报表 新建分类 重命名分类 移动分类 删除分类 管理项目下的所有文档:创建、修改、删除目录 上传、下载、删除、修改文件 管理项目下的所有词条: 创建、编辑、删除词条 移动词条分类 设置栏目 编辑布局 项目经理 没有删除项目权限 没有移交项目创建者权限 归档项目 修改项目 测试经理 开发人员 查看权限 查看权限 新建工作项 复制工作项 导入工作项 导出工作项 修改自己创建的工作项或修改处理人为自己的工作项 删除自己创建的工作项 只能查看“成员管理”页面 新建报表 新建分类 导出报表 可编辑、删除自己的创建的报表 不能删除文档,目录 其他权限同“项目创建者” 只能删除自己创建的词条 其他权限同“项目创建者” 测试人员 查看权限 查看权限 参与者 查看权限 查看权限 浏览者 查看权限 查看权限 查看权限 只能查看“成员管理”页面 查询和预览报表 查看、预览和下载文档权限 查看权限 运维经理 查看权限 查看权限 新建工作项 复制工作项 导入工作项 导出工作项 修改自己创建的工作项或修改处理人为自己的工作项 删除自己创建的工作项 只能查看“成员管理”页面 新建报表 新建分类 导出报表 可编辑、删除自己的创建的报表 不能删除文档,目录 其他权限同“项目创建者” 只能删除自己创建的词条 其他权限同“项目创建者”
  • 案例 请求令牌自定义属性认证。 apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: detailed-jwt spec: action: ALLOW rules: - from: - source: requestPrincipals: ["weather@cloudnative-istio.book/weather"] when: - key: request.auth.claims[role] values: ["editor"]
  • 创建请求认证 支持YAML创建对端认证。 登录U CS 控制台,在左侧导航栏中单击“服务网格”。 单击服务网格名称,进入详情页。 在左侧导航栏,单击“服务安全”下的“请求认证”,进入请求认证详情页。 单击右上角“YAML创建”,弹出请求认证YAML创建界面。 为命名空间下的服务访问,校验请求中的认证信息。 apiVersion: security.istio.io/v1beta1 kind: RequestAuthentication # 创建服务安全类别为请求认证 metadata: name: forecast # 请求认证名 namespace: weather # 在weather命名空间下创建 spec: selector: matchLabels: app: forecast # 标签键值对 jwtRules: - issuer: "weather@cloudnative-istio.book " jwksUri: https://cloudnative-istio.book/jwks-demo/jwks
  • 应用场景 在分布式集群场景下,为了方便用户对集群进行应用部署,实现自动化应用下发功能。UCS配置管理提供从仓库资源到Kubernetes集群自动部署应用配置的核心能力,通过采用Kustomize组织和定制资源集的方式配置仓库,提供对华为云集群、多云集群、本地集群和附着集群进行跨命名空间、跨集群、跨舰队的配置分发与配置管理的能力。对用户部署在各集群的业务提供实时的状态观测和 消息通知 ,以确保应用出现问题时可以快速识别和定位,保障使用客户业务App的终端用户的使用体验和服务级别目标(SLO)达成。
  • 基本概念 灰度版本 一个服务仅支持发布一个灰度版本,可以对灰度版本配置相应的灰度策略。 灰度策略 当您需要在生产环境发布一个新的待上线版本时,您可以选择添加一个灰度版本,并配置相应的灰度策略,将原有的生产环境的默认版本的流量引流一部分至待上线版本。经过评估稳定后,可以将此灰度版本接管所有流量,下线原来的版本,从而接管原有的生产环境的版本上的流量。 暂不支持对已定义delegate VirtualService的服务创建灰度发布。
  • 操作步骤 登录UCS控制台,在左侧导航栏中单击“服务网格”。 单击服务网格名称,进入详情页。 在左侧导航栏,单击“服务中心”下的“网格服务”,进入网格服务列表页面。 单击服务名,进入服务详情页下的“灰度发布”页签。 单击“创建灰度发布”。 设置灰度发布参数: HTTP协议服务路由 表1 HTTP协议服务路由参数 匹配条件参数 URI StringMatch类型,统一资源标识符,可选完全匹配/前缀匹配/正则匹配 输入URI,复选框可选择是否忽略大小写 Scheme StringMatch类型,表示协议采集,可选完全匹配/前缀匹配/正则匹配 输入Scheme Method StringMatch类型,表示请求方法,可选完全匹配/前缀匹配/正则匹配 输入Method Authority StringMatch类型,表示权限配置,可选完全匹配/前缀匹配/正则匹配 输入Authority 头域 Cookie内容 基于HTTP Cookie 计算哈希,可选完全匹配/前缀匹配/正则匹配 输入值 自定义Header 基于HTTP Header 计算哈希,可选完全匹配/前缀匹配/正则匹配 输入键值对 用户代理 根据所需操作系统,选择用户代理 端口 表示请求的服务端口,下拉列表中选择一个可用的端口号 参数 表示匹配URL中的请求参数,可选完全匹配/前缀匹配/正则匹配 输入键值对 源负载标签 map类型的键值对,表示请求来源的负载匹配标签 源命名空间 匹配源服务的命名空间 服务目标参数 版本 选择服务子集版本 流量权重 可以控制实例上接收的流量比例,输入值必须在0到100之间 TLS 协议服务路由 表2 TLS协议服务路由参数 匹配条件参数 sniHost 用于匹配TLS请求的SNI。SNI的值必须是服务路由的hosts的子集 目标子网 目标IP地址匹配的IP子网 端口 访问的目标端口 源负载标签 map类型的键值对,表示请求来源的负载匹配标签 源命名空间 匹配源服务的命名空间 服务目标参数 版本 选择服务子集版本 流量权重 可以控制实例上接收的流量比例,输入值必须在0到100之间 TCP 协议服务路由 表3 TCP协议服务路由参数 匹配条件参数 目标子网 目标IP地址匹配的IP子网 端口 访问的目标端口 源负载标签 map类型的键值对,表示请求来源的负载匹配标签 源命名空间 匹配源服务的命名空间 服务目标参数 版本 选择服务子集版本 流量权重 可以控制实例上接收的流量比例,输入值必须在0到100之间 设置完成后,单击右下角“提交”。 系统自动跳转到服务详情页下的“灰度发布”页签,可以查看到创建的灰度版本、协议类型等详细信息。
  • 约束与限制 仅支持1.19及以上版本的集群创建。 使用HPA需要安装能够提供Metrics API的插件,您可根据集群版本和实际需求选择其中之一: metrics-server:提供基础资源使用指标,例如容器CPU和内存使用率。所有集群版本均可安装。 kube-prometheus-stack:除基础资源指标外,还支持提供自定义指标。需将Prometheus注册为Metrics API的服务,详见通过Metrics API提供资源指标。该插件支持v1.19及以后的集群版本。 只有CCE集群可以直接安装kube-prometheus-stack插件,并且选择Server模式。 Server模式:本地存储数据,占用资源较多,支持自定义指标能力。 在通过Metrics API创建资源指标时,需要删除"release: cceaddon-prometheus"。
  • 概述 Kubernetes中的HPA(Horizontal Pod Autoscaler)是一种自动扩展机制,它可以根据应用程序的负载自动调整Pod的数量,以确保应用程序的可用性和性能。在多集群时代,单集群的HPA无法满足跨集群的扩展能力、统一管理能力、扩展功能的高可用能力以及限制多个集群中的资源、成本阈值的能力。 将Karmada中引入了FederatedHPA,即联邦HPA,用户可以同时通过配置PropagationPolicy来使用各种功能,比如可以在扩展工作负载时,让工作负载被调度到具有更多资源的集群,以解决单个集群的资源限制,提高扩展故障发生时的恢复能力。FederatedHPA为跨多个集群的工作负载提高多集群的整体扩展阈值、稳定性和资源使用率,为跨多个集群的工作负载扩展提供了更大的灵活性。FederatedHPA控制器通过使用标签选择器定期查询指标数据。 karmada-apiserver收到指标查询,会路由到之前通过 API服务 注册的karmada-metrics-adapter。 karmada-metrics-adapter一直在监控集群的Pod,当请求发来时,它会查询目标集群(Pod所在的集群)的指标数据。收集指标后,karmada-metrics-adapter将整合数据并将数据返回。 FederatedHPA控制器会根据指标数据计算所需要的副本,并直接扩展工作负载。
  • YAML编辑基于组合条件的分流 当前数据选择YAML,在编辑栏进行编辑。YAML设置示例如下(根据实际需求调整配置参数): apiVersion: v1 kind: VirtualService metadata: name: reviews-route spec: hosts: - reviews.prod.svc.cluster.local http: - route: - destination: host: reviews.prod.svc.cluster.local subset: v2 weight: 25 - destination: host: reviews.prod.svc.cluster.local subset: v1 weight: 75 - match: - headers: end-user: exact: jason uri: prefix: "/ratings/v2/" route: - destination: host: ratings.prod.svc.cluster.local
  • 数据规划 在AWS基础设施上构建多云集群时,将自动在AWS控制台创建以下资源,请确保资源配额足够: 表1 资源数量 资源类型 EC2 NAT VPC 子网 路由表 互联网网关 弹性IP 安全组 网络ACL ELB 网络接口 存储卷 数量 3台 3个 1个 6个 7个 1个 3个 5个 1个 1个 4个 6块 表2 EC2资源规格 节点类型 数量 CPU (Cores) Mem (GiB) root盘 非root盘 备注 集群管理节点 3 8 32 100 200 t3.2xlarge型号 集群计算节点 按需 8 32 100 200 数量按需可扩展 表3 IAM 权限 权限类型 权限名称 IAMRole AWSIAMRoleNodes、AWSIAMRoleControlPlane、AWSIAMRoleControllers IAMInstanceProfile AWSIAMInstanceProfileNodes、AWSIAMInstanceProfileControlPlane、AWSIAMInstanceProfileControllers IAMManagedPolicy AWSIAMManagedPolicyCloudProviderNodes、AWSIAMManagedPolicyCloudProviderControlPlane、AWSIAMManagedPolicyControllers 父主题: 多云集群
  • YAML编辑基于权重的分流 当前数据选择YAML,在编辑栏进行编辑。YAML设置示例如下(根据实际需求调整配置参数): apiVersion: v1 kind: VirtualService metadata: name: reviews-route spec: hosts: - reviews.prod.svc.cluster.local http: - route: - destination: host: reviews.prod.svc.cluster.local subset: v2 weight: 25 # 设置权重 - destination: host: reviews.prod.svc.cluster.local subset: v1 weight: 75 # 设置权重
  • YAML编辑基于条件的分流 当前数据选择YAML,在编辑栏进行编辑。YAML设置示例如下(根据实际需求调整配置参数): apiVersion: v1 kind: VirtualService metadata: name: ratings-route spec: hosts: - ratings.prod.svc.cluster.local http: - match: - headers: end-user: exact: jason uri: prefix: "/ratings/v2/" route: - destination: host: ratings.prod.svc.cluster.local
  • 开启华为云集群控制面日志 创建集群时开启 登录云容器引擎(CCE)控制台。 在控制台上方导航栏,选择集群,单击“购买”。 在“插件选择”页面中,勾选“云原生日志采集” 在“插件配置”页面中,“云原生日志采集插件”选择“自定义安装”,点击“控制面组件日志”开启采集。 采集容器标准输出:开启后,将创建名为default-stdout的日志策略,并上报所有命名空间下的标准输出到 云日志 服务(LTS)。 采集Kubernetes事件:开启后,将创建名为default-event的日志策略,并上报所有命名空间下的Kubernetes事件到云日志服务(LTS)。 配置完成后,单击右下角“规格确认”,在弹出的窗口中单击“确定”,完成创建。
  • 查看集群控制面组件日志 通过控制台查看目标集群控制面组件日志 登录容器舰队控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 选择“控制面组件日志”页签,在控制面日志中选中需要查看的日志主题,支持的控制面组件日志请参见集群控制面组件说明。关于该页面的操作详情,请参见LTS用户指南。 通过LTS控制台查看目标集群控制面组件日志 登录LTS控制台,选择“日志管理”页面。 通过集群ID查到对应的日志组,单击该日志组名称,查看日志流,详情请参见LTS用户指南。
  • 开启本地集群控制面日志 集群未安装云原生日志采集插件 安装云原生日志采集插件时,可通过勾选对应控制面组件,创建默认日志采集策略,采集对应组件日志上报到LTS。安装方法见:启用云原生日志采集插件采集日志。 集群已安装云原生日志采集插件 登录容器舰队控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 右上角单击“日志采集策略”,将显示当前集群所有上报LTS的日志策略。 单击上方“创建日志策略”,输入要采集的配置信息。 策略模板:若安装插件时未开启控制面组件的采集策略,或者删除了对应的日志策略,可通过该方式重新创建对应组件采集策略。 日志查看:可直接在“日志中心”页面,“控制面组件日志”页签中查看,选择日志策略配置的日志流名称,即可查看上报到云日志服务(LTS)的日志。
  • asm-iam-authenticator使用参考 asm-iam-authenticator作为k8s client端的认证插件,主要提供了generate-kubeconfig和token两个子命令。 A tool to authenticate to ASM using HuaweiCloud IAM credentials Usage: asm-iam-authenticator [command] Available Commands: completion Generate the autocompletion script for the specified shell generate-kubeconfig Generate or modify kubeconfig files based on user configuration help Help about any command token Authenticate using HuaweiCloud IAM and get token for ASM Flags: --alsologtostderr log to standard error as well as files (no effect when -logtostderr=true) -h, --help help for asm-iam-authenticator --log_dir string If non-empty, write log files in this directory (no effect when -logtostderr=true) --log_file string If non-empty, use this log file (no effect when -logtostderr=true) --logtostderr log to standard error instead of files (default true) -v, --v Level number for the log level verbosity --version version for asm-iam-authenticator Use "asm-iam-authenticator [command] --help" for more information about a command. 其中,Flags主要为日志选项。 token token子命令用于获取用户token,获取token的认证方式有用户名/密码、ak/sk两种,选择其中一种即可。 Authenticate using HuaweiCloud IAM and get token for ASM Usage: asm-iam-authenticator token [flags] Flags: --ak string IAM access key ID --aksk-dir string The directory of IAM access key(AK) and secret access key(SK) --cache Cache the token credential on disk until it expires (default true) --domain-name string IAM domain name, typically your account name -h, --help help for token --iam-endpoint string HuaweiCloud IAM endpoint, i.e. https://iam.cn-north-4.myhuaweicloud.com (default "https://iam.myhuaweicloud.com") --insecure-skip-tls-verify If true, the iam server's certificate will not be checked for validity. (default true) --password string IAM user password --project-id string IAM project id, project id and project name should not be empty at same time --project-name string IAM project name, project id and project name should not be empty at same time --sk string IAM secret access key --token-expired-refresh Whether refresh the cached token when it may have expired resulting unauthorized. If true, we will use client.authentication.k8s.io/v1alpha1 api version. Otherwise, use client.authentication.k8s.io/v1beta1 --token-only Return token only for other tool integration --user-name string IAM user name. Same as domain-name when using main account, otherwise use iam user name 其中,Flags分为用户名密码、AKSK和公共配置。 表1 用户名/密码配置 Command Flag Environment Value Description domain-name DOMAIN_NAME 租户名,即账号名,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 user-name USER_NAME 子用户名,即IAM用户名。若不配置与domain-name一致。 详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 password PASSWORD 用户或子用户密码。 表2 AK/SK配置 Command Flag Environment Value Description ak AC CES S_KEY_ID ak、sk的获取方法请参见获取AK/SK,ak为文件中Access Key部分,sk为文件中Secret Key部分。 sk SECRET_ACCESS_KEY 表3 公共配置 Command Flag Environment Value Description iam-endpoint IAM_ENDPOINT IAM的Endpoint,必须配置,详情请参见https://developer.huaweicloud.com/endpoint?IAM。 project-name PROJECT_NAME 项目名,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 project-id PROJECT_ID 项目ID,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 insecure-skip-tls-verify INSECURE_SKIP_TLS_VERIFY 是否跳过对CCI/IAM服务端的校验,默认为true。 cache CREDENTIAL_CACHE 是否开启将IAM Token缓存到本地,提高访问性能,默认为true。 注意: 在非安全环境,建议关闭此选项。 generate-kubeconfig 为用户直接生成KubeConfig配置,若指定的KubeConfig已存在,则会注入新的server、user、context配置,并将当前的KubeConfig context切换到此次配置的结果。 Generate or modify kubeconfig files based on user configuration. Sets a cluster entry, a user entry and a context entry in kubeconfig and use this context as the current-context. The loading order follows these rules: 1. If the --kubeconfig flag is set, then only that file is loaded. The flag may only be set once and no merging takes place. 2. If $KUBECONFIG environment variable is set, then it is used as a list of paths (normal path delimiting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the last file in the list. 3. Otherwise, ${HOME}/.kube/config is used and no merging takes place. Examples: # Generate kubeconfig to ${HOME}/.kube/config using aksk asm-iam-authenticator generate-kubeconfig --mesh-endpoint=https://127.0.0.1:5443 --ak=*** --sk=*** # Generate kubeconfig to ${HOME}/.kube/config using domain name and password asm-iam-authenticator generate-kubeconfig --mesh-endpoint=https://127.0.0.1:5443 --domain-name=*** --password=*** Usage: asm-iam-authenticator generate-kubeconfig [flags] Flags: --ak string IAM access key ID --aksk-dir string The directory of IAM access key(AK) and secret access key(SK) --cache Cache the token credential on disk until it expires (default true) --domain-name string IAM domain name, typically your account name -h, --help help for generate-kubeconfig --iam-endpoint string HuaweiCloud IAM endpoint, i.e. https://iam.cn-north-4.myhuaweicloud.com (default "https://iam.myhuaweicloud.com") --insecure-skip-tls-verify If true, the iam server's certificate will not be checked for validity. (default true) --kubeconfig string use a particular kubeconfig file --mesh-endpoint string Mesh server endpoint, i.e. https://127.0.0.1:5443 --mesh-region string Mesh region, i.e. cn-north-4 --password string IAM user password --project-id string IAM project id, project id and project name should not be empty at same time --project-name string IAM project name, project id and project name should not be empty at same time --sk string IAM secret access key --token-expired-refresh Whether refresh the cached token when it may have expired resulting unauthorized. If true, we will use client.authentication.k8s.io/v1alpha1 api version. Otherwise, use client.authentication.k8s.io/v1beta1 --token-only Return token only for other tool integration --user-name string IAM user name. Same as domain-name when using main account, otherwise use iam user name --validation Validate kubeconfig by trying to access Mesh with existing config (default true) 父主题: 使用kubectl连接网格控制面
  • rb_xor_cardinality_agg(roaringbitmap) 描述:将分组内的roaringbitmap按照异或的逻辑合并后的基数。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT a, rb_xor_cardinality_agg(b) FROM r1 GROUP BY a ORDER BY 1; a | rb_xor_cardinality_agg ----+------------------------ 1 | 0 2 | 1 3 | 1 4 | 1 5 | 1 6 | 1 7 | 1 8 | 1 9 | 1 10 | 1 (10 rows)
  • rb_or_cardinality_agg(roaringbitmap) 描述:将分组内的roaringbitmap按照并集计算后的基数。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT a, rb_or_cardinality_agg(b) FROM r1 GROUP BY a ORDER BY 1; a | rb_or_cardinality_agg ----+----------------------- 1 | 1 2 | 2 3 | 2 4 | 2 5 | 2 6 | 2 7 | 2 8 | 2 9 | 2 10 | 2 (10 rows)
  • rb_and_cardinality_agg(roaringbitmap) 描述:分组内的roaringbitmap按照交集计算后的基数。 返回值类型:int 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT a, rb_and_cardinality_agg(b) FROM r1 GROUP BY a ORDER BY 1; a | rb_and_cardinality_agg ----+------------------------ 1 | 1 2 | 1 3 | 1 4 | 1 5 | 1 6 | 1 7 | 1 8 | 1 9 | 1 10 | 1 (10 rows)
  • rb_and_agg(roaringbitmap) 描述:将分组内的roaringbitmap数据按照交的操作聚合成一个roaringbitmap集合。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE TABLE r1(a int ,b roaringbitmap); INSERT INTO r1 SELECT a, rb_build_agg(b) FROM t1 GROUP BY a; INSERT INTO t1 SELECT generate_series(1,10),generate_series(1,20,4); INSERT INTO r1 SELECT a, rb_build_agg(b) FROM t1 GROUP BY a; SELECT a, rb_to_array(rb_and_agg(b)) FROM r1 GROUP BY a ORDER BY a; a | rb_to_array ----+------------- 1 | {1} 2 | {3} 3 | {5} 4 | {7} 5 | {9} 6 | {11} 7 | {13} 8 | {15} 9 | {17} 10 | {19} (10 rows)
  • rb_build_agg(int) 描述:将分组内的int值聚合成一个roaringbitmap值。 返回值类型:roaringbitmap 示例: 1 2 3 4 5 6 CREATE TABLE t1 (a int ,b int); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE INSERT INTO t1 SELECT generate_series(1,10),generate_series(1,20,2); INSERT 0 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT rb_iterate(rb_build_agg(b)) FROM t1; rb_iterate ------------ 1 3 5 7 9 11 13 15 17 19 (10 rows)
  • rb_xor_agg(roaringbitmap) 描述:将分组内的roaringbitmap按照异或的逻辑组合成一个roaringbitmap。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT a, rb_to_array(rb_xor_agg(b)) FROM r1 GROUP BY a ORDER BY a; a | rb_to_array ----+------------- 1 | {} 2 | {5} 3 | {9} 4 | {13} 5 | {17} 6 | {1} 7 | {5} 8 | {9} 9 | {13} 10 | {17} (10 rows)
  • rb_or_agg(roaringbitmap) 描述:将分组内的roaringbitmap按照并的逻辑组合成一个roaringbitmap。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT a, rb_to_array(rb_or_agg(b)) FROM r1 GROUP BY a ORDER BY a; a | rb_to_array ----+------------- 1 | {1} 2 | {3,5} 3 | {5,9} 4 | {7,13} 5 | {9,17} 6 | {1,11} 7 | {5,13} 8 | {9,15} 9 | {13,17} 10 | {17,19} (10 rows)
  • POSIX正则表达式 正则表达式是一个字符序列,它是定义一个串集合 (一个正则集)的缩写。 如果一个串是正则表达式描述的正则集中的一员时, 那么就说这个串匹配该正则表达式。 POSIX正则表达式提供了比LIKE和SIMILAR TO操作符更强大的含义。表2列出了所有可用于POSIX正则表达式模式匹配的操作符。 表2 正则表达式匹配操作符 操作符 描述 例子 ~ 匹配正则表达式,大小写敏感 'thomas' ~ '.*thomas.*' ~* 匹配正则表达式,大小写不敏感 'thomas' ~* '.*Thomas.*' !~ 不匹配正则表达式,大小写敏感 'thomas' !~ '.*Thomas.*' !~* 不匹配正则表达式,大小写不敏感 'thomas' !~* '.*vadim.*' 匹配规则 与LIKE不同,正则表达式允许匹配串里的任何位置,除非该正则表达式显式地挂接在串的开头或者结尾。 除了上文提到的元字符外, POSIX正则表达式还支持下表的模式匹配元字符。 表3 模式匹配元字符 元字符 含义 ^ 表示串开头的匹配。 $ 表示串末尾的匹配。 . 匹配任意单个字符。 正则表达式函数 POSIX正则表达式支持下面函数。 substring(string from pattern)函数提供了抽取一个匹配POSIX正则表达式模式的子串的方法。 regexp_replace(string, pattern, replacement [,flags ])函数提供了将匹配POSIX正则表达式模式的子串替换为新文本的功能。 regexp_matches(string text, pattern text [, flags text])函数返回一个文本数组,该数组由匹配一个POSIX正则表达式模式得到的所有被捕获子串构成。 regexp_split_to_table(string text, pattern text [, flags text])函数把一个POSIX正则表达式模式当作一个定界符来分离一个串。 regexp_split_to_array(string text, pattern text [, flags text ])和regexp_split_to_table类似,是一个正则表达式分离函数,不过它的结果以一个text数组的形式返回。 正则表达式分离函数会忽略零长度的匹配,这种匹配发生在串的开头或结尾或者正好发生在前一个匹配之后。这和正则表达式匹配的严格定义是相悖的,后者由regexp_matches实现,但是通常前者是实际中最常用的行为。 示例 1 2 3 4 5 SELECT 'abc' ~ 'Abc' AS RESULT; result -------- f (1 row) 1 2 3 4 5 SELECT 'abc' ~* 'Abc' AS RESULT; result -------- t (1 row) 1 2 3 4 5 SELECT 'abc' !~ 'Abc' AS RESULT; result -------- t (1 row) 1 2 3 4 5 SELECT 'abc'!~* 'Abc' AS RESULT; result -------- f (1 row) 1 2 3 4 5 SELECT 'abc' ~ '^a' AS RESULT; result -------- t (1 row) 1 2 3 4 5 SELECT 'abc' ~ '(b|d)'AS RESULT; result -------- t (1 row) 1 2 3 4 5 SELECT 'abc' ~ '^(b|c)'AS RESULT; result -------- f (1 row) 虽然大部分的正则表达式搜索都能很快地执行,但是正则表达式仍可能被人为地控制,通过任意长的时间和任意量的内存进行处理。不建议从非安全模式来源接受正则表达式搜索模式,如果必须这样做,建议加上语句超时限制。使用SIMILAR TO模式的搜索具有同样的安全性危险, 因为SIMILAR TO提供了很多和POSIX-风格正则表达式相同的能力。LIKE搜索比其他两种选项简单得多,因此在接受非安全模式来源搜索时要更安全些。
  • LIKE 判断字符串是否能匹配上LIKE后的模式字符串。如果字符串与提供的模式匹配,则LIKE表达式返回为真(NOT LIKE表达式返回假),否则返回为假(NOT LIKE表达式返回真)。 匹配规则 此操作符只有在它的模式匹配整个串的时候才能成功。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。 下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。 要匹配文本里的下划线(_)或者百分号(%),在提供的模式里相应字符必须前导逃逸字符。逃逸字符的作用是禁用元字符的特殊含义,缺省的逃逸字符是反斜线,也可以用ESCAPE子句指定一个不同的逃逸字符。 要匹配逃逸字符本身,需写两个逃逸字符。例如要写一个包含反斜线的模式常量,那就要在SQL语句里写两个反斜线。 参数standard_conforming_strings设置为off时,在文串常量中写的任何反斜线都需要被双写。因此写一个匹配单个反斜线的模式实际上要在语句里写四个反斜线。可通过用ESCAPE选择一个不同的逃逸字符来避免这种情况,这样反斜线就不再是LIKE的特殊字符了。但仍然是字符文本分析器的特殊字符,所以还是需要两个反斜线。也可通过写ESCAPE ''的方式不选择逃逸字符,这样可以有效地禁用逃逸机制,但是没有办法关闭下划线和百分号在模式中的特殊含义。 关键字ILIKE可以用于替换LIKE,区别是LIKE大小写敏感,ILIKE大小写不敏感。 操作符~~等效于LIKE,操作符~~*等效于ILIKE。 示例 1 2 3 4 5 SELECT 'abc' LIKE 'abc' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 SELECT 'abc' LIKE 'a%' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 SELECT 'abc' LIKE '_b_' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 SELECT 'abc' LIKE 'c' AS RESULT; result ----------- f (1 row)
  • SIMILAR TO SIMILAR TO操作符根据自己的模式判断是否匹配给定串而返回真或者假。它和LIKE非常类似,只不过它使用SQL标准定义的正则表达式理解模式。 匹配规则 和LIKE一样,SIMILAR TO操作符只有在它的模式匹配整个串的时候才返回真。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。 下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。 SIMILAR TO也支持下面这些从POSIX正则表达式借用的模式匹配元字符。 表1 模式匹配元字符 元字符 含义 | 表示选择(两个候选之一)。 * 表示重复前面的项零次或更多次。 + 表示重复前面的项一次或更多次。 ? 表示重复前面的项零次或一次。 {m} 表示重复前面的项刚好m次。 {m,} 表示重复前面的项m次或更多次。 {m,n} 表示重复前面的项至少m次并且不超过n次。 () 把多个项组合成一个逻辑项。 [...] 声明一个字符类,就像POSIX正则表达式一样。 前导逃逸字符可以禁止所有这些元字符的特殊含义。逃逸字符的使用规则和LIKE一样。 注意事项 如果SIMILAR TO正则表达式重复匹配字符数量非常庞大,由于受递归大小限制,执行语句会失败并报错invalid regular expression: regular expression is too complex,可尝试调大GUC参数max_stack_depth。 正则表达式函数 支持使用函数substring(string from pattern for escape)截取匹配SQL正则表达式的子字符串。 示例 1 2 3 4 5 SELECT 'abc' SIMILAR TO 'abc' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 SELECT 'abc' SIMILAR TO 'a' AS RESULT; result ----------- f (1 row) 1 2 3 4 5 SELECT 'abc' SIMILAR TO '%(b|d)%' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 SELECT 'abc' SIMILAR TO '(b|c)%' AS RESULT; result ----------- f (1 row)
  • = 描述:比较两个roaringbitmap是否相等。 返回值类型:bool 示例: 1 2 3 4 5 6 7 8 9 10 SELECT rb_build('{1,2,3}') = rb_build('{1,2,3}'); ?column? ---------- t (1 row) SELECT rb_build('{2,3}') = rb_build('{1,2,3}'); ?column? ---------- f (1 row)
  • && 描述:两个roaringbitmap如果有交集返回true,否则返回false。 返回值类型:bool 示例: 1 2 3 4 5 6 7 8 9 10 SELECT rb_build('{2,3,4}') && rb_build('{2,3}'); ?column? ---------- t (1 row) SELECT rb_build('{2,3,4}') && rb_build('{7,8,9}'); ?column? ---------- f (1 row)
  • UUID格式 UUID由开放软件基金会标准化,作为分布式计算环境的一部分,在互联网工程任务组(IETF)公布的RFC 4122标准中对UUID进行了标准化。标准的UUID由36个字符组成,其中包括32个16进制数字和4个连字符‘-’,形式为8-4-4-4-12,标准的UUID示例如下: 1 a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 除了标准型的UUID, GaussDB (DWS)同样支持以其他方式输入:大写字母和数字、由花括号包围的标准格式、省略部分或所有连字符、在任意一组四位数字之后加一个连字符。示例: 1 2 3 4 A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11 {a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11} a0eebc999c0b4ef8bb6d6bb9bd380a11 a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
共100000条