MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

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

2017年12月6日 星期三

Slackware 14.2 (Current) 上面安裝 Docker(2017 年10月)

要以 Slackware 作為 Docker 的 Host OS,需要從原始碼編譯成安裝套件,而編譯的 Script 位在 Slackbuilds.org 裡面維護。Docker 本身又是一個版本週期快速的程式(目前是每月一版,每季一個穩定版,社群版支援週期也不長)
安裝的話,可以使用 sbopkg 工具,就可以直接從 Slackbuilds.org 抓編譯 Docker Community Edition 的 Script 處理,是 Slackware 上面常見的安裝套件方式。

2017年12月4日 星期一

PostGIS 入門簡介

PostGIS 是一個資料庫的地理圖資模組。這個模組能讓 PostgreSQL 搖身一遍,成為一個地理圖資資料庫(Spatial Database)。裡面提供豐富的地理資料操作功能,可以說是目前市面上數一數二的地理圖資資料庫。而許多人會使用 PostgreSQL 的理由,便是因為 PostGIS 這個工具的關係。
這裡整理一點有關的筆記,希望能對你有幫助~
(本篇落落長,慎入!)

2017年11月20日 星期一

Oracle MERGE INTO 語法在 Postgres 的改寫方式

在 SQL 語言裡面,資料的輸入(INSERT)和更新(UPDATE)是不一樣的作業,要是對非重複欄位再輸入會發生失敗,整個交易作業都會取消。

所謂的 Upsert 功能用來進行資料衝突判斷,決定資料要新增還是更新,簡單的避開上述困擾。在 Postgres 9.5 之後,引入了 Upsert 功能,INSERT . . . ON CONFLICT DO . . .,可以達成上述功能。PGSQL 的 Upsert 把資料先嘗試以 INSERT 塞入表格,發生衝突時才進行更新或略過資料。

而在 Oracle 資料庫的 Merge 功能,與 Upsert 有一點點小差別:MERGE INTO 是一次以多筆資料塞入表格。資料併入表格的方法以輸入或更新二選一的方式,而非先進行輸入失敗才更新

這裡紀錄 Oracle MERGE INTO 轉換成 PGSQL INSERT ON CONFLICT 的筆記。

2017年11月17日 星期五

PostgreSQL 裡面的時區設定使用筆記

PostgreSQL 的時區,內建預設是 GMT。不過時區會在 initdb 時,根據作業系統設定值決定,然後設定在 $PGDATA/postgesql.conf 裡面的 GUC 參數 timezone 上。而可以設置的時區資訊則紀錄在 pg_timezone_names 這個系統表裡面。

下面在 CentOS 底下,在 OS 和 DB 中,列舉這些資訊出來作比較

2017年11月13日 星期一

LinuX Container on Slackware 14.2 練習筆記 - 建立 Container

這一陣子,Docker Container 很紅,好像是因為比起跑 Virtual Machine 吃的資源更少一些。又聽說 Docker 原先是 Linux Container 衍生的。再聽說後來 Docker 不只支援 Liunx Container(看到好像主要有 libcontainer, LXC, OpenVZ, systemd-nspawn, libvirt-lxc, libvirt-sandbox, qemu/kvm, BSD Jails, Solaris Zones, chroot 這一堆詞)。所以跟跟風,也來看看怎麼用 Container~
Container 功能,我最先知道的就是 Linux Container(LXC)。目前對 LXC的認識不多,我目前假裝理解成是 chroot 的衍生物,Docker 前驅物。
以前曾經用過 chroot 把 MBR 被蓋掉的 Slackware Linux 給弄回來,大概知道 chroot 的用途。
現在練習一下 Linux Container,操作後的感想:有一點把 Linux Container 當成是 chroot 來看待。

2017年10月23日 星期一

在 PostgreSQL 9.6 裡面實作 Autonomous Transaction

所謂 Autonomous Transaction,指的是在一個資料庫的交易(Transaction)中,能夠再「分支」出另外一個獨立的交易。

這和子交易(Sub-Transaction)是不同的概念:子交易和上層的交易是巢狀的概念,仍然是單一個工作程序,在子交易中發生 Rollback,就對整個交易都會 Rollback;而 Autonomous Transaction 則是在呼叫之時,額外分支出另外一個交易執行,分之出去的交易活動成敗(Commit/Rollback)不會再影響目前的交易,兩者獨立開來。

在 Oracle 的 Stored Procedure 中,有一個 PRAGMA AUTONOMOUS_TRANSACTION 的修飾字,讓一個函數的運行,額外分支出一個交易。

不過到 Postgres 9.6 為止,都沒有「直接」支援這樣的功能,那在 Postgres 9.6 要如何做到呢?

2017年10月6日 星期五

找出 PGSQL 資料庫裡面,隱含被移除欄位的表格

在 Postgres 資料庫裡面,表格欄位沒有被其他表格或是 View 參照(相依)的話,可以直接用 ALTER TABLE 作欄位的異動。(有被參照的話,需要先解除這些 Regerence 才能動作)
有時候,可能有移除欄位的需要。但是移除欄位時,明明有這多的資料,移除欄位怎麼快速會完成?