MySQLFS 是一款基於 CORBA 的實驗性 Linux 檔案系統,將 MySQL 資料庫透過檔案系統介面(VFS)呈現,讓使用者能以 ls、cat、cp、vim 等熟悉指令直接操作資料庫內容。專案仍在原型階段,非生產就緒。
mount -t corbafs -o `cat /tmp/mysqlcorbafs.ior` none /mnt/mysql/
ls -la /mnt/mysql/
# -r-xr-xr-x 1 root root 4096 .uptime
# dr-xr-xr-x 1 root root 4096 test
# dr-xr-xr-x 1 root root 4096 mysql
cat /mnt/mysql/.uptime # 1994
cat /mnt/mysql/mysql/user/Host # 列出 user 表 Host 欄位所有值
diff、cvs/git 皆可直接對掛載點操作。include("/mnt/mysql/db/table/field") 即可讀取單值,寫入同理。原型階段速度尚未優化。正式版預期:簡單單鍵讀寫比 SQL 更快(省去解析/網路協定開銷);複雜查詢仍需 SQL。整體開發/訓練成本大幅降低。
MyISAM、BDB、HEAP、ISAM 全支援。
假設表 invoice 主鍵 invoice_id:
/mnt/mysql/mydata/invoice/1/invoice_id
/mnt/mysql/mydata/invoice/1/invoice_no
/mnt/mysql/mydata/invoice/1/payee
/mnt/mysql/mydata/invoice/2/...
/mnt/mysql/mydata/invoice/3/...
.table、.record 提供整表/整行的文字檢視(方便 less/編輯器瀏覽)。/mnt/mysql/mydata/invoice/invoice_id/.max → 指向最大 invoice_id 所在行
/mnt/mysql/mydata/invoice/invoice_id/.min → 最小
/mnt/mysql/mydata/invoice/invoice_id/.sum → 總和
/mnt/mysql/mydata/invoice/invoice_id/.avg → 平均
讀取連結目標即得標量結果,極快且直觀。
/mnt/mysql/mydata/.keys/invoice_id/ # 主鍵索引目錄
/mnt/mysql/mydata/.keys/payee/asc/ # payee 升序索引,readdir() 即得排序主鍵
/mnt/mysql/mydata/.keys/.primary_key/ → 指向主鍵索引目錄
/mnt/mysql/.version
/mnt/mysql/.last_insert_id
/mnt/mysql/.uptime
/mnt/mysql/mydata/.type # ISAM/MyISAM/HEAP/BDB
/mnt/mysql/mydata/.tables
/mnt/mysql/mydata/invoice/.created
/mnt/mysql/mydata/invoice/.count
/mnt/mysql/db/.command/ 目錄下建立以 SQL 為名的子目錄/檔案觸發執行。直接映射 Unix 權限(chmod/chown)至 MySQL 權限體系,符合直覺、無需額外學習。
MySQLFS 展示了「資料庫即檔案系統」的迷人願景:以通用介面統一存取、備份、共享、編輯。雖仍在實驗階段,但為資料庫易用性探索了極具價值的方向。