天天看點

有關 File System 和 Database 的一些随筆

文章目錄

    • File System v.s. Database
    • 關系型 v.s NoSQL 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-like,Relational):傳統意義上的“資料庫”,表式存儲,提供豐富語義(如

    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 ↩︎