华为云用户手册

  • 准备工作 在购买 数据安全中心 之前,请先 注册华为账号 并开通华为云。具体操作详见注册华为账号并开通华为云、实名认证。 如果您已开通华为云并进行实名认证,请忽略此步骤。 仅在购买或使用中国大陆云服务区的资源时,需要实名认证。 购买包周期资源时,请保证账户有足够的资金,防止购买数据安全中心失败。具体操作请参见账户充值。 请确保已为账号赋予相关DSC权限。具体操作请参见创建用户组并授权使用DSC。 表1 DSC系统权限 角色名称 描述 类别 依赖关系 DSC DashboardReadOnlyAccess 数据安全中心服务大屏服务只读权限。 系统策略 无 DSC FullAccess 数据安全中心服务所有权限。 系统策略 购买RDS包周期实例需要配置授权项: bss:order:update bss:order:pay DSC ReadOnlyAccess 数据安全中心服务只读权限。 系统策略 无
  • 操作流程 操作步骤 说明 步骤一:购买DSC并完成云资产委托授权 购买DSC,选择版本规格(本文以标准版为例)扩展包等信息并完成云资产委托授权打通各服务与DSC的访问策略权限。 步骤二:授权数据库允许DSC访问数据库进行数据识别 数据库和大数据类型资产需要完成授权之后才能进行敏感数据识别、数据脱敏和数据库水印注入/提取,完成数据库授权,允许DSC访问数据库获取数据进行敏感数据识别和脱敏。 步骤三:新建敏感数据识别任务 创建识别任务,对资产进行敏感数据识别,根据所选识别模板对数据进行分类分级。 步骤四:查看分类分级结果 查看分类分级结果,对数据资产进行进一步安全防护。
  • 计费模式概述 数据安全中心大模型数据安全防护场景提供包年/包月的计费模式: 包年/包月:一种预付费模式,即先付费再使用,按照订单的购买周期进行结算。购买周期越长,享受的折扣越大。一般适用于设备需求量长期稳定的成熟业务。 表1 计费模式 计费模式 包年/包月 付费方式 预付费 按照订单的购买周期结算。 计费周期 按订单的购买周期计费。 适用计费项 版本规格、数据扩展包。 变更规格 不支持变更版本规格。 适用场景 适用于可预估资源使用周期的场景,价格比按需计费模式更优惠。对于长期使用者,推荐该方式。 父主题: 计费模式
  • 操作步骤 配置华为云中国站全球加速实例 在华为云中国站购买加速实例,加速地域选择“中国大陆以外”(亚非拉中东地区,不包含欧洲),后端终端节点组所属区域选择华东-上海一。 详细配置流程请参见创建全球加速实例。 配置华为云欧洲站全球加速实例 在控制台首页的区域列表中选择云联盟区域“欧洲-都柏林”。 通过云联盟区域访问华为云欧洲站控制台,在欧洲站购买加速实例,其中加速区域选择“欧洲”,后端终端节点组所属区域选择“华东-上海一”。 图3 购买全球加速实例 图4 配置监听器、终端节点组和终端节点信息 配置DNS智能解析 通过DNS智能解析,线路类型选择“地域解析”,为不同地区的访问用户配置相应的 域名 解析: 欧洲地区的访问用户解析到华为云欧洲站GA Anycast IP,即步骤2中购买的全球加速实例对应的Anycast IP。 其他海外地区(亚太、拉美、非洲)的访问用户解析到华为云中国站GA Anycast IP,即步骤1中购买的全球加速实例对应的Anycast IP。 中国大陆的用户访问解析到华东-上海一的公网IP地址。 图5 配置DNS智能解析
  • 应用场景 华为云中国站的全球加速实例无法直接使用华为云欧洲站的接入点,如果中国站用户业务需要加速欧洲地区访问,需要通过云联盟区域进入华为云欧洲站,然后在欧洲站创建GA实例,后端可以选择中国站区域资源。反过来也是如此,欧洲站用户业务部署在爱尔兰,如果想要加速中国大陆、亚太等地区用户访问,也可以通过云联盟区域跳转到中国站创建全球加速实例。 本文以华为云中国站使用欧洲接入点为例,用户业务部署在华东-上海一区域,需要加速拉美、欧洲、非洲、亚太等地区的多个国家用户访问,则需要创建两个全球加速实例。 图1 场景示例
  • U~Z 表5 U~Z术语解释 术语 解释 Vacuum 数据库定期启动的清理垃圾元组的线程,根据配置参数可以同时启动多个。 V2表 指的是建表环节时,执行CREATE TABLE语法中定义的colversion取值为2.0的表,表示列存表的每列合并存储在一个文件中,文件名以relfilenode.C1.0命名,数据存储在本地盘。存算一体场景下,不指定colversion取值时,用户创建的列存表默认为V2表。 V3表 指的是建表环节时,执行CREATE TABLE语法中定义的colversion取值为3.0的表,即存算分离表,表示列存表的每列合并存储在一个文件中,文件名以C1_field.0命名,数据存储在OBS文件系统。存算分离场景下,不指定colversion取值时,用户创建的列存表默认为V3表。 verbose verbose选项指定显示在屏幕上的处理信息。 WAL Write-Ahead Logging,预写日志系统。实现事务日志的标准方法,是指对数据文件(表和索引的载体)持久化修改之前必须先持久化相应的日志。 WAL Receiver 数据库复制时备机创建的一个线程的名称。此线程用于从主机接收数据、命令,并反馈确认信息至主机。一个备机只有一个WAL Receiver线程。 WAL Sender 数据库复制过程中,主机接收到备机的连接请求后创建的一个线程的名称。此线程用于发送命令、数据到备机,并从备机接收信息。一个主机可能会有多个WAL Sender线程,每一个WAL Sender线程对应一个备机的一个连接请求。 WAL Writer 数据库启动时创建的一个写Redo日志的线程,用于将内存中的日志写入到持久性设备(如:磁盘)。 WLM WorkLoad Manager,负载管理。 GaussDB (DWS)中系统资源控制和分配的模块。 Xlog 表示事务日志,一个逻辑节点中只有一个,不允许创建多个Xlog文件。 xDR 详单。用户面和信令面详单的统称,包括CDR和UFDR、TDR和SDR。 网络备份 网络备份为各种平台提供一套完整的、灵活的数据保护方案。平台包含Windows、UNIX及Linux。网络备份支持备份、归档、恢复计算机上的文件、文件夹或目录、卷或分区。 物理节点 一个物理机器称为一个物理节点。 系统表 存储数据库元信息的表,元信息包括数据库中的用户表、索引、列、函数和数据类型等。 下推 GaussDB(DWS)是 分布式数据库 ,其可以利用多DN分布式并行执行查询计划,即将CN中的查询计划下发到各DN中并行执行。这种行为称为下推。与将数据抽取到CN上执行查询的方式相比,下推可以大幅提升查询性能。 压缩 数据压缩,信源编码,或比特率降低涉及使用相比原来较少比特的编码信息。压缩可以是有损或无损。无损压缩通过识别和消除统计冗余降低比特位。无损压缩中没有信息丢失。有损压缩识别并删除次要信息,减少了比特位。减少数据文件大小的方法被普遍称为数据压缩,尽管其正式名称为源编码(数据源的编码,然后将其存储或传输)。 一致性 数据库事务的ACID特性之一。在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。 元数据 用来定义数据的数据。主要是描述数据自身信息,包含源、大小、格式或其它数据特征。数据库字段中,元数据用于理解以及诠释 数据仓库 的内容。 原子性 数据库事务的ACID特性之一。整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。 在线扩容 在线扩容是指GaussDB(DWS)扩容重分布过程中支持数据持续入库、查询业务不中断。 脏页面 已经被修改且未写入持久性设备的页面。 增量备份 基于上次有效备份之后对文件修改的备份。 增量同步 GaussDB(DWS)双机方案中的一种数据同步机制,是指把主机中数据增量同步给备机,即只同步主备间有差异的数据。 主机 GaussDB(DWS)数据库双机系统中接受数据读写操作的节点,和所有备机一起协同工作。在同一时间内,双机系统中只有一个节点被标识为主机。 主题词 在标引和检索中用于表达文献主题的规范化的词或词组。 转储文件 转储文件是一种特定类型的trace文件。转储文件为响应事件过程中一次性输出的诊断数据,trace文件指诊断数据的连续输出。 资源池 资源池是GaussDB(DWS)提供的一种资源划分的配置机制。通过将用户绑定到资源池,来限定其所执行作业的优先级及能够利用到的资源。 租户 数据库业务用户在给定的计算资源(cpu,内存和io)和存储资源下执行业务,通过资源管理和隔离,达成业务的服务等级协定(SLA)。 最小恢复点 最小恢复点是GaussDB(DWS)提供的数据一致性保障手段之一。最小恢复点特性可以在GaussDB(DWS)启动时检查出WAL日志和持久化到磁盘的数据的不一致性,并提示用户进行处理。
  • P~T 表4 P~T术语解释 术语 解释 Page GaussDB(DWS)数据库关系对象结构中行存的最小存储单元。一个页(Page)大小为默认为8KB。默认情况下,页大小在数据库初始化时确定,并且无法动态更改。 PostgreSQL PostgreSQL是一个开源的关系数据库管理系统(DBMS),由全球志愿者团队开发。PostgreSQL不受任何公司或个体所控制,源代码免费使用。 Postgres-XC 一款多节点同步,读写可扩展的PostgreSQL集群数据库。 Postmaster 数据库服务启动时启动的一个线程。用于监听来自集群其它节点或客户端的连接请求。 主机上监听到备机连接请求,并接受后,就会创建一个WAL Sender线程,用于处理与备机的交互。 RHEL Red Hat Enterprise Linux,红帽企业Linux。 REDO日志 记录对数据库进行操作的日志,这些日志包含重新执行这些操作所需要的信息。当数据库故障时,可以利用REDO日志将数据库恢复到故障前的状态。 SCTP Stream Control Transmission Protocol,流控制传输协议。是IETF于2000年新定义的一个传输层协议。是提供基于不可靠传输业务的协议之上的可靠的数据报传输协议。SCTP的设计用于通过IP网传输SCN窄带信令消息。 Savepoint 保存点。是一种在关系数据库管理系统中实现子事务(也称为嵌套事务)的方法。在一个长事务中,可以把操作过程分成几部分,前面部分执行成功后,可以建一个保存点,若后面的执行失败,则回滚到这个保存点即可,无需回滚整个事务。保存点对于在数据库应用程序中实现复杂错误恢复很有用。如果在多语句事务中发生错误,则应用程序可能能够从错误中恢复(通过回滚到保存点)而无需中止整个事务。 Session 数据库系统在接收到应用程序的连接请求时,为该连接创建的一个任务。它被Session Manager管理,完成一些初始化任务,执行用户的所有操作。 Shared-nothing architecture 无共享架构是一种分布式计算架构,这种架构中不存在集中共享CPU、存储的状态,这种架构具有非常强的扩展性。 SIMD Single Instruction Multiple Data,即单指令多数据,是一种并行计算技术,允许一条指令同时处理多个数据,从而显著提升计算密集型任务的性能。 SLES SUSE Linux Enterprise Server,由SUSE提供的企业级Linux操作系统。 SMP Symmetric Multi-Processing,对称多处理技术,是指在一台计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。操作系统必须支持多任务和多线程处理,以使得SMP系统发挥高效的性能。数据库领域的SMP并行技术,一般指利用多线程技术实现查询的并行执行,以充分利用CPU资源,从而提升查询性能。 SQL Structure Query Language,结构化查询语言。数据库的标准查询语言。它可以分为数据定义语言(DDL),数据操纵语言(DML)和数据控制语言(DCL)。 SSL Secure Socket Layer,安全套接层。SSL是Netscape公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。SSL支持服务通过网络进行通信而不损害安全性。它在客户端和服务器之间创建一个安全连接。然后通过该连接安全地发送任意数据量。 收敛比 交换机下行带宽与上行带宽的比值。收敛比越高,流量收敛程度越大,丢包越严重。 TCP Transmission Control Protocol,传输控制协议。用于将数据信息分解成信息包,使之经过IP协议发送;并对利用IP协议接收来的信息包进行校验并将其重新装配成完整的信息。TCP是面向连接的可靠协议,能够确保信息的无误发送。 trace 一种特殊的日志记录方法,用来记录程序执行的信息。程序员使用该信息进行纠错。另外,根据trace日志中信息的类型和内容,有经验的系统管理员或技术支持人员以及软件监控工具诊断软件常见问题。 全备份 备份整个数据库集群。 全量同步 GaussDB(DWS)双机方案中的一种数据同步机制,是指把主机中的所有数据同步给备机。 日志文件 计算机记录自身活动的记录。 事务 数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,事务必须满足ACID原则。 数据 事实或指令的一种表达形式,适用于人为或自动的通信、解释或处理。数据包含常量、变量、阵列和字符串。 数据重分布 用户改变数据的分布方式后,数据表在节点间重新分布的过程。 数据分布 表数据在分布式环境中的分布方式(Distribution),即数据表以何种方式打散存储到各个数据库实例上去。具体的分布方式可以有:散列(Hash)方式,复制方式(Replication)和随机方式(Random)。散列方式根据元组中指定字段的取值算得哈希值,根据节点与哈希值的映射关系获得该元组的目标存储位置。复制方式将元组复制到所有节点上。随机方式将数据随机分布到各节点。 数据分区 数据分区是指在一个数据库实例内部,将表按照划分为多个数据互不重叠的部分(Partition)。具体的分区方式可以有:范围分区(Range),它根据元组中指定字段的取值所处的范围映射到目标存储位置。 数据库 数据库是存储在一起的相关数据的集合,这些数据可以被访问,管理以及更新。同一视图中,数据库可以根据存储内容类型分为以下几类:数目类、全文本类、数字类及图像类。 数据库实例 一个数据库实例是一个GaussDB(DWS)进程以及它控制的数据库文件。GaussDB(DWS)在一个物理节点上安装多个数据库实例,集群各节点上所安装的GTM、CM、CN、DN统称为实例。一个数据库实例也被称为一个逻辑节点。 数据库双机 GaussDB(DWS)提供的高可靠性双机方案。在此方案中,每个GaussDB(DWS)逻辑节点标识为主机或备机。在同一时间内,只有一个GaussDB(DWS)被标识为主机。双机初次建立时,主机会对每个备机数据做全量同步,然后做增量同步。双机建立之后的运行过程中,主机能接受数据读和写的操作请求,备机只做日志同步。 数据库文件 保存用户数据和数据库系统内部数据的二进制文件。 数据流操作符 负责查询片段间交换数据的操作符。根据数据流的输入、输出关系,可以细分为聚合流(Gather)、广播流(Broadcast)和重分布流(Redistribution)。聚合流将数据从多个查询片段聚合到一个。广播流将数据从一个查询片段向多个传输。重分布流则将多个查询片段的数据,按照一定规则重组后向多个传输。 数据字典 数据字典是一系列只读的表,用来提供数据库的信息。这些信息包括:数据库设计信息、存储过程信息、用户权限、用户统计数据、数据库进程信息、数据库增长统计数据和数据库性能统计数据。 死锁 为使用同一资源而产生的无法解决的争用状态。 索引 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。 统计信息 数据库使用统计信息估算查询代价,以查找代价最小的执行计划,统计信息一般是数据库自动收集的,包括表级信息(元组数、页面数等)和列级信息(列的值域分布直方图)。 停用词 在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。
  • K~O 表3 K~O术语解释 术语 解释 LLVM LLVM命名最早源自于底层虚拟机(Low Level Virtual Machine)的缩写。LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。 GaussDB(DWS) LLVM动态编译技术可以为每个查询生成定制化的机器码用于替换原本的通用函数。通过减少实际查询时冗余的条件逻辑判断、虚函数调用并提高数据局域性,从而达到提升查询整体性能的目的。 LVS Linux Virtual Server,虚拟服务器集群系统,用于负责集群的负载均衡。 逻辑复制 数据库主备或两个集群间的数据同步方式。区别于通过物理日志回放方式的物理复制,逻辑复制在两个集群间传输逻辑日志或通过逻辑日志对应的SQL语句实现数据同步。 逻辑日志 数据库修改的日志记录,可直接对应为SQL语句,一般为行级记录。区别于物理日志,物理日志是记录物理页面修改的日志。 逻辑解码 逻辑解码是一种通过对xlog日志的反解实现将数据库表的所有持久更改抽取到一种清晰、易于理解的格式的处理过程。 逻辑复制槽 在逻辑复制的环境下,逻辑复制槽用于防止Xlog被系统或VACUUM回收。GaussDB(DWS)中用于记录逻辑解码位置的对象,提供创建、删除、读取、推进等多个SQL接口函数。 MPP Massive Parallel Processing,大规模并行处理。指利用多个机器构成集群的架构方式,也称为集群(Cluster)系统。 MVCC Multi-Version Concurrency Control,多版本并发控制。数据库并发控制协议的一种,它的基本算法是一个元组可以有多个版本,不同的查询可以工作在不同的版本上。一个基本的好处是读和写可以不冲突。 NameNode NameNode是Hadoop系统中的一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。 Node Group 在GaussDB(DWS)集群里Node Group指DN的集合,是集群中的子集群。从性质上可以分为存储子集群Storage Node Group和计算子集群Computing Node Group。存储子集群用来承载本地表的数据存储,而计算子集群用来承载查询的聚集、关联计算。 OLAP Online Analytical Processing,联机分析处理。是数据仓库系统最主要的应用,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可以根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观而易懂的形式将查询结果提供给决策人员,以便准确掌握企业(公司)的经营状况,了解对象的需求,制定正确的方案。 OM Operations Management,运维管理模块。提供集群日常运维、配置管理的管理接口、工具。 ORC Optimized Row Columnar,一种广泛使用的Hadoop系统结构化数据的文件格式,由Hadoop HIVE项目引入。 客户端 连接或请求其它计算机或程序服务的计算机或程序。 空闲空间管理 管理表内空闲空间的机制,通过记录每个表内空闲空间信息,并建立易于查找的数据结构,可以加速对空闲空间进行的操作(例如INSERT)。 跨集群 GaussDB(DWS)支持通过外表和Extension Connector访问当前GaussDB(DWS)集群外的其他DBMS中的数据,这种行为称为跨集群。 垃圾元组 是指使用DELETE和UPDATE语句删除的元组,GaussDB(DWS)在删除元组时只是打个删除标记,由Vacuum线程清理这种垃圾元组。 列 字段的等效概念。在数据库中,表由一列或多列组成。 逻辑节点 一个物理节点上可以安装多个逻辑节点。一个逻辑节点是一个数据库实例。 模式 数据库对象集,包括逻辑结构,例如表、视图、序、存储过程、同义名、索引、集群及数据库连接。 模式文件 用于决定数据库结构的SQL文件。
  • F~J 表2 F~J术语解释 术语 解释 Failover 指当某个节点出现故障时,自动切换到备节点上的过程。反之,从备节点上切换回来的过程称为Failback。 FDW Foreign Data Wrapper,外部数据封装器。是Postgres提供的一个SQL接口,用于访问远程数据存储中的大数据对象,使DBA可以整合来自不相关数据源的数据,将它们存入数据库中的一个公共模型。 Freeze 在事务ID耗尽时由AutoVacuum Worker进程自动执行的操作。GaussDB(DWS)会把事务ID记在行头,在一个事务取得一行时,通过比较行头的事务ID和事务本身的ID判断这行是否可见,而事务ID是一个无符号整数,如果事务ID耗尽,事务ID会跨过整数的界限重新计算,此时原先可见的行就会变成不可见的行,为了避免这个问题,Freeze操作会将行头的事务标记为一个特殊的事务ID,标记了这个特殊的事务ID的行将对所有事务可见,以此避免事务ID耗尽产生的问题。 GDB GNU工程调试器,可以监控其它程序运行时的内部情况,或者其它程序要崩溃时发生了什么。GDB支持如下四种主要操作(使PDK功能更加强大),辅助查找缺陷。 启动程序,指定可能影响行为的任何因素。 特定条件下,停止程序。 程序停止时,检查发生了什么。 修改程序内容,尝试纠正一个缺陷并继续下一个。 GDS General Data Service,数据并行加载工具。向GaussDB(DWS)导入数据时,需要将此工具部署到源数据所在的服务器上,使DN可以通过该工具获取数据。 GIN索引 Generalized Inverted Index,通用倒排索引。作用为处理索引项为组合值的情况,查询时需要通过索引搜索出出现在组合值中的特定元素值。 GNU GNU计划,又称革奴计划,是由RichardStallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。GNU是“GNU's NotUnix”的递归缩写。Stallman宣布GNU应当发音为Guh-NOO以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚,发音与new相同)。Unix是一种广泛使用的商业操作系统的名称。技术上讲,GNU类似Unix。但是GNU却给了用户自由。 gsql GaussDB(DWS)交互终端。通过gsql能够以交互的方式输入查询,下发查询到GaussDB(DWS),然后查看查询结果。或者,也可以从文件中输入。此外,gsql还提供许多元命令和各种类似shell命令,协助脚本编写及自动化各种任务。 GTM Global Transaction Manager,全局事务管理器。用于管理事务状态的部件。 GUC Grand Unified Configuration,数据库运行参数。配置这些参数可以影响数据库系统的行为。 HA 高可用性(HighAvailability),通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。 HBA host-based authentication,主机认证。主机鉴权允许主机鉴权部分或全部系统用户。适用于系统所有用户或者使用Match指令的子集。该类型鉴权对于管理计算集群以及其它完全同质设备非常有用。总之,服务器上的三个文件以及客户端上的一个文件必须修改,为主机鉴权做准备。 HDFS Hadoop Distributed File System,Apache Hadoop项目的一个子项目。一个高度容错的分布式文件系统,设计用于在低成本硬件上运行。HDFS提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。 服务器 为客户端提供服务的软硬件的组合。单独使用时,指运行服务器操作系统的计算机,也可以指提供服务的软件或者专用硬件。 高级包 GaussDB(DWS)提供的具有一定逻辑和功能的存储过程、函数,这些具备功能的存储过程、函数统称为高级包。 隔离性 数据库事务的ACID特性之一。它是指一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 关系型数据库 创建在关系模型基础上的数据库。关系型数据库借助于集合代数等数学概念和方法来处理数据库中的数据。 归档线程 数据库打开归档功能时启动的一个线程,此线程用于将数据库日志归档到指定的路径。 故障接管 功能对等的系统部件对于故障部件的自动替换过程。系统部件包含处理器、服务器、网络、数据库等。 环境变量 定义进程操作环境某一方面的变量。例如,环境变量可以为主目录,命令搜索路径,使用终端或当前时区。 检查点 将数据库内存中某一时刻的数据存到磁盘的机制。GaussDB(DWS)定期将已提交的事务数据和未提交的事务数据存到磁盘,这些数据用来和Redo日志一起在数据库重启和崩溃时恢复数据库。 加密 用于传输数据的功能。通过该功能,可以隐藏信息内容,防止非法使用。 节点 将构成GaussDB(DWS)集群环境的各台服务器(物理机或虚拟机)称为集群节点,简称节点。 纠错 系统自动识别软件和数据流上的错误并自动修正错误的能力,提升系统的稳定性和可靠性。 进程 在单个计算机上执行程序的实例。一个进程由一个或多个线程组成。其它进程不能接入某个进程已占用的线程。 基于时间点恢复 PITR(Point-In-TIme Recovery),基于时间点恢复是GaussDB(DWS)备份恢复的一个特性,是指在备份数据和WAL日志正常的情况下,数据可以恢复到指定时间点。 记录 在关系型数据库中,每一条记录对应表中的每一行数据。 集群 集群是由一组服务器和其它资源组成的一个单独的系统,可以实现高可用性。有的情况下,可以实现负载均衡及并行处理。
  • A~E 表1 A~E术语解释 术语 解释 ACID 在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。 安全环 每一个环都由若干物理机组成,环内的DN形成主、备、从备关系,不向环外延伸。也就是说,环内的任何一个节点的主,或者备,或从备,依然在环内。扩容与缩容时,是以环为最小单位进行的。 Bgwriter 数据库启动时创建的一个后台写线程,此线程用于将数据库中脏页面写入到持久性设备(例如磁盘)中。 bit 比特。计算机处理的最小的信息单位。比特用来表示二进制数字1或0,或者一种逻辑条件真或假。在物理上,比特表示一个电路上高或低的电压点或者磁盘上的磁化单程或其它。一个单独的比特位所传达的信息很少有意义的。然而,一个8位组却构成了一个字节,可用于表示如一个英文字母,十进制数字,或其它字符等多种类型的信息。 Bloom Filter 布隆过滤器。由Howard Bloom在1970年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据错判,而不会对不是集合内的数据进行错判,这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见Bloom filter是牺牲了正确率换取时间和空间。 CCN Central Coordinator ,GaussDB(DWS)动态负载管理中心协调节点。负责进行各CN中复杂作业是否可以执行的中心判断、排队和调度,以实现动态负载管理。 CIDR Classless Inter-Domain Routing,无类域间路由IP编址方案。CIDR摒弃传统的基于类(A类:8,B类:16,C类:24)的地址分配方式,允许使用任意长度的地址前缀,有效提高地址空间的利用率。CIDR表示方法:IP地址/网络ID的位数。比如192.168.23.35/21,其中“21”表示前面地址中的前21位代表网络部分,其余位代表主机部分。 Cgroups Control Groups,控制组(GaussDB(DWS)中也称之为优先级组)。SUSE Linux和RedHat内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制。 CLI Command-line Interface,命令行界面。应用程序和用户交互的一种方式,完全基于文本输入和输出。命令通过键盘或类似装置输入,由程序编译并执行。结果是以文本或图形的方式呈现在终端界面。 CM Cluster Manager,集群管理模块。管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。 CMS Cluster Management Service,集群管理服务。是用于管理集群状态的部件。 CN Coordinator,负责数据库系统元数据存储、查询任务的分解和部分执行,以及将DN中查询结果汇聚在一起。 CU Compression Unit,压缩单元。列存表的最小存储单位。 core文件 当程序出现内存越界、断言失败或者访问非法内存时,操作系统会中止进程,并将当前内存状态导出到core文件中,以便进一步分析。 core文件包含内存转储,支持全二进制和指定端口格式。core文件名称由字符串core以及操作系统进程ID组成。 core文件不依赖于任何平台。 Core Dump 通常在程序异常终止时,核心转储(Core Dump)、内存转储或系统转储用于记录特定时间计算机程序工作内存的状态。实际上,其它关键程序的状态经常在同一时间进行转储,例如处理器寄存器,包括程序指标和栈指针、内存管理信息、其它处理器和操作系统标记及信息。Core Dump经常用于辅助诊断和纠错计算机程序问题。 DBA Database Administrator,数据库管理员。指导或执行所有和维护数据库环境相关的操作。 DBLINK DBLINK是定义一个数据库到另一个数据库路径的对象,通过它可以查询远程数据库对象。 DBMS Database Management System,数据库管理系统。数据库管理系统是为了访问数据库中的信息而使用的一个管理系统软件。它包含一组程序使用户可以进入、管理、查询数据库中数据。基于真实数据的位置,可以分为内存数据库管理系统和磁盘数据库管理系统。 DCL Data Control Language,数据控制语言。 DDL Data Definition Language,数据定义语言。 DML Data Manipulation Language,数据操纵语言。 DN Data Node,和CN对应的概念。负责实际执行表数据的存储、查询操作。 ETCD Editable Text Configuration Daemon,分布式键值存储系统,用于共享配置和服务发现(服务注册和查找)。 ETL Extract-Transform-Load,描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。 Extension Connector Extension Connector是GaussDB(DWS)提供的功能模块,使用它可以将SQL语句发送到集群外部的Spark,并在当前库中返回执行结果,实现跨集群处理数据。 备份 备份件或者备份过程。指复制并归档计算机数据,当发生数据丢失事件时,可以用该复制并归档的数据来恢复原始数据。 备份和恢复 保护数据库防止由于媒介失效或人为错误造成的数据丢失过程中涉及的一组概念、过程及策略。 备机 GaussDB(DWS)双机方案中的一个节点,用于作为主机的备份,在主机异常时,备机会切换到主机状态,以确保能正常提供数据服务。 崩溃 崩溃(或系统崩溃)指计算机或程序(例如软件应用程序或操作系统)异常终止的事件。出现错误后,通常会自动退出。有时出现恶意程序冻结或挂起直到崩溃上报服务记录崩溃的详细信息。对于操作系统内核关键部分的程序,整个计算机可能瘫痪(可能造成致命的系统错误)。 编码 编码是指用代码来表示各组数据资料,使其成为可利用计算机进行处理和分析的信息。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。 编码技术 呈现计算机软硬件识别的特定字符集数据的技术。 表 表是由行与列组合成的。每一列被当作是一个字段。每个字段中的值代表一种类型的数据。例如,一个表可能有3个字段:姓名、城市和国家。这个表就会有3列:一列代表姓名,一列代表城市,一列代表国家。表中的每一行包含3个字段的内容,姓名字段包含姓名,城市字段包含城市,国家字段包含国家。 表空间 包含表、索引、大对象、长数据等数据的逻辑存储结构。表空间在物理数据和逻辑数据间提供了抽象的一层,为所有的数据库对象分配存储空间。表空间创建好后,创建数据库对象时可以指定该对象所属的表空间。 并发控制 在多用户环境下同时执行多个事务并保证数据完整性的一个DBMS服务。并发控制是GaussDB(DWS)提供的一种多线程管理机制,用来保证多线程环境下在数据库中执行的操作是安全的和一致的。 查询 向数据库发出的信息请求,包含更新、修改、查询或删除信息的请求。 查询操作符 Query Operator,也称为查询迭代算子(Iterator)或查询节点(Query Tree Node)。一个查询的执行可以分解为一个或多个查询操作符,是构成一个查询执行的最基本单位。常见的查询操作符包括表扫描(Scan),表关联(Join),表聚集(Aggregation)等。 查询片段 每一个查询任务都可以分解成为一个或者多个查询片段。每个查询片段由一个或多个查询操作符构成,可独立在节点上运行。通过数据流操作符与其它查询片段块交换数据。 持久性 数据库事务的ACID特性之一。在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。 存储过程 存储过程(StoredProcedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名称并设置参数(如果该存储过程带有参数)来执行它。 操作系统 操作系统OS(operating system)由引导程序加载到计算中,对计算机中其它程序进行管理。其它程序叫做应用或应用程序。 从备 Secondary,为了保证集群的高可靠性,主、备间无法正常同步数据时,主节点会将日志同步到从备。如果主节点突然故障不可用,备节点会升主,并且升主成功后从从备节点上同步之前异常期间的日志。 大对象 大对象(Blob)在数据库中指使用二进制方式存储的数据。它通常可以用于存储视频、音频和图像等多媒体数据。 动态负载 GaussDB(DWS)动态负载是指基于系统中CPU、I/O、内存等资源的使用情况,自动调节并发作业的运行数量,避免因为系统资源过载导致业务报错或无响应。 段 数据库中,一段指包含一个或多个区域的数据库中的一部分。区域是数据库的最小范围,由单元调用块组成。一个或多个段组成一个表空间。
  • WITH中的数据修改语句 在WITH子句中使用数据修改命令INSERT、UPDATE、DELETE。这允许用户在同一个查询中执行多个不同操作。示例如下所示: 1 2 3 4 5 6 WITH moved_tree AS ( DELETE FROM tree WHERE parentid = 4 RETURNING * ) INSERT INTO tree_log SELECT * FROM moved_tree; 上述查询示例实际上从tree把行移动到tree_log。WITH中的DELETE删除来自tree的指定行,以它的RETURNING子句返回它们的内容,并且接着主查询读该输出并将它插入到tree_log。 WITH子句中的数据修改语句必须有RETURNING子句,用来返回RETURNING子句的输出,而不是数据修改语句的目标表,RETURNING子句形成了可以被查询的其余部分引用的临时表。如果一个WITH中的数据修改语句缺少一个RETURNING子句,则它形不成临时表并且不能在剩余的查询中被引用。 如果声明了RECURSIVE关键字,则不允许在数据修改语句中进行递归自引用。在某些情况中可以通过引用递归WITH的输出来绕过这个限制,例如: 1 2 3 4 5 6 7 8 9 WITH RECURSIVE included_parts(sub_part, part) AS ( SELECT sub_part, part FROM parts WHERE part = 'our_product' UNION ALL SELECT p.sub_part, p.part FROM included_parts pr, parts p WHERE p.part = pr.sub_part ) DELETE FROM parts WHERE part IN (SELECT part FROM included_parts); 这个查询将会移除一个产品的所有直接或间接子部件。 WITH子句中的子语句与主查询同时执行。因此,在使用WITH中的数据修改语句时,指定更新的顺序实际是以不可预测的方式发生的。所有的语句都使用同一个快照中执行,语句的效果在目标表上不可见。这减轻了行更新的实际顺序的不可预见性的影响,并且意味着RETURNING数据是在不同WITH子语句和主查询之间传达改变的唯一方法。 本示例中外层SELECT可以返回更新之前的数据: 1 2 3 4 WITH t AS ( UPDATE tree SET id = id + 1 RETURNING * ) SELECT * FROM tree; 本示例中外部SELECT将返回更新过的数据: 1 2 3 4 WITH t AS ( UPDATE tree SET id = id + 1 RETURNING * ) SELECT * FROM t; 不支持在单个语句中更新同一行两次。这种语句的效果是不可预测的。如果只有一个修改发生了,但却不容易(有时也不可能)预测哪一个发生了修改。
  • WITH递归查询 通过声明RECURSIVE关键字,一个WITH查询可以引用它自己的输出。 递归WITH查询的通常形式如下: 1 non_recursive_term UNION [ALL] recursive_term 其中:UNION在合并集合时会执行去重操作,而UNION ALL则直接将结果集合并、不执行去重;只有递归项能够包含对于查询自身输出的引用。 使用递归WITH时,必须确保查询的递归项最终不会返回元组,否则查询将无限循环。 使用表tree来存储下图中的所有节点信息: 表定义语句如下: 1 CREATE TABLE tree(id INT, parentid INT); 表中数据如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 INSERT INTO tree VALUES(1,0),(2,1),(3,1),(4,2),(5,2),(6,3),(7,3),(8,4),(9,4),(10,6),(11,6),(12,10); SELECT * FROM tree; id | parentid ----+---------- 1 | 0 2 | 1 3 | 1 4 | 2 5 | 2 6 | 3 7 | 3 8 | 4 9 | 4 10 | 6 11 | 6 12 | 10 (12 rows) 通过以下WITH RECURSIVE语句,可以返回从顶层1号节点开始,整个树的节点,以及层次信息: 1 2 3 4 5 6 7 8 9 10 11 WITH RECURSIVE nodeset AS ( -- recursive initializing query SELECT id, parentid, 1 AS level FROM tree WHERE id = 1 UNION ALL -- recursive join query SELECT tree.id, tree.parentid, level + 1 FROM tree, nodeset WHERE tree.parentid = nodeset.id ) SELECT * FROM nodeset ORDER BY id; 上述查询中,我们可以看出,一个典型的WITH RECURSIVE表达式包含至少一个递归查询的CTE,该CTE中的定义为一个UNION ALL集合操作,第一个分支为递归起始查询,第二个分支为递归关联查询,需要自引用第一部分进行不断递归关联。该语句执行时,递归起始查询执行一次,关联查询执行若干次并将结果叠加到起始查询结果集中,直到某一些关联查询结果为空,则返回。 上述查询的执行结果如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 id | parentid | level ----+----------+------- 1 | 0 | 1 2 | 1 | 2 3 | 1 | 2 4 | 2 | 3 5 | 2 | 3 6 | 3 | 3 7 | 3 | 3 8 | 4 | 4 9 | 4 | 4 10 | 6 | 4 11 | 6 | 4 12 | 10 | 5 (12 rows) 从返回结果可以看出,起始查询结果包含level=1的结果集,关联查询执行了五次,前四次分别输出level=2,3,4,5的结果集,在第五次执行时,由于没有parentid和输出结果集id相等的记录,也就是再没有多余的孩子节点,因此查询结束。 对于WITH RECURSIVE表达式,GaussDB(DWS)支持其分布式执行。由于WITH RECURSIVE涉及到循环运算,GaussDB(DWS)引入了参数max_recursive_times,用于控制WITH RECURSIVE的最大循环次数,默认值为200,超过该次数则报错。
  • SQLSetStmtAttr 功能描述 设置相关语句的属性。 原型 1 2 3 4 SQLRETURN SQLSetStmtAttr(SQLHSTMT StatementHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); 参数 表17 SQLSetStmtAttr参数 关键字 参数说明 StatementtHandle 语句句柄。 Attribute 需设置的属性。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位无符号整型值,或指向以空结束的字符串,二进制缓冲区,或者驱动定义值。注意,如果ValuePtr参数是驱动程序指定值。ValuePtr可能是有符号的整数。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 返回值 SQL_SUC CES S:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 当SQLSetStmtAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_STMT的HandleType和StatementHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLSetConnectAttr 功能描述 设置控制连接各方面的属性。 原型 1 2 3 4 SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); 参数 表15 SQLSetConnectAttr参数 关键字 参数说明 StatementtHandle 连接句柄。 Attribute 设置属性。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr是32位无符号整型值或指向以空结束的字符串。注意,如果ValuePtr参数是驱动程序指定值。ValuePtr可能是有符号的整数。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 当SQLSetConnectAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_DBC的HandleType和ConnectionHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLSetEnvAttr 功能描述 设置控制环境各方面的属性。 原型 1 2 3 4 SQLRETURN SQLSetEnvAttr(SQLHENV EnvironmentHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); 参数 表16 SQLSetEnvAttr参数 关键字 参数说明 EnvironmentHandle 环境句柄。 Attribute 需设置的环境属性,可为如下值: SQL_ATTR_ODBC_VERSION:指定ODBC版本。 SQL_CONNECTION_POOLING:连接池属性。 SQL_OUTPUT_NTS:指明驱动器返回字符串的形式。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位整型值,或为以空结束的字符串。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 当SQLSetEnvAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_ENV的HandleType和EnvironmentHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLGetData 功能描述 SQLGetData返回结果集中某一列的数据。可以多次调用它来部分地检索不定长度的数据。 原型 1 2 3 4 5 6 SQLRETURN SQLGetData(SQLHSTMT StatementHandle, SQLUSMALLINT Col_or_Param_Num, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLLEN BufferLength, SQLLEN *StrLen_or_IndPtr); 参数 表12 SQLGetData参数 关键字 参数说明 StatementHandle 语句句柄,通过SQLAllocHandle获得。 Col_or_Param_Num 要返回数据的列号。结果集的列按增序从1开始编号。书签列的列号为0。 TargetType TargetValuePtr缓冲中的C数据类型的类型标识符。若TargetType为SQL_ARD_TYPE,驱动使用ARD中SQL_DESC_CONCISE_TYPE字段的类型标识符。若为SQL_C_DEFAULT,驱动根据源的SQL数据类型选择缺省的数据类型。 TargetValuePtr 输出参数:指向返回数据所在缓冲区的指针。 BufferLength TargetValuePtr所指向缓冲区的长度。 StrLen_or_IndPtr 输出参数:指向缓冲区的指针,在此缓冲区中返回长度或标识符的值。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_NO_DATA:表示SQL语句不返回结果集。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。 注意事项 当调用SQLFetch函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数分别设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLExecDirect 功能描述 使用参数的当前值,执行一条准备好的语句。对于一次只执行一条SQL语句,SQLExecDirect是最快的执行方式。 原型 1 2 3 SQLRETURN SQLExecDirect(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength); 参数 表7 SQLExecDirect参数 关键字 参数说明 StatementHandle 语句句柄,通过SQLAllocHandle获得。 StatementText 要执行的SQL语句。不支持一次执行多条语句。 TextLength StatementText的长度。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_NEED_DATA:在执行SQL语句前没有提供足够的参数。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。 SQL_NO_DATA:表示SQL语句不返回结果集。 注意事项 当调用SQLExecDirect函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLExecute 功能描述 如果语句中存在参数标记的话,SQLExecute函数使用参数标记参数的当前值,执行一条准备好的SQL语句。 原型 1 SQLRETURN SQLExecute(SQLHSTMT StatementHandle); 参数 表8 SQLExecute参数 关键字 参数说明 StatementHandle 要执行语句的语句句柄。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_NO_DATA:表示SQL语句不返回结果集。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。 注意事项 当SQLExecute函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,可通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLGetDiagRec 功能描述 返回诊断记录的多个字段的当前值,其中诊断记录包含错误、警告及状态信息。 原型 1 2 3 4 5 6 7 8 SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLCHAR *SQLState, SQLINTEGER *NativeErrorPtr, SQLCHAR *MessageText, SQLSMALLINT BufferLength, SQLSMALLINT *TextLengthPtr); 参数 表13 SQLGetDiagRec参数 关键字 参数说明 HandleType 句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列值之一: SQL_HANDLE_ENV SQL_HANDLE_DBC SQL_HANDLE_STMT SQL_HANDLE_DESC Handle 诊断数据结构的句柄,其类型由HandleType来指出。如果HandleType是SQL_HANDLE_ENV,Handle可以是共享的或非共享的环境句柄。 RecNumber 指出应用从查找信息的状态记录。状态记录从1开始编号。 SQLState 输出参数:指向缓冲区的指针,该缓冲区存储着有关RecNumber的五字符的SQLSTATE码。 NativeErrorPtr 输出参数:指向缓冲区的指针,该缓冲区存储着本地的错误码。 MessageText 指向缓冲区的指针,该缓冲区存储着诊断信息文本串。 BufferLength MessageText的长度。 TextLengthPtr 输出参数:指向缓冲区的指针,返回MessageText中的字节总数。如果返回字节数大于BufferLength,则MessageText中的诊断信息文本被截断成BufferLength减去NULL结尾字符的长度。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 SQLGetDiagRec不发布自己的诊断记录。它用下列返回值来报告它自己的执行结果: SQL_SUCCESS:函数成功返回诊断信息。 SQL_SUCCESS_WITH_INFO:*MessageText太小以致不能容纳所请求的诊断信息。没有诊断记录生成。 SQL_INVALID_HANDLE:由HandType和Handle所指出的句柄是不合法句柄。 SQL_ERROR:RecNumber小于等于0或BufferLength小于0。 如果调用ODBC函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO,可调用SQLGetDiagRec返回诊断信息值SQLSTATE,SQLSTATE值的如下表。 表14 SQLSTATE值 SQLSTATE 错误 描述 HY000 一般错误 未定义特定的SQLSTATE所产生的一个错误。 HY001 内存分配错误 驱动程序不能分配所需要的内存来支持函数的执行或完成。 HY008 取消操作 调用SQLCancel取消执行语句后,依然在StatementHandle上调用函数。 HY010 函数系列错误 在为执行中的所有数据参数或列发送数据前就调用了执行函数。 HY013 内存管理错误 不能处理函数调用,可能由当前内存条件差引起。 HYT01 连接超时 数据源响应请求之前,连接超时。 IM001 驱动程序不支持此函数 调用了StatementHandle相关的驱动程序不支持的函数 示例 参见:示例
  • SQLDisconnect 功能描述 关闭一个与特定连接句柄相关的连接。 原型 1 SQLRETURN SQLDisconnect(SQLHDBC ConnectionHandle); 参数 表6 SQLDisconnect参数 关键字 参数说明 ConnectionHandle 连接句柄,通过SQLAllocHandle获得。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 当调用SQLDisconnect函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_DBC和ConnectionHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLAllocHandle 功能描述 分配环境、连接、语句或描述符的句柄,它替代了ODBC 2.x函数SQLAllocEnv、SQLAllocConnect及SQLAllocStmt。 原型 1 2 3 SQLRETURN SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandlePtr); 参数 表1 SQLAllocHandle参数 关键字 参数说明 HandleType 由SQLAllocHandle分配的句柄类型。必须为下列值之一: SQL_HANDLE_ENV(环境句柄) SQL_HANDLE_DBC(连接句柄) SQL_HANDLE_STMT(语句句柄) SQL_HANDLE_DESC(描述句柄) 申请句柄顺序为,先申请环境句柄,再申请连接句柄,最后申请语句句柄,后申请的句柄都要依赖它前面申请的句柄。 InputHandle 将要分配的新句柄的类型。 如果HandleType为SQL_HANDLE_ENV,则这个值为SQL_NULL_HANDLE。 如果HandleType为SQL_HANDLE_DBC,则这一定是一个环境句柄。 如果HandleType为SQL_HANDLE_STMT或SQL_HANDLE_DESC,则它一定是一个连接句柄。 OutputHandlePtr 输出参数:一个缓冲区的指针,此缓冲区以新分配的数据结构存放返回的句柄。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 当分配的句柄并非环境句柄时,如果SQLAllocHandle返回的值为SQL_ERROR,则它会将OutputHandlePtr的值设置为SQL_NULL_HDBC、SQL_NULL_HSTMT或SQL_NULL_HDESC。之后,通过调用带有适当参数的SQLGetDiagRec,其中HandleType和Handle被设置为IntputHandle的值,可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • 空间索引 GaussDB(DWS)数据库的PostGIS Extension支持GIST (Generalized Search Tree) 空间索引(分区表除外)。相比于B-tree索引,GIST索引适应于任意类型的非常规数据结构,可有效提高几何和地理数据信息的检索效率。 使用如下命令创建GIST索引: 1 CREATE INDEX indexname ON tablename USING GIST ( geometryfield );
  • WITH中的数据修改语句 在WITH子句中使用数据修改命令INSERT、UPDATE、DELETE。这允许用户在同一个查询中执行多个不同操作。示例如下所示: 1 2 3 4 5 6 WITH moved_tree AS ( DELETE FROM tree WHERE parentid = 4 RETURNING * ) INSERT INTO tree_log SELECT * FROM moved_tree; 上述查询示例实际上从tree把行移动到tree_log。WITH中的DELETE删除来自tree的指定行,以它的RETURNING子句返回它们的内容,并且接着主查询读该输出并将它插入到tree_log。 WITH子句中的数据修改语句必须有RETURNING子句,用来返回RETURNING子句的输出,而不是数据修改语句的目标表,RETURNING子句形成了可以被查询的其余部分引用的临时表。如果一个WITH中的数据修改语句缺少一个RETURNING子句,则它形不成临时表并且不能在剩余的查询中被引用。 如果声明了RECURSIVE关键字,则不允许在数据修改语句中进行递归自引用。在某些情况中可以通过引用递归WITH的输出来绕过这个限制,例如: 1 2 3 4 5 6 7 8 9 WITH RECURSIVE included_parts(sub_part, part) AS ( SELECT sub_part, part FROM parts WHERE part = 'our_product' UNION ALL SELECT p.sub_part, p.part FROM included_parts pr, parts p WHERE p.part = pr.sub_part ) DELETE FROM parts WHERE part IN (SELECT part FROM included_parts); 这个查询将会移除一个产品的所有直接或间接子部件。 WITH子句中的子语句与主查询同时执行。因此,在使用WITH中的数据修改语句时,指定更新的顺序实际是以不可预测的方式发生的。所有的语句都使用同一个快照中执行,语句的效果在目标表上不可见。这减轻了行更新的实际顺序的不可预见性的影响,并且意味着RETURNING数据是在不同WITH子语句和主查询之间传达改变的唯一方法。 本示例中外层SELECT可以返回更新之前的数据: 1 2 3 4 WITH t AS ( UPDATE tree SET id = id + 1 RETURNING * ) SELECT * FROM tree; 本示例中外部SELECT将返回更新过的数据: 1 2 3 4 WITH t AS ( UPDATE tree SET id = id + 1 RETURNING * ) SELECT * FROM t; 不支持在单个语句中更新同一行两次。这种语句的效果是不可预测的。如果只有一个修改发生了,但却不容易(有时也不可能)预测哪一个发生了修改。
  • WITH递归查询 通过声明RECURSIVE关键字,一个WITH查询可以引用它自己的输出。 递归WITH查询的通常形式如下: 1 non_recursive_term UNION [ALL] recursive_term 其中:UNION在合并集合时会执行去重操作,而UNION ALL则直接将结果集合并、不执行去重;只有递归项能够包含对于查询自身输出的引用。 使用递归WITH时,必须确保查询的递归项最终不会返回元组,否则查询将无限循环。 使用表tree来存储下图中的所有节点信息: 表定义语句如下: 1 CREATE TABLE tree(id INT, parentid INT); 表中数据如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 INSERT INTO tree VALUES(1,0),(2,1),(3,1),(4,2),(5,2),(6,3),(7,3),(8,4),(9,4),(10,6),(11,6),(12,10); SELECT * FROM tree; id | parentid ----+---------- 1 | 0 2 | 1 3 | 1 4 | 2 5 | 2 6 | 3 7 | 3 8 | 4 9 | 4 10 | 6 11 | 6 12 | 10 (12 rows) 通过以下WITH RECURSIVE语句,可以返回从顶层1号节点开始,整个树的节点,以及层次信息: 1 2 3 4 5 6 7 8 9 10 11 WITH RECURSIVE nodeset AS ( -- recursive initializing query SELECT id, parentid, 1 AS level FROM tree WHERE id = 1 UNION ALL -- recursive join query SELECT tree.id, tree.parentid, level + 1 FROM tree, nodeset WHERE tree.parentid = nodeset.id ) SELECT * FROM nodeset ORDER BY id; 上述查询中,我们可以看出,一个典型的WITH RECURSIVE表达式包含至少一个递归查询的CTE,该CTE中的定义为一个UNION ALL集合操作,第一个分支为递归起始查询,第二个分支为递归关联查询,需要自引用第一部分进行不断递归关联。该语句执行时,递归起始查询执行一次,关联查询执行若干次并将结果叠加到起始查询结果集中,直到某一些关联查询结果为空,则返回。 上述查询的执行结果如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 id | parentid | level ----+----------+------- 1 | 0 | 1 2 | 1 | 2 3 | 1 | 2 4 | 2 | 3 5 | 2 | 3 6 | 3 | 3 7 | 3 | 3 8 | 4 | 4 9 | 4 | 4 10 | 6 | 4 11 | 6 | 4 12 | 10 | 5 (12 rows) 从返回结果可以看出,起始查询结果包含level=1的结果集,关联查询执行了五次,前四次分别输出level=2,3,4,5的结果集,在第五次执行时,由于没有parentid和输出结果集id相等的记录,也就是再没有多余的孩子节点,因此查询结束。 对于WITH RECURSIVE表达式,GaussDB(DWS)支持其分布式执行。由于WITH RECURSIVE涉及到循环运算,GaussDB(DWS)引入了参数max_recursive_times,用于控制WITH RECURSIVE的最大循环次数,默认值为200,超过该次数则报错。
  • SQLSetStmtAttr 功能描述 设置相关语句的属性。 原型 1 2 3 4 SQLRETURN SQLSetStmtAttr(SQLHSTMT StatementHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); 参数 表17 SQLSetStmtAttr参数 关键字 参数说明 StatementtHandle 语句句柄。 Attribute 需设置的属性。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位无符号整型值,或指向以空结束的字符串,二进制缓冲区,或者驱动定义值。注意,如果ValuePtr参数是驱动程序指定值。ValuePtr可能是有符号的整数。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 当SQLSetStmtAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_STMT的HandleType和StatementHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLSetConnectAttr 功能描述 设置控制连接各方面的属性。 原型 1 2 3 4 SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); 参数 表15 SQLSetConnectAttr参数 关键字 参数说明 StatementtHandle 连接句柄。 Attribute 设置属性。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr是32位无符号整型值或指向以空结束的字符串。注意,如果ValuePtr参数是驱动程序指定值。ValuePtr可能是有符号的整数。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 当SQLSetConnectAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_DBC的HandleType和ConnectionHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLGetDiagRec 功能描述 返回诊断记录的多个字段的当前值,其中诊断记录包含错误、警告及状态信息。 原型 1 2 3 4 5 6 7 8 SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLCHAR *SQLState, SQLINTEGER *NativeErrorPtr, SQLCHAR *MessageText, SQLSMALLINT BufferLength, SQLSMALLINT *TextLengthPtr); 参数 表13 SQLGetDiagRec参数 关键字 参数说明 HandleType 句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列值之一: SQL_HANDLE_ENV SQL_HANDLE_DBC SQL_HANDLE_STMT SQL_HANDLE_DESC Handle 诊断数据结构的句柄,其类型由HandleType来指出。如果HandleType是SQL_HANDLE_ENV,Handle可以是共享的或非共享的环境句柄。 RecNumber 指出应用从查找信息的状态记录。状态记录从1开始编号。 SQLState 输出参数:指向缓冲区的指针,该缓冲区存储着有关RecNumber的五字符的SQLSTATE码。 NativeErrorPtr 输出参数:指向缓冲区的指针,该缓冲区存储着本地的错误码。 MessageText 指向缓冲区的指针,该缓冲区存储着诊断信息文本串。 BufferLength MessageText的长度。 TextLengthPtr 输出参数:指向缓冲区的指针,返回MessageText中的字节总数。如果返回字节数大于BufferLength,则MessageText中的诊断信息文本被截断成BufferLength减去NULL结尾字符的长度。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 SQLGetDiagRec不发布自己的诊断记录。它用下列返回值来报告它自己的执行结果: SQL_SUCCESS:函数成功返回诊断信息。 SQL_SUCCESS_WITH_INFO:*MessageText太小以致不能容纳所请求的诊断信息。没有诊断记录生成。 SQL_INVALID_HANDLE:由HandType和Handle所指出的句柄是不合法句柄。 SQL_ERROR:RecNumber小于等于0或BufferLength小于0。 如果调用ODBC函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO,可调用SQLGetDiagRec返回诊断信息值SQLSTATE,SQLSTATE值的如下表。 表14 SQLSTATE值 SQLSTATE 错误 描述 HY000 一般错误 未定义特定的SQLSTATE所产生的一个错误。 HY001 内存分配错误 驱动程序不能分配所需要的内存来支持函数的执行或完成。 HY008 取消操作 调用SQLCancel取消执行语句后,依然在StatementHandle上调用函数。 HY010 函数系列错误 在为执行中的所有数据参数或列发送数据前就调用了执行函数。 HY013 内存管理错误 不能处理函数调用,可能由当前内存条件差引起。 HYT01 连接超时 数据源响应请求之前,连接超时。 IM001 驱动程序不支持此函数 调用了StatementHandle相关的驱动程序不支持的函数 示例 参见:示例
  • SQLSetEnvAttr 功能描述 设置控制环境各方面的属性。 原型 1 2 3 4 SQLRETURN SQLSetEnvAttr(SQLHENV EnvironmentHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength); 参数 表16 SQLSetEnvAttr参数 关键字 参数说明 EnvironmentHandle 环境句柄。 Attribute 需设置的环境属性,可为如下值: SQL_ATTR_ODBC_VERSION:指定ODBC版本。 SQL_CONNECTION_POOLING:连接池属性。 SQL_OUTPUT_NTS:指明驱动器返回字符串的形式。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位整型值,或为以空结束的字符串。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 注意事项 当SQLSetEnvAttr的返回值为SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过借助SQL_HANDLE_ENV的HandleType和EnvironmentHandle的Handle,调用SQLGetDiagRec可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLExecDirect 功能描述 使用参数的当前值,执行一条准备好的语句。对于一次只执行一条SQL语句,SQLExecDirect是最快的执行方式。 原型 1 2 3 SQLRETURN SQLExecDirect(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength); 参数 表7 SQLExecDirect参数 关键字 参数说明 StatementHandle 语句句柄,通过SQLAllocHandle获得。 StatementText 要执行的SQL语句。不支持一次执行多条语句。 TextLength StatementText的长度。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_NEED_DATA:在执行SQL语句前没有提供足够的参数。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。 SQL_NO_DATA:表示SQL语句不返回结果集。 注意事项 当调用SQLExecDirect函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
  • SQLGetData 功能描述 SQLGetData返回结果集中某一列的数据。可以多次调用它来部分地检索不定长度的数据。 原型 1 2 3 4 5 6 SQLRETURN SQLGetData(SQLHSTMT StatementHandle, SQLUSMALLINT Col_or_Param_Num, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLLEN BufferLength, SQLLEN *StrLen_or_IndPtr); 参数 表12 SQLGetData参数 关键字 参数说明 StatementHandle 语句句柄,通过SQLAllocHandle获得。 Col_or_Param_Num 要返回数据的列号。结果集的列按增序从1开始编号。书签列的列号为0。 TargetType TargetValuePtr缓冲中的C数据类型的类型标识符。若TargetType为SQL_ARD_TYPE,驱动使用ARD中SQL_DESC_CONCISE_TYPE字段的类型标识符。若为SQL_C_DEFAULT,驱动根据源的SQL数据类型选择缺省的数据类型。 TargetValuePtr 输出参数:指向返回数据所在缓冲区的指针。 BufferLength TargetValuePtr所指向缓冲区的长度。 StrLen_or_IndPtr 输出参数:指向缓冲区的指针,在此缓冲区中返回长度或标识符的值。 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_NO_DATA:表示SQL语句不返回结果集。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。 注意事项 当调用SQLFetch函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,通过调用SQLGetDiagRec函数,并将HandleType和Handle参数分别设置为SQL_HANDLE_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 示例 参见:示例
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全