網站資料庫的小夥伴們 — Adminer、Idiorm & Paris、Phinx

因為 Forgez 專案,今天 fork 了 Phinx 回來改(主要是幫 migration log table 增加一個 identity 欄位去區分 migration 的標的物),想想好像可以來寫一篇小聊目前慣用的資料庫工具和套件。

這幾年來寫程式越來越偏好小型、抽象層相對少的框架或函式庫,最好是只憑少少幾個檔案就能簡化完所有功能,精巧又不失周全。這次介紹的大多都屬此類。

Management — Adminer

相較於多數人常用的 phpMyAdminAdminer 只需要下載一個檔案就可以立即使用;支援多國語言(包含繁中),幾乎不需任何設定,唯一門檻就是個人的使用習慣問題。

雖然 Adminer 效能好又清爽,很多人卻不能適應這樣的介面,只用了一下就又立即逃回 phpMyAdmin 的懷抱。其實如果能多花個幾分鐘習慣 Adminer 的介面,你一定會有 回不去了 的感覺。

官網也很貼心的列出了 Adminer 和 phpMyAdmin 的項目評比

ORM / AR — Idiorm & Paris

有別於目前常見的大型 ORM 套件如 PropelDoctrine 等,Idiorm & Paris 小巧的令人讚嘆,各自都只有一個檔案卻能涵蓋大部分的常用功能,其中 Idiorm 以 ORM(Object-relation mapper)的概念實做,Paris 則是走 AR(Active Record)的路線。就我這幾年使用下來的經驗,IdiormParis 要應付一般的專案是絕對足夠的。

Migration — Phinx

相信多數人在網站開發的歷程中,每當遇到資料庫欄位或結構需要異動時,都習慣透過管理工具直接操作資料庫,長久以來我也是這樣,直到前陣子為了寫 Intersection 專案,才開始試著導入 Migration 工具 — Phinx

使用 Database Migration Tool 的好處是,你可以有效管理資料庫的版本歷程,當有異動需求發生時,只要在本地端寫完並完成測試就可以送上主機進行 migration,不必 在正式環境直接操作資料庫,畢竟哪天說不定手滑一下就不小心把資料給全刪了。

如果正式環境跑起來有問題,也可以即時下 rollback 來還原,甚至是做 升級備份 / 降級恢復 這樣的搭配措施,比起每次出包後在那邊手抖操作 phpMyAdmin 深怕弄壞東西要好太多了。

Database Version Control — dbv

對於資料庫做版本控管的考量,可以參考 2008 年的這篇文章 Get Your Database Under Version Control,Database Version Control 就像是 Migration Tool 的另一種表現方式再加上 branching、merging 和 collaboration 等特性,對於大型多人專案而言應該是個適合導入的工具。

dbv 我自己沒用過,從文件上看應該不具有 branching / merging 的能力,不過還是有個好處-可以把所有資料庫(包括遠端 / 正式環境等等)一起拉進來放在同個介面上做管理。只是我不喜歡開放正式環境資料庫的遠端連線,遲遲沒有試用的動力。總之有興趣的人可以自己玩看看。

除了 dbv 外還有一套在開發中的 Klonio (非 Open source),從說明看來應該是立志要做 Database 界的 Github 啊。

Show your support

Clapping shows how much you appreciated Wake Liu’s story.