作者:洋
緣起
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存盤模型-行存和列存
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/393187.html
標籤:其他
