資料庫按型別可分為關係型,鍵-值型,多列型,面向文件型和圖型。
關聯式資料庫管理系統(rdbms)是以集合理論為基礎的系統,實現為具和列的二維表。與它打交道使用結構化查詢語言(sql)。資料值具有型別,可以是數字、字串、日期、未解釋的二進位製大物件,或其它型別。這種表結構可以聯接並轉化為新的、更複雜的表,因為它們的數學基礎士關係(集合)理論。常用的開源資料庫有mysql,postgresql,h2,hsqldb,sqlite等。
鍵-值(key-value,kv)資料庫是最簡單的模型。kv資料庫將鍵與值配對,類似於程式語言裡的對映(或雜湊表)。某些kv實現允許複雜的值型別,如雜湊或者列表。。一些 kv 實現提供了一種迭代遍歷鍵的方式,但這也是額外的好處。如果你將檔案的路徑視為鍵而將檔案內容作為值,檔案系統也可以看成是鍵-值儲存庫。kv儲存庫對資源的要求就非常少,有時候有極高的效能,但是當涉及到複雜的查詢和聚合需求時,一般不會有幫助。常用的資料庫有memcached(及相關的memcachedb和membase),voldemort,redis和riak。
列型(面向列的)資料庫的命名源自於其設計的乙個重要方面,即來自乙個給定的(在二維表的意義上)的資料存放在一起。在面向列的資料庫中,新增列是相當簡易的,而且是逐行完成的。每一行可以有一組不同的列,或完全沒有,允許表保持稀疏(sparse),而不會產生空值的儲存成本。在結構方面,列型資料庫大約介於關聯式資料庫和鍵-值儲存庫之間。在列型資料庫市場中,競爭相比關聯式資料庫或鍵-值儲存較少。三種最流行的產品是hbase,cassandra和hypertable。
面向文件的資料庫儲存的就是文件。簡而言之,文件就像是雜湊,具有乙個獨一無二的標示符(id)欄位和值,值可能是任何型別,包括更多的雜湊。文件可以包含巢狀的結構,因此,它們表現出了高度的靈活性,允許有可變域。該系統對輸入的資料很少有限制,只要它滿足基本要求,可以表示為乙個文件。在建索引、自由定義的查詢,複製、一致性及其他設計決策等方面,不同的文件資料庫採取了不同的方法。需要了解這些差異,及其對特定使用場景的影響,才能在它們之間做出明智地選擇。文件資料庫市場中的兩大開源產品是mongodb和couchdb。
圖資料庫是一種不太常用的資料庫型別,圖資料庫善於處理高度互聯的資料。圖資料庫包含節點及節點之間的關係。節點和關係可以有一些屬性(一些鍵-值對),用來儲存資料。圖資料庫的真正實力是按照關係遍歷節點。現在最流行的圖資料庫neo4j。
第七周讀書筆記
pb16060002 余子昊 我是乙隻it小小鳥 讀書筆記 part2 這週有考試,讀的書不是特別多,繼續讀了一點這本書。發現每次讀這本書都有新的感悟。本週讀的這些主人公有各種各樣的人生經歷,有從小就開始接觸程式設計,但卻忽視高考沒有考上理想大學的 有高考前只知道學習,上了大學對未來很迷茫的 是我本...
《資料庫索引設計優化》讀書筆記(七)
第13章 資料庫索引選項 練習 13.1 調查你當前使用的dbms版本關於索引的限制和高階選項。索引行壓縮與異常情況 mysql支援 oracle支援 mysql使用null值實現索引行壓縮。但不推薦在實際中使用null來代替乙個特定的值,因為從長遠來看,這可能會導致應用系統錯誤。表中有三個null...
C Primer讀書筆記(七)
stl 中 string list deque vector set map 容器的區別 在stl中基本容器有 string vector list deque set map set 和map都是無序的儲存元素,只能通過它提供的介面對裡面的元素進行訪問 set 集合,用來判斷某乙個元素是不是在乙個...