EDB/PGSQL 預設僅能透過 auto_explain 紀錄執行 SQL 的執行計畫到 DB Log 檔案內。
PGSQL 查看當前/歷史執行計畫的社群擴充外掛,可以直接以表查詢運行 SQL 的執行計畫,有以下兩個(截至 2022 年三月中為止):
由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:
EDB/PGSQL 預設僅能透過 auto_explain 紀錄執行 SQL 的執行計畫到 DB Log 檔案內。
PGSQL 查看當前/歷史執行計畫的社群擴充外掛,可以直接以表查詢運行 SQL 的執行計畫,有以下兩個(截至 2022 年三月中為止):
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~
由於開始接觸 ansible 佈署工具,但有一些麻煩的地方:
沒有連外部網路的環境,是很麻煩的,東西得預先備妥
ansible 對版本對齊這件事還蠻要求的,不同版本的 playbook 或模組會有差異,套錯版本可能會有意料之外的狀況(通常是少一些步驟,變成雪球越滾越大)
對使用的 python 環境,也有不同版本:不過這一點稍微鬆一點,ansible 目前還能向下支援到很古老的 python 版本
如何方便的攜帶相依模組與對應的模組版本,這也是很痛苦的地方:雖然有 pip requirements.txt,但這沒有網路就無用武之地
部份公司的部門可能有設置 ansible tower 管理,這種狀況還有機會偷懶,只放置 ansible galaxy 帶過來的 collection 和預備好的 playbook;但更多時候,是面對接好線,灌好 RHEL/Debian 系列的電腦,直接開始表演。。。
因此要使用 ansible 佈署,最好是了解怎麼攜帶需要的環境。
以下筆記簡單的紀錄一種偷吃步方式:這邊以 CentOS 8 Stream 示範,不過原理上適用市面上熱門的 Linux distribution~