
openGauss技术分享
文章平均质量分 81
不定期更新openGauss技术内容
openGauss小助手
openGauss相关技术、咨询、活动分享,欢迎关注~
展开
-
openGauss数据库源码解析 | openGauss开发快速入门(9)
作为openGauss数据库开发者,在基于openGauss开源产品进行二次开发后,往往需要编译openGauss对所开发的功能的实现情况进行验证。本节向读者简要介绍openGauss的编译方法,详细的内容请参见openGauss官网(原创 2024-03-15 10:38:06 · 764 阅读 · 0 评论 -
openGauss数据库源码解析 | openGauss简介(二)
检查关系的使用:FROM子句中出现的关系必须是该查询对应模式中的关系或视图。‚ 检查与解析属性的使用:在SELECT语句中或者WHERE子句中出现的各个属性必须是FROM子句中某个关系或视图的属性。ƒ 检查数据类型:所有属性的数据类型必须是匹配的。词法和语法分析代码基于gram.y和scan.l中定义的规则,使用UNIX工具bison和flex构建产生。其中,词法分析器在文件scan.l中定义,它负责识别标识符、SQL关键字等。对于找到的每个关键字或标识符,都会生成一个标记并将其传递给解析器。原创 2024-03-14 09:35:31 · 1108 阅读 · 0 评论 -
本地安装单机版openGauss并使用DataStudio工具连接使用
1.虚拟机的安装1.1安装virtualbox访问Downloads – Oracle VM VirtualBox安装对应平台的版本 按照提示步骤安装好virtualbox环境1.2安装vagrant 访问Downloads | Vagrant by HashiCorp 安装对应平台的vagrant 按照提示步骤安装好vagrant环境 执行vagrant -v,显示如下信息,则安装成功 Vagrant 2.2.19 1.3安装centos7 建立一.原创 2022-03-21 19:12:08 · 1588 阅读 · 2 评论 -
BenchmarkSQL高性能测试
在官网的blog文章中,详细介绍了如何tpcc测试、安装benchmarksql和安装数据库,请先阅读它:BenchmarkSQL性能测试。本次openGauss数据库部署采用TaiShan 200服务器(型号2280) : CPU型号: 鲲鹏920 6426, 2P 128核 内存数量: 32G * 24条 网络:10GE带宽 网卡:1822 SP580 25GE 硬盘:nvme* 3个 容量:7.3T (HWE52P438T0L005N) 软件:原创 2022-03-21 19:09:40 · 5934 阅读 · 0 评论 -
JDBC使用及源码编译
1. JDBC简介 JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。 JDBC接口是Java标准库自带的,具体的JDBC驱动是由数据库厂商提供的,JDBC驱动也是由Java语言编写的,为一个jar包,真正实现JDBC接口中的类。 openGauss数据库源自postgres,openGauss JDBC以PostgreSQL JDBC Driver 42.2.5为基准,适配openGauss数据库,增加新特性。原创 2022-03-21 19:04:40 · 2081 阅读 · 0 评论 -
openGauss Sqlines 使用指导
Sqlines简介Sqlines是一款开源软件,支持多种数据库之间的SQL语句语法的的转换,openGauss将此工具修改适配,新增了openGauss数据库选项,目前可以支持PostgreSQL、MySQL、Oracle向openGauss的SQL语法转换。如何获取和使用1、在社区下载代码到任意位置:openGauss/openGauss-tools-sqlines (gitee.com)2、进入代码根目录下, 执行脚本编译安装sqlines:[user@openGauss33 sq原创 2022-03-21 10:30:17 · 3034 阅读 · 0 评论 -
openGauss事务机制中MVCC技术的实现分析
概述事务事务是为用户提供的最核心、最具吸引力的数据库功能之一。简单地说,事务是用户定义的一系列数据库操作(如查询、插入、修改或删除等)的集合,从数据库内部保证了该操作集合作为一个整体的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),这些特性统称事务的ACID特性。DBMS中的并发控制并发控制旨在针对数据库中对事务并行的场景,保证 ACID 中的一致性(Consistency)与隔离性(Isolation)。数据库技原创 2022-03-21 10:07:34 · 816 阅读 · 0 评论 -
如何卸载openGauss
卸载openGauss的过程分为两步,包含卸载openGauss数据库和对openGauss服务器的环境做清理。执行卸载openGauss数据库openGauss提供了卸载脚本帮助用户完整的卸载openGauss数据库。操作步骤 确认主节点 [omm@db02 ~]$ gs_om -t status --detail[ CMServer State ] node node_ip instance原创 2022-03-21 10:03:50 · 3185 阅读 · 0 评论 -
openGauss如何跑各种check
如何进行Fastcheck?首先,导入环境变量:export CODE_BASE=/data/openGauss-serverexport BINARYLIBS=/data/openGauss-third_party_binarylibsexport GAUSSHOME=$CODE_BASE/dest/export GCC_PATH=$BINARYLIBS/buildtools/openeuler_aarch64/gcc7.3/export CC=$GCC_PATH/gcc/bin/gcc原创 2022-03-21 10:01:56 · 1090 阅读 · 1 评论 -
openGauss使能paxos特性实践
前言GaussDB(for openGauss)推出了基于Paxos协议的DCF高可用组件,该组件使得GaussDB(for openGauss)在保证数据一致性的同时,在高可用方面可进一步得到增强,包括: (1)通过自仲裁、多数派选主能力摆脱第三方仲裁组件,极大缩短RTO时间,且可预防任何故障下的脑裂双主; (2)支持节点同步、同异步混合部署的多集群部署模式; (3)提升主备间节点日志复制效率,提升系统的最大吞吐能力。 借助GaussDB(for openGauss)的DCF高可用组件,用户不仅可以免原创 2022-03-21 10:00:30 · 423 阅读 · 0 评论 -
如何在openGauss中使用zhparser
准备一个装有openGauss数据库的环境 下载scws代码到任意位置:https://github.com/hightman/scwsmaster 下载zhparser代码到任意位置:https://github.com/amutu/zhparsermaster步骤登录环境并source openGauss的环境变量 编译安装 scws 解压并进入文件夹:unzip scws-master.zip && cd scws-master 生成configure文...原创 2022-03-18 14:24:55 · 589 阅读 · 0 评论 -
openGauss升级脚本撰写经验总结
[TOC]1. Function正向DROP FUNCTION IF EXISTS pg_catalog.gin_compare_jsonb(text, text) CASCADE;SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 3498;CREATE FUNCTION pg_catalog.gin_compare_jsonb ( text, text) RETURNS integer LANGUA原创 2022-03-18 14:23:38 · 402 阅读 · 0 评论 -
How to manage jobs in openGauss 2.1.0
创建测试表gaussdb@postgres> create table t_job (value TIMESTAMP);CREATE TABLEgaussdb@postgres> insert into t_job values(sysdate);INSERT 0 1gaussdb@postgres> select * from t_job;+---------------------+| value ||----------------原创 2022-03-18 14:22:39 · 323 阅读 · 0 评论 -
openGauss 2.1.0 闪回特性
openGauss 2.1.0于2021年9月30日发布,是openGauss的一个Preview版本,该版本生命周期仅为半年。该版本的新增功能如下:存储过程兼容性增强 SQL引擎能力增强 支持Ustore存储引擎 支持段页式存储 基于Paxos分布式一致性协议的高可用 AI4DB和DB4AI竞争力持续构筑 日志框架及错误码整改 JDBC客户端负载均衡及读写分离 支持cmake脚本编译 列存表支持主键唯一键约束 支持jsonb数据类型 支持unique sql自动淘汰 UCE故障原创 2022-03-18 14:21:31 · 600 阅读 · 0 评论 -
openGauss B-tree索引读写并发实现
openGauss B-tree 索引在实现时,没有完全遵循 L & Y 的理论,本文主要关注openGauss 中 B-tree 索引的实现。实现与理论的差异 读锁 介绍B-tree索引并发读写原理时讲到,L & Y 的理论中读操作完全不加锁,而是假设 B-tree 节点在内存中的拷贝是非共享的。但实际在 PG 和 openGauss 的实现中,内存中的 buffer 是共享的。所以在实现中,实际读操作需要对节点加读锁,来保证读期间没有修改操作。加锁动作降低了并发性,但保证了原创 2022-03-18 14:19:47 · 694 阅读 · 0 评论 -
如何插件化地为openGauss添加算子
1.1 openGauss执行算子汇总openGauss的算子按类型可分为四类:控制算子、连接算子、扫描算子和物化算子。下面汇总了当前(openGauss2.0.0)已有的算子。算子 文件 类型 Agg nodeAgg.cpp 物化算子 Append nodeAppend.cpp 控制算子 BitmapAnd nodeBitmapAnd.cpp 控制算子 BitmapHeapscan nodeBitmapHeapscan.cpp原创 2022-03-18 14:14:46 · 639 阅读 · 0 评论 -
openGauss逻辑备份及恢复
gs_dumpall 背景信息 gs_dumpall是openGauss用于导出所有数据库相关信息工具,它可以导出openGauss数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据、以及openGauss所有数据库公共的全局对象。 gs_dumpall工具由操作系统用户omm执行。 gs_dumpall工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。 gs_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs_dumpal原创 2022-03-18 14:12:22 · 1046 阅读 · 0 评论 -
openGauss 之参数自调优X-Tuner
TPC-H 是一个面向分析型业务(AP)的基准测试,它由一系列热点查询组成,这些热点查询都是高度复杂的,因此执行时间往往都比较长。 在本次实验测试中,将手动向数据库加载TPC-H数据,并保存在名为 tpch 的数据库中。默认TPC-H数据库的表缺少索引,数据库的参数并没有做任何优化,因此执行效率会比较差。 本实验比较浅显,使用openGauss的参数自调优(X-Tuner:gs_xtuner)功能,对数据库进行参数优化,以提升数据库运行性能,让大家对X-Tuner参数自调优有一个初步的了解。环境信息原创 2022-03-18 11:51:57 · 658 阅读 · 0 评论 -
openGauss逻辑解码
逻辑复制由两部分组成:逻辑解码和数据复制。逻辑解码会输出以事务为单位组织的逻辑日志。业务或数据库中间件将会对逻辑日志进行解析并最终实现数据复制。openGauss当前只提供逻辑解码功能,因此文只对逻辑解码进行简单说明和测试。逻辑解码为逻辑复制提供事务解码的基础能力,openGauss使用SQL函数接口进行逻辑解码。此方法调用方便,不需使用工具,对接外部工具接口也比较清晰,不需要额外适配。由于逻辑日志是以事务为单位的,在事务提交后才能输出,且逻辑解码是由用户驱动的;因此为了防止事务开始时的xlog原创 2022-03-18 11:47:10 · 627 阅读 · 0 评论 -
benchmark使用
概述TPC-C是一种衡量联机事务处理OLTP能力的测试标准,模拟了在线订单处理系统应用环境,可以通过benchmark工具,来测试数据库的性能指标。TPC-C测试指标为tpmC,每分钟处理订单交易的数量。值越大表示数据库性能越优。本文介绍使用benchmark来跑opengauss数据库步骤,以及htop iostat两个服务器性能监控工具。java安装配置下载jdk到服务器并解压(例如解压到目录/usr/share/java/jdk1.8.0_232);vim /etc/profile 增原创 2022-03-18 11:41:36 · 4149 阅读 · 0 评论 -
普罗米修斯监控openGauss
1、前期准备1.1项目依赖链接依赖开源工程 工程链接 普罗米修斯 https://github.com/prometheus/pushgateway opengauss_export https://github.com/enmotech/opengauss_exporter pushgateway https://github.com/prometheus/pushgateway openGauss openGauss-server: openGaus原创 2022-03-17 16:57:07 · 704 阅读 · 0 评论 -
PowerDesigner使用JDBC连接openGauss指导
PowerDesigner是Sybase的企业建模和设计解决方案,采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术。 在部分业务场景下,没有数据库PDM文件,数据库中表之间的各种关系无法直观地看清楚,此时可以使用PowerDesigner进行逆向工程,从已有的数据库生成PDM文件。(1)下载并安装PowerDesigner 16.6版本,进入{PowerDesigner_insatll_dir}/Resource Files/DBMS,导原创 2022-03-17 16:55:58 · 966 阅读 · 0 评论 -
database-sync适配openGauss使用指导书
一、database-sync简介database-sync作为一种开源辅助工具,用于数据库之间的表同步,更确切的说法是复制,可以从一个数据库复制表到另一个数据库该工具支持的功能如下: (1)自动同步表字段,如:源表扩字段,目标表自动扩字段(2)支持增量或全量同步数据(3)支持指定字段同步,只同步关心的字段支持的关系型数据库:mysql、db2、postgresql、oracle、sqlserver源代码下载:database-sync代码托管在github上源代码下载:下载原创 2022-03-17 16:53:56 · 313 阅读 · 0 评论 -
zabbix适配openGauss使用指导书
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,A原创 2022-03-17 16:54:40 · 1412 阅读 · 0 评论 -
如何向openGauss社区提交你的第一篇博客
openGauss社区的博客板块对外完全开放,以方便参与者分享个人见解和技术经验。你可以将个人博客以Pull Request的方式提交到openGauss社区blog仓库, 在Pull Request合入blog仓库之后会自动同步到社区官网:blogs | openGauss以下内容将详细描述如何向openGauss社区提交你的第一篇博客:注册Gitee账号openGauss社区源代码以及官方网站和博客都托管在码云Gitee上面,组织仓库地址https://gitee.com/opengauss原创 2022-03-17 16:44:06 · 207 阅读 · 0 评论 -
openGauss行存与列存
列存表限制列存表不支持数组。 列存表的数量建议不超过1000个。 列存表的表级约束只支持PARTIAL CLUSTER KEY,不支持主外键等表级约束。 列存表的字段约束只支持NULL、NOT NULL和DEFAULT常量值。 列存表不支持alter命令修改字段约束。 列存表支持delta表,受参数enable_delta_store 控制是否开启,受参数deltarow_threshold控制进入delta表的阀值。列存相关参数 cstore_buffers 列存所使用的共享缓冲原创 2022-03-17 16:38:09 · 3394 阅读 · 0 评论 -
openGauss PITR恢复
当数据库崩溃或希望回退到数据库之前的某一状态时,openGauss的即时恢复功能( Point-In-Time Recovery,简称PITR )可以支持恢复到备份归档数据之后的任意时间点。前提条件基于物理备份的全量数据文件。 基于归档的WAL日志文件。限制要求PITR仅支持恢复到物理备份数据之后的某一时间点。 仅主节点可以进行PITR恢复,备机需要进行全量build达成与主机数据同步。PITR恢复流程将物理备份的文件替换目标数据库目录。 删除数据库目录下pg_xlog/中的所有文原创 2022-03-17 16:23:15 · 1877 阅读 · 0 评论 -
openGauss gsql 常用元命令
连接数据库 使用 -E参数可以显示元命令具体执行的SQL信息[omm@og1 ~]$ gsql -d postgres -p15400 -Egsql ((openGauss 2.1.0 build 590b0f8e) compiled at 2021-09-30 14:29:04 commit 0 last mr )Non-SSL connection (SSL connection is recommended when requiring high-security)Type "help"原创 2022-03-17 16:08:26 · 4870 阅读 · 1 评论 -
openGauss NUMA适配之线程绑核
1、多核NUMA结构NUMA(Non-uniform memory access,非统一内存访问架构)出现前,CPU通过内存控制器访问内存,随着CPU核的增加,内存控制器成为评价。内存控制器一般拆分内存平均分配到各个node节点上,CPU访问本地内存速度快,跨片访问慢。NUMA距离定义为:NUMA node的处理器和内存块的物理距离。通过numactl工具可以查看到CPU访问的距离信息。2、NUMA绑核优化思路避免线程在运行中在不同核上漂移,从而引起访问NUMA远端内存。openGauss通过配原创 2022-03-17 16:04:16 · 2229 阅读 · 0 评论 -
openGauss系统函数添加指导
1函数架构简介openGauss内函数可以分为两个部分: 身份注册声明:openGauss中存在一个系统表 pg_proc,这个表存放了所有函数的基本元信息,相当于函数的“户口本”,只有在其中可以查到的函数,才可以在SQL语句中进行调用,才有“数据库函数”的身份。常见的注册方式有四种:builtin、升级脚本、CREATE FUNCTION语句、EXTENSION。 底层功能实现:实现其功能的具体逻辑代码,可以根据其所用的语言分为四类:INTERNAL, SQL, PLPGSQL、C..原创 2022-03-16 15:00:25 · 1220 阅读 · 0 评论 -
openGauss存储过程功能全面升级,支持PACKAGE,PLDEBUGGER等诸多新特性
存储过程类似于面向过程语言当中的函数,可以实现面向过程语言当中的声明变量、逻辑判断、条件循环等操作,是一组完成特定功能的SQL语句集合。 在openGauss 2.1之前的版本中,存储过程支持了定义变量、条件循环、逻辑判断等基本功能,但是没有面向对象语言中类的形式,因此无法对存储过程中的变量以及函数进行封装,也无法在存储过程内使用全局变量。在以前的版本中没有支持类似gdb的功能,用户调试存储过程只能够使用raise info等打印变量的方式。并且在之前的版本当中,存储过程发生异常后,没有自治事务..原创 2022-03-16 14:22:38 · 620 阅读 · 0 评论 -
openGauss分区表如何实现大数据量的快速转移
随着现代信息数据的快速增长,数据库的数据量也不断增长。对于庞大的数据如何管理呢?从数据库角度看,分区表无疑是一种很好的选择。对于很多业务,只会访问最近几天或几个月的数据,对于之前的数据很少甚至几乎不访问,这就形成了热数据和冷数据。使用分区表可以隔离开热数据和冷数据,加快访问速度。最典型的就是按照时间分区,每个分区设置一个时间段,在此时间段内的数据存储在此分区中,这样在数据处理的过程中可以筛掉大量的冗余数据。如何从普通表转换为分区表呢?这不得不提分区表的一个黑科技了--分区交换技术。分区交换技原创 2022-03-16 14:08:20 · 204 阅读 · 0 评论 -
openGauss支持国密SM3和SM4算法
1. 国密算法介绍国密即国家密码局认定的国产密码算法,常用的算法有SM1,SM2,SM3,SM4,其中密钥长度和分组长度均为128位。针对银行客户对数据库安全能力的诉求以及提高产品安全竞争力的要求,进行数据库企业级安全能力增强,openGauss自2.0.0版本支持了国密算法,主要包括用户认证支持国密SM3算法,支持利用国密SM4算法对数据进行加解密。2. 国密SM3算法——用户认证2.1 使用方法openGauss现支持四种用户认证方式,其通过postgresql.conf文件中的参数pa原创 2022-03-15 15:54:13 · 845 阅读 · 0 评论 -
解决文件存储难题 openGauss隆重推出段页式特性
现代社会信息数据爆炸式增长,工业界业务需求纷繁复杂。数据存储的数据量,建表数量也都不断增长。openGauss通用的普通表,每个数据表对应一个逻辑逻辑上的大文件(最大32T),该逻辑文件又按照固定的大小划分多个实际文件存在对应的数据库目录下面。所以,每张数据表随着数据量的增多,底层的数据存储所需文件数量会逐渐增多。同时,openGauss对外提供hashbucket表、大分区表等特性,每张数据表会被拆分为若干个子表,底层所需文件数量更是成倍增长。由此,这种存储管理模式存在以下问题:1. 对文件系统依赖大原创 2022-03-15 15:47:25 · 159 阅读 · 0 评论 -
一文汇总全密态数据库的基本使用方法
一.全密态数据库特性简介全密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后,在攻击者借助系统脆弱点窃取用户数据的状态下仍然无法获得有效的价值信息,从而起到保护数据隐私的能力。二. 全密态数据库的客户价值由于整个业务数据流在数据处理过程中都是以密文形态存在,通过全密态数据库,可以实现: 保护数据在云上全生命周期的隐私安全,无论数据处于何种状态,攻击者都无法原创 2022-03-15 15:46:03 · 352 阅读 · 0 评论 -
全密态黑科技再升级,无感知加解密原理剖析
要实现在客户端进行加解密,无疑需要在客户端进行大量维护管理,包括数据密钥管理,敏感数据加密,解析和修改SQL语句等。openGauss将这一系列的复杂操作,全部封装在客户端加密驱动中,实现了完全自动化的敏感信息加密替换,同时在数据库中存储了所有加密相关的元信息,使得数据库可以很好的识别和处理对应的加密数据。同时SQL语句中的敏感信息相关的参数,也会被加密处理,保证查询任务不会泄露用户查询意图,减少客户端的复杂安全管理及操作难度,实现用户应用开发无感知。另外,openGauss提供一系列的配置接口,满足用原创 2022-03-15 15:42:16 · 385 阅读 · 0 评论 -
Ustore在openGauss闪亮登场,重构openGauss数据存储的灵魂
9月30日,openGauss 正式推出重大内核新特性——Ustore存储引擎,为企业级用户提供更高性能的数据库服务,进一步为企业数字化转型注入新动力。同时,也将与众多的数据库内核开发者一道继续探索数据库的理论前沿与最佳实践。Ustore存储引擎,又名In-place Update存储引擎(原地更新),是openGauss 内核新增的一种存储模式。openGauss 内核此前的版本使用的行存储引擎是Append Update(追加更新)模式。追加更新对于业务中的增、删以及HOT(HeapOnly Tup原创 2022-03-15 15:40:59 · 445 阅读 · 0 评论 -
在K8S上面搭建一主两备openGauss
初始化环境(以下操作需在master和node节点执行) IP Hostname Role 192.168.0.1 k8smaster master 192.168.0.2 k8snode01 node 关闭firewalldsystemctl stop firewalldsystemctl disable原创 2022-03-15 15:39:15 · 728 阅读 · 0 评论 -
openGauss日志共识框架
分布式一致性算法是一个分布式系统的基础性问题,所要解决的是一个分布式系统如何就某个值(决议)达成强一致,进而解决系统的高可用问题。Paxos是最重要的分布式一致性算法,很多人都把它作为“分布式一致性协议”的代名词。虽然Paxos理论已经提出了很多年,使用Paxos及其各变种协议的产品也层出不穷,但是真正工业级的、第三方独立库还是很少见,开源的项目更是少之又少,参考Paxos协议的常见开源产品有Zookeeper、etcd,但是其协议并不能支持一个高吞吐的状态机复制,且没有提供独立的第三方库,可供其他系统原创 2022-03-14 11:35:46 · 440 阅读 · 0 评论 -
DB4AI:使能数据库原生AI计算,助力数据湖场景业务成功
DB4AI力图通过将AI计算能力植入到数据库中,帮助使用者们摆脱枯燥繁琐的数据搬运、导出、管理工作。利用数据库存储海量数据听起来是一件合情合理的事情,但面对一个传统型的数据库,作为算法工程师或者AI初学者的用户就不得不将数据集合的数据导出再导入AI计算框架以完成各自的计算任务。细究起来数据搬迁是一件十分麻烦且耗费成本的事情。最直接的方法是将导出数据写入文件。在进行AI计算任务前,程序将文件中的数据读取出来喂给模型进行训练。这里简单的列举几个明显挑战:1、数据的安全性:脱离了数据库的数据载体就原创 2022-03-14 11:32:11 · 413 阅读 · 0 评论