File System v.s. Database
常常對 文件系統 File System 和 數據庫 Database 的概念有所混淆,在存儲系統愈發複雜的今天,常常有對這兩者的混淆和混用,在這裏基於看過的文獻和 industry 用語,記錄下自己理解的含義:
- 文件系統 File System:本地文件系統;高層並行/分佈式文件系統
- 數據庫 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 存儲 + 對上適配一致性要求沒有這麼嚴格的(允許一定的生效延遲的)互聯網應用場景