有關 File System 和 Database 的一些隨筆

File System v.s. Database

常常對 文件系統 File System數據庫 Database 的概念有所混淆,在存儲系統愈發複雜的今天,常常有對這兩者的混淆和混用,在這裏基於看過的文獻和 industry 用語,記錄下自己理解的含義:

  • 文件系統 File System:本地文件系統;高層並行/分佈式文件系統
    • |0| 本地文件系統 是包裝在裸塊設備上(block devide)的,用於對上提供標準POSIX API使應用能夠管理和使用存儲設備
    • |1| 文件系統中間層 是在本地文件系統和應用程序之間插入的中間層,用於爲本機/多節點集羣(並行/分佈式)優化調度 IO issues,提高性能
      • 可以整合入 OS kernel,實現則較爲困難、靈活性低,是最硬核的選擇
      • 可以應用態文件系統方式掛載運行(FUSE1),性能則會收到 FUSE 多層 overhead 的拖累
      • 可以應用動態庫 library 方式實現,此時則 generality 打折扣,需要用戶 application 重新鏈上這個庫重新編譯
  • 數據庫 Database:後端可以建立在本地文件系統上 / 直接於裸設備上;對象存儲 KV Store
    • |1| 立於本地文件系統的數據庫 和文件系統中間層類似,是建立在 POSIX API 之上新加的一層數據管理,用以統一數據格式,規範應用的數據讀寫,提供 In-memory cache policy 提高小範圍數據索引的性能。傳統數據庫一般都以應用程序的形態運行
    • |0| 直接管理裸設備的數據庫 則是在上述數據庫系統性能不佳的情況下,由 Oracle 開始支持的直接操作裸塊設備的數據庫(現在好像涼了?)
    • |0/1| 對象存儲數據庫(Key-Value store,Object storage) 是建立在最新的對象存儲設備上的 / 模擬於 local FS 上的,以 NoSQL 主義2 爲指導的新型數據庫,是現金研究熱點之一(主要得益於 NVM 的火熱)

關係型 v.s NoSQL Database

  • 關係型數據庫(SQL-likeRelational:傳統意義上的“數據庫”,表式存儲,提供豐富語義如 where,transactions 必須滿足 ACID 四原則3;主要問題是高併發時性能低下
  • 非關係型數據庫(NoSQL, Key-Value, Object storage):鍵值對形式的非固定格式存儲,可以放鬆 “C”(Consistency) 要求,不支持如 SQL 這般豐富的語義;優勢是性能高,尤其是 對下適配 NVM 存儲 + 對上適配一致性要求沒有這麼嚴格的(允許一定的生效延遲的)互聯網應用場景

  1. https://en.wikipedia.org/wiki/Filesystem_in_Userspace ↩︎

  2. https://en.wikipedia.org/wiki/NoSQL ↩︎

  3. https://en.wikipedia.org/wiki/ACID ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章