作者:洋

缘起

1970年IBM的Edgar F. Codd博士的专著《A Relational Model of Data for Large Shared Data Banks》,被认为是关系型数据库的开山鼻祖,奠定了关系型数据库的一系列原则。1977年,Michael Stonebraker开启了一个名为Ingres的项目, 它是PostgreSQL的前身。 他引入了对象关系模型, 并于1996年正式开源Postgresql 6.0。除了优良的基础设计,它采用了类BSD3.0协议,给予了开发者最大的自由,因此大量的衍生数据库基于其分支。顺带说一句,两位大佬分别获得了1981年与2014年的图灵奖。

openGauss经由中华之光的华为开发团队精心打造并开源的, 正是分支于PostgreSQL 9.2.4。 据统计,openGauss 于2020年开源时有515个数据库参数, 已经远多于PostgreSQL的290个数据库参数。功能远强于同期的PostgreSQL, 改变包括但不限于:增加双写功能,增大transaction id范围,支持增量检查点,增加性能监控dbe_perf schema等。

而我,作为一名数据库小白,有幸参加了墨天轮举办的《每日一练:openGauss在线实训课程》的21天打卡活动, 亲身学习并操作这款数据库。

沉浸

墨天轮的线上系统让我能够能够在没能搭建自己环境的第一天就能实操所有命令。
21天的内容包括基本的客户端基本操作,SQL语句实操。

SQL

DDL(Data Definition Language数据定义语言)

CREATE/ALTER/DROP    DATABASE/SCHEMA/TABLESPACE/TABLE[ PARTITION]/VIEW/INDEX/PROCEDURE/FUNCTION/PACKAGE/EXTENSION/AGGREGATE/CAST/EXTENSION/OPERATOR/LANGUAGE/TYPE
CURSOR/MOVE/FETCH/CLOSE
REINDEX

DML(Data Manipulation Language数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。

INSERT UPDATE SELECT DELETE/TRUNCATE
COPY LOCK CALL
ALTER SESSION

DCL(Data Control Language数据控制语言),是用来创建用户角色、设置或更改数
据库用户或角色权限的语句。

CREATE/ALTER/DROP USER
GRANT/REVOKE

工具

gsql是客户端命令行工具, 也是在学习过程中我主要应用的工具, 但为了配合opengauss的使用, 我还需要学习服务端的工具:
gs_om 服务端主力选手
gs_ctl 可以用于各种服务端的命令
gs_guc 用于设置openGauss配置文件。 postgresql.conf、pg_hba.conf和 pg_ident.conf),并统一存放在数据目录(data)下。用户可以修改配置文件的名称和存放路径。
除此之外, 还有一系列的诸如数据导出恢复(gs_dump, pg_dumpall, gs_restore),数据备份(gs_backup, gs_basebackup),工况查询(gs_check, gs_checkos, gs_checkperf, gs_collector)等一系列工具,想成为DBA必须熟练掌握。

个人心得

在这21天中, 除了按时完成课程与作业, 我也浏览了openGauss的主要文档,赞叹文档内容非常之全面。
作为一个缺乏项目经验的人,我进入数据库学习经常的困扰就是觉得自己是在盲人摸象,缺乏对全局的认识。
但这21天的学习让我有了对数据库粒度的基本认识:
数据库 -> 逻辑分割信息模式、物理分割表空间 -> 表 -> 行(列)。
通过对如pg_class,pg_type,pg_proc,pg_toast这些系统表的学习,我对数据库的大局观增加了。
比如想成为数据库高手, 那么pg_proc里的函数不可不掌握,

select * from pg_proc;

返回3703个内置函数,pg_proc 中的函数涵盖了从基本类型(整型、浮点型、字符、字符串)处理函数,到复杂类型(诸如日期、几何变换、网址、全文)的处理, 再到加解密、 统计 、聚合、以及AI等函数, 一站式解决分析问题, 要想写好存储过程, 必须要拿出钻研的劲头, 才能不浪费openGauss研发人员为我们提供的工具!
想关注数据库性能侧profiling, pg_resource_pool, io_limits, pg_profile 里的参数要如数家珍。
特别地,openGauss在每个库下面会默认存在一个dbe_perf的性能监控视图,类似mysql的performance_schema,里面有几百个性能视图,虽然这些视图大部分pg里面都有,但是单独做到一个schema里方便查看和管理。
dbe_perf schema中包含可以对数据库全面调优的参数, 比如:

select * from dbe_perf.INSTANCE_TIME

能够返回包括数据库在解析,规划, 重写, 存储过程编译、执行、IO中分别花费的时间。

select * from dbe_perf.MEMORY_NODE_DETAIL

能够返回数据库节点内存使用情况
不仅低头写代码,更要抬头看路,时刻关注自己写代码的效率与资源占用情况,
blockchain schema 可以确保每一个数据库的更改都能完好的记录在Ledger中,是一个很潮很值得研究的功能。

结语

21天的时光是短暂的,但openGauss的交互式学习为我打下了基础。
每当我遇到困难时, 群里的同学与墨天轮的老师总是会热心地伸出援助之手,让我能按时地完成学习与作业并将文章发表在墨天轮上(见附录)
在信息时代的浪潮里,小白也坚信可以通过抓住新数据库的良机,长风破浪会有时, 直挂云帆济沧海。
幸好遇见你, 在追求更好的路上, openGauss社区与我同在。

附录: 21天openGauss每日一练

openGauss每日一练第 1 天 | openGauss创建表、插入记录、查询记录和删除表基本使用
openGauss每日一练第 2 天 | openGauss查询、更新和删除基本使用
openGauss每日一练第 3 天 | 创建数据库、修改数据库属性和删除数据库
openGauss每日一练第 4 天 | 创建角色、修改角色属性、更改角色权限和删除角色
openGauss每日一练第 5 天 | 创建用户、修改用户属性、更改用户权限和删除用户
openGauss每日一练第 6 天 | 学习openGauss创建模式、修改模式属性和删除模式
openGauss每日一练第 7 天 | 表空间
openGauss每日一练第 8 天 | 学习openGauss分区表
openGauss每日一练第 9 天 | 普通表索引
openGauss每日一练第 10 天 | 分区表索引
openGauss每日一练第 11 天 | 学习openGauss视图
openGauss每日一练第 12 天 | openGauss 数据类型
openGauss每日一练第 13 天 | openGauss 导入数据
openGauss每日一练第 14 天 | openGauss 导出数据
openGauss每日一练第 15 天 | openGauss定义存储过程和函数
openGauss每日一练第 16 天 | openGauss事务控制
openGauss每日一练第 17 天 | openGauss定义游标
openGauss每日一练第 18 天 | openGauss触发器
openGauss每日一练第 19 天 | openGauss收集统计信息、打印执行计划、垃圾收集和checkpoint
openGauss每日一练第 20 天 | openGauss全文检索
openGauss每日一练第 21 天 | openGauss存储模型-行存和列存

【参赛作品94】21天openGauss学习之旅相关推荐

  1. openGauss学习之旅——基本入手

    文章目录 前提准备 基本概念 openGauss技术指标 数据库管理 表管理 索引管理 视图管理 用户管理 常见数据类型 前提准备 根据下面链接--安装并且可视化连接到openGauss数据库: ht ...

  2. 【参赛作品78】参加openGauss课程21天学习有感

    作者:博 前言 21天坚持学习openGauss数据库课程,可以说收获满满,课程内容丰富,练习方便,对于新手来说,非常友好. 1.我理解的opengauss数据库 1.1.openGauss简介 op ...

  3. 小猪的Python学习之旅 —— 17.Python数据分析:我主良缘交友了解下

    小猪的Python学习之旅 -- 17.Python数据分析:我主良缘交友了解下 标签:Python 一句话概括本文: 爬取我主良缘交友所有的妹子信息,利用Jupyter Notebook对五个方面: ...

  4. java message bus_【Microsoft Azure学习之旅】消息服务Service Bus的学习笔记及Demo示例...

    今年项目组做的是Cloud产品,有幸接触到了云计算的知识,也了解并使用了当今流行的云计算平台Amazon AWS与Microsoft Azure.我们的产品最初只部署在AWS平台上,现在产品决定同时支 ...

  5. # 小猪的Python学习之旅 —— 17.Python数据分析:我主良缘交友了解下

    一句话概括本文: 爬取我主良缘交友所有的妹子信息,利用Jupyter Notebook对五个方面: 身高,学历,年龄,城市和交友宣言进行分析,并把分析结果通过pyecharts 进行数据可视化. 引言 ...

  6. HALCON学习之旅(四)

    HALCON学习之旅(四) 文章目录 HALCON学习之旅(四) 1.如何对区域进行反选,补集,交集,合并操作 2.如何对区域进行填充操作 3.如何根据区域特征过滤区域 4.如何画各种交互ROI图形 ...

  7. WCF学习之旅(一)---Hello World.

    WCF学习之旅(一)---Hello World. 看了一些关于WCF的资料,从实例入手.记录自己学习WCF的过程. 从最简单的Hello World入门. 下图是我的solution及项目. 项目名 ...

  8. 乐鑫Esp32学习之旅② 巧用eclipes编辑器,官方教程在Windows下搭建esp32开发环境,打印 “Hello World”。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  9. 小猪的Python学习之旅 —— 1.基础知识储备

    小猪的Python学习之旅 -- 1.基础知识储备 引言: (文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句&q ...

  10. openmv学习之旅②之色块追踪算法的改善

    大家好,我是杰杰. 实在不好意思,最近比较忙,之前说的连载现在才更新出来. 从上一篇openmv的学习中openmv学习之旅① 我们可以很简单运用micropython在openmv上做我们想做的事情 ...

最新文章

  1. 测一测你的blog魔症有多严重
  2. linux多个客户端如何通信_linux实现多个客户端通信进阶
  3. java类放到对象_Java中类和对象总结
  4. 作者:朱凤华,男,博士,现任中国科学院自动化研究所副研究员,中国科学院云计算中心自动化所东莞研究院副院长。...
  5. 程序员里面开源_开源对年轻程序员意味着什么
  6. 架构设计工作笔记004---架构中常见的概念积累--随时更新
  7. 台式计算机读取不了移动硬盘,电脑识别不了硬盘的原因
  8. NekoHtml 乱码出现问号的解决
  9. hbase权威指南-客户端API高级特性
  10. Oracle 建表语句
  11. meebo FireFox add-on
  12. 虽焦虑迷惘,仍选择自由职业,只因……
  13. 开源免费 低代码平台开源_行动透明:免费代码营现已开源
  14. OV都大举降价了,荣耀定价却颇为昂贵,或许是带华为的光芒吧
  15. 发展数字经济的重要意义
  16. 《H3C交换机常用命令》——【华三交换机常用配置及维护命令技能】
  17. mail.jar下载 activation.jar下载
  18. mysql在线基本_MySQL基本配置
  19. 火山引擎 RTC 自研音频编码器 NICO 实践之路
  20. 7:C语言之求分段函数的值

热门文章

  1. c# 游戏设计:人物走动动画
  2. sql查询每科成绩最高的人和分数
  3. 安全的随想网络空间测绘
  4. task manager memory meaning
  5. 【Java】学习日记 Day20
  6. 台式计算机显卡是哪个好,台式电脑显卡排行榜
  7. 任意波形发生器的主要功能
  8. ERROR: Command errored out with exit status 1
  9. LIFT: Learned Invariant Feature Transform 论文解读
  10. Nanoprobes Ni-NTA-Nanogold——用于 His 标签标记和检测