資料庫v層
Ⅰ 資料庫關系模式中v和v的區別
K-V存儲系統是最簡單的資料庫類型之一。幾乎所有的編程語言都帶有內置的K-V存儲功能。比如C++中STL的map,Java的HashMap,Python的dictionary。K-V資料庫通常包含下列介面:
Get(key): 獲取之前以"key"作為標識存儲的數據,若"key"不存在則獲取失敗。
Set(key,value): 將"value"存儲內存中,其標識符為"key",以便我們之後可以用"key"來獲取數據。如果在"key"下已經有數據了,那麼原數據將被替換。
Delete(key): 刪除"key"標識下的數據。
大多數底層的實現都使用了hash table或者是自平衡的樹結構(比如B-Tree和紅黑樹)。有時候數據太大了無法放在內存中,或者為了防止宕機必須把數據持久化,這種情況下,就必須使用文件系統來存儲。
K-V資料庫是NoSQL運動的一部分,它重組了沒有完全使用關系資料庫中概念的眾多資料庫,Wikipedia articles on NoSQL 總結了這些資料庫的主要特點:
不使用SQL查詢語言
可能不對ACID規范提供完全支持
可能提供分布式,可容錯的架構
2.K-V資料庫和關系型資料庫
不同於關系型資料庫,K-V資料庫並不清楚存儲數據的值,而且也沒有像MySQL和PostgreSQL中schema的概念。這也就意味著它不能像關系型資料庫一樣通過
使用帶where的SQL語句來過濾並查詢所存數據的部分內容。如果你不知道該從哪查詢,你需要遍歷所有的key值,找到對應的value,對其進行過濾,最終只保留你
想要的那部分數據。這樣以來計算量會非常大,同時也意味著只有在key已知的情況下,K-V資料庫才能保證高性能,否則其性能明顯不足。(註:有一些K-V資料庫
支持結構化存儲,而且有域索引)因此,雖然在絕對訪問速度方面K-V資料庫優於關系型資料庫,但需要已知key值的要求限制了其應用場景。
Ⅱ 傳統資料庫系統的幾個層次
傳統的資料庫系統分為3個層次,按ANSI的定義分別為物理模式、概念模式和外部模式。傳統的資料庫採用這種層次結構是因它所管理的數據而決定的。在這種資料庫中,數據主要是抽象化的字元和數值,管理和操縱的技術也是簡單的比較、排序、查找和增刪改等操作,處理起來容易,也比較好管理。
最低層也就是第一層,稱為媒體支持層,第二層稱為存取與存儲數據模型進行描述。第三層稱為概念數據模型層,是對現實世界用多媒體數據信息進行的描述,也是多媒體資料庫中在全局概念下的一個整體視圖。第四層稱為多媒體用戶介面層,完成用戶對多媒體信息的查詢描述和得到多媒體信息的查詢結果。