MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2022年7月12日 星期二

EDB14.4 新功能:針對表格作 CRUD 稽核 (table-level auditing)

不少公司會要求相當程度重要性的軟體系統要在資料庫設定活動稽核紀錄(Audit Logging)以備意外發生時保留可追蹤的依據。不過稽核日誌通常會紀錄「一大堆」的活動,有時候會讓人困擾要怎麼收納。

不過在資料庫裡面,有時候不見得要全部活動都紀錄,而只要針對重要資料的活動作紀錄就可以了。

在 Oracle 內有 table-level auditing(上網查好像叫做 DBA_AUDIT_TRAIL package 還是 Fine-Grained Auditing 的樣子。。?)可以針對指定表格的存取作稽核紀錄。不過 EDB/PGSQL 過往都不太便於設置指定表格作稽核紀錄的設置。

不過在 EDB 14 開始,也支援類比功能~不過實作機制沒有模仿 Oracle,但其實設定上還蠻簡單的。

這邊就做一點紀錄。

2022年3月8日 星期二

PGSQL 的 queryid 跟 planid 功能的外掛—pg_store_plans 筆記

 EDB/PGSQL 預設僅能透過 auto_explain 紀錄執行 SQL 的執行計畫到 DB Log 檔案內。

PGSQL 查看當前/歷史執行計畫的社群擴充外掛,可以直接以表查詢運行 SQL 的執行計畫,有以下兩個(截至 2022 年三月中為止):

2021年11月17日 星期三

在 Bash Shell Script 檢查相依 Script 檔案&輸出內容自動導向&輸出內容補前綴

用 Bash Shell Script 時,你有以下困擾ㄇ~?
  1. 拆多個 Script、自訂設定檔,擔心檔案漏掉不知道
  2. 因為手痠不想在執行 Script 時寫輸出導向(大於符號 > log_file 2>&1);更不想在 Script 裡面每一行都加上輸出導向(手更痠。。)。只想要一兩行公式就自動檔向檔案
  3. 想要在 Shell Script 所吐出來的輸出內容,每一行添加時間或是檔名等裝飾品
  4. [Update 2022/3/8] 症狀四:不能同時運作的 shell script,運作時間又抓不準,然而卻需要設定頻繁 cronjob 排程,卻又害怕重複運行。。

這篇集以上問題之小成於一身,弄一個簡易可以抄的 Shell Script 範本,自認症狀符合的人類就夾去配ㄅ~

2021年10月13日 星期三

利用 Python3 內建 venv 管理 PGSQL PL/Python3 裡面可以使用的 Python 模組

使用 Python 有很多便利,但也很多困擾。。。其中之一就是 dependency hell。經典的圖就是 xkcd: Python Environment

當然這狀況已經有許多手段可以預先規劃避免與處理,其中之一就是使用 virtualenv 製作隔離的 python runtime 環境。

那麼,當 Postgres 的內嵌 stored procdure PL/PythonU 遇到需要安裝模組要怎辦?

2021年9月10日 星期五

初步認識 EDB Postgres 的 K8s 容器化解決方案 — Cloud Native PostgreSQL Operator

基於上一篇筆記所找到的好心測試 K8s 工具,這邊要來嘗試 EDB Postgres 的 PostgreSQL 容器化方案 — Cloud Native PostgreSQL Operator。

在前一陣子 EDB 曾經在 K8s/Openshift 平台還沒變成壓倒性主流容器平台方案時,就已經提供 Docker Container 的資料庫解決方案,當時也做了一點點練習(筆記在這)。

不過當時得努力的搞清楚最原生的 K8s YAML 設置,其實很複雜。。。

隨著 K8s 整體的推進,出現了 HelmOperator 這類「套件管理」的工具,加上 K8s 強化 Stateful Container 的支援,資料庫陸陸續續也可以輕易登陸 K8s 平台。

EDB 團隊基於這些變化,加上原 2ndQ 團隊的一同合作,便推出這個成熟的 K8s 解決方案。

這邊就要來初步體驗一下~

K8s in Docker:好心的 K8s 測試環境

K8s 有一大堆的測試環境設置方式,這邊紀錄一個 KIND 專案 — Kubernetes IN Docker — 把在 Docker Container 裡面模擬多節點 K8s 環境。

有別於之前筆記在 LXD 裡面設置 Minikube 得準備一堆預備動作,KIND 蠻好心的~簡簡單單的把 K8s 關在容器裡面~!

這樣一來~測試環境空間省很多,資源也比較省~更比之前辛苦的用 LXD 關住 Minikube 容易多了~

2021年8月12日 星期四

在 PGSQL 把 EAV 表格轉成 JSON 欄位與進一步攤平

Entity-Attribute-Value 型態(縮寫 EAV)的資料蠻常出現在實際應用上,最典型的就是資料分析時很多屬性標籤。

但是。。。PGSQL 其實不擅長對付這種屬性的資料。。。第二個無腦建議總是說:想辦法轉成關聯式結構的表格(第一個建議呢~就是建 GIN Index 之類的ㄅ~)

不過,這種屬性的資料正好可以用另一種主流資料儲存型態代換—JSON 型態。正好現在的 Postgres 也很擅長處理 JSON 資料。

另外值得提到的是,PGSQL 並不像 Cassandra 這種 Wide-Column Store 一樣可以開「很多」欄位,因此若 Attribute 標籤種類繁雜,就不是很適合在 PGSQL 開超多欄位的表格來存放。

因此這篇筆記嘗試把 EAV 轉換成 JSON 儲存的方式(測試版本:EDB PGSQL13,不過用到的功能基本上 PGSQL 9.5 以上都可以)。

另外,當標籤的類型很少,可以轉換成一般欄位的話(也就是關聯式表格),這篇筆記也嘗試演練一下~

如果看到這邊~還是不知道窩在講蝦米~請上網查一下 EAV pattern 與 Relational Model~