軟體技術閒聊日記:技術廣度與深度
本篇記下與公司同事的技術閒聊話題。
今日與我們公司很厲害的工程師,因為 Btrfs
踩雷而發起了討論話題,我也順勢加入了討論。
從 Btrfs
討論到 ZFS
,聊到 ZFS
相對 Btrfs
更為成熟,但為何很多廠商方案仍選 Btrfs
的原因。
從 Btrfs
/ ZFS
討論到 Ext4
/ XFS
兩類的不同,聊到 Snapshot 的應用優勢及缺點,從底層 Data structures 到探討為何一些企業方案更偏好 Btrfs
/ ZFS
。
再討論 Ext4
與 XFS
的差異,從 per-inode mutex lock 聊到 parallel I/O,從 punch hole 聊到 DirectIO。
接著帶到 Database 領域,涉及 PostgreSQL
與 Oracle
/ 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
/ Ubuntu
到 FreeBSD
,更從 HDD 談到 SSD 原理。
知道這些在「雲端時代」有什麼用呢?畢竟都用租的,如 RDS,廠商不都幫忙配置好了嗎?這就可以帶出 AWS
RDS / Aurora
沒為我們做到什麼的議題了。
但其實也不用知道這麼多,因為知道了也只是成為多數人心中所謂很難懂很難聊的「技術宅」。
而瞭解我的人會知道,以上談的不純粹是技術,還包括了商業模式及法規的理解。