本篇記下與公司同事的技術閒聊話題。

今日與我們公司很厲害的工程師,因為 Btrfs 踩雷而發起了討論話題,我也順勢加入了討論。

Btrfs 討論到 ZFS,聊到 ZFS 相對 Btrfs 更為成熟,但為何很多廠商方案仍選 Btrfs 的原因。

Btrfs / ZFS 討論到 Ext4 / XFS 兩類的不同,聊到 Snapshot 的應用優勢及缺點,從底層 Data structures 到探討為何一些企業方案更偏好 Btrfs / ZFS

再討論 Ext4XFS 的差異,從 per-inode mutex lock 聊到 parallel I/O,從 punch hole 聊到 DirectIO。

接著帶到 Database 領域,涉及 PostgreSQLOracle / SQL Server / MySQL 的比較,從 double buffer 聊到 partial page write,再談到 DirectIO 對 Database 的優與缺。

最後帶出「在什麼應用或場景下,我們應該使用何 Database,搭配何 File system,並開啟 / 關閉 Database 及 File system 的何設定以彼此配合而不是拉扯,以期滿足我們的需求」的問題。

這個思路可以打通 Database 到 File system,並與基礎知識如 Lock, Data structures, I/O 等結合,理解後就容易記得下忘不了。

另外,為了更瞭解 File system,我再把各 File system 的 bugs 列表提供出來,以讓大家從另個角度去思考「穩定性」。

當然,若要再往下探討可以談到 Operation system,繼續從 CentOS / UbuntuFreeBSD,更從 HDD 談到 SSD 原理。

知道這些在「雲端時代」有什麼用呢?畢竟都用租的,如 RDS,廠商不都幫忙配置好了嗎?這就可以帶出 AWS RDS / Aurora 沒為我們做到什麼的議題了。

但其實也不用知道這麼多,因為知道了也只是成為多數人心中所謂很難懂很難聊的「技術宅」。

而瞭解我的人會知道,以上談的不純粹是技術,還包括了商業模式及法規的理解。