數據庫的各種模型簡單學習筆記

數據庫vs文件系統:數據共享性好,冗餘度低,數據獨立性好,彈性大,易擴充。數據庫將對數據的結構化任務從某個應用程序中解耦出來,交由數據庫管理系統操作,減少應用程序的維護和修改,簡化了應用程序的編寫。

數據庫的三級模式:外模式、模式和內模式。模式是數據庫全體數據的邏輯結構和特徵的描述。例如層次模型,網狀模型,關係模型這些在模式這一級定義。內模式是數據物理結構和存儲方式的描述,也被稱爲存儲模式,更爲底層。外模式也稱子模式,是數據庫用戶能看見和使用的局部數據的邏輯結構和特徵的描述,與具體應用有關。三層模式之間的解耦是使用映像實現的。

概念模型:實體,屬性,碼,實體型,實體集,聯繫。實體-聯繫方法(E-R模型)

常用數據模型:層次模型,網狀模型,關係模型,面向對象數據模型,對象關係數據模型,半結構化數據模型。

層次模型:基本層次聯繫——兩個記錄以及它們之間的一對多,一對一的聯繫。雙親結點,子女結點。現實中很多實體之間的聯繫很自然地是層次關係。樹狀能夠帶來高查詢效率,但插入和刪除操作的設計就較爲複雜。另外有很多聯繫是非層次型的。一個結點可能有多個雙親結點,此時的層次模型就很笨拙。

網狀模型:當層次聯繫集合中,一個以上的結點無雙親,一個結點可以有多於一個的雙親,這個就是網狀模型。其存取性能較高。缺點是結構複雜,當數據類型越來越多時,數據庫的結構就越來越複雜,不利於用戶最終掌握。記錄之間的聯繫通過存取路徑實現,加重了編寫程序的負擔。

關係模型:從用戶角度看,關係模型由一組關係構成。每個關係的數據結構是一張規範化的二維表。元組——表中的一行。屬性——表中的一列。碼——某個屬性組可以唯一確定一個元組。域——一組具有相同數據類型的值的集合,可以理解爲某個屬性是一個變量,這個變量的值域。分量——元組中的一個屬性值。關係模式——對關係的描述:關係名(屬性1,屬性2,...,屬性n)。關係模型要求關係是規範化的。表中不能有表。關係模型將存取路徑向用戶隱蔽,用戶只需進行查詢和修改,提高了獨立性。關係模型的操作包括查詢操作和插入、刪除、修改操作兩大部分,查詢操作又分爲選擇,投影,連接,除,並,差,交,笛卡爾積等。關係操作的特點是集合操作,即操作的對象和結果都是集合。早期關係操作能力,分別有關係代數和關係演算。結構化查詢語言SQL介於關係代數與關係演算之間。詳細的關係模型的知識主要涉及各種碼,主碼,完整性,範式,完備性的東西。

NoSQL系統:一種解釋爲非關係數據庫;另一種介紹所Not Only SQL,即數據管理技術不僅僅是SQL。NoSQL系統支持的數據模型通常有4種:Key-value模型、BigTable模型、文檔模型和圖模型。

Key-value模型:記爲KV,類似字典,按照Key值來存儲和提取Value值。Value值是無結構的二進制碼或純字符串,在應用層進行解析。代表系統:Cassandra,Redis。

BigTable模型:支持結構化的數據,包括列、列簇、時間戳以及版本控制等元數據的存儲。代表系統:HBase,Big Table。

文檔模型:它的Value值支持複雜的結構定義,通常是被轉換成JSON或類似於JSON格式的結構化文檔。支持數據庫索引的定義,索引主要按照字段名組織。代表系統:MongoDB。

圖模型:記爲G(V, E),每個結點V具有若干屬性,邊E也有若干屬性。該模型支持圖結構的各種基本算法。

NewSQL系統是融合NoSQL與SQL的新型數據庫系統。SQL擴展性差, 成本高,難以應對海量數據挑戰,而NoSQL靈活性高,擴展性好,但不支持SQL,導致應用程序開發困難,特別不支持事務ACID特性(原子性(Atomicity),一致性(Consistency),隔離性(lsolation),持久性(Durability))。NewSQL則結合了兩者優勢。

MapReduce:MapReduce是一種並行編程模型,2004年Google提出,用於解決大規模並行計算問題。以key/value的分佈式存儲系統爲基礎。計算結點和存儲結點通常是同一個結點,即MapReduce框架和Hadoop分佈式文件系統(HDFS)。將並行數據庫與MapReduce兩者結合起來的數據庫設計有並行數據庫主導型、MapReduce主導型、並行數據庫和MapReduce集成型。

內存數據庫(MMDB):將數據庫的全部或大部分數據放在內存中的數據庫系統。其目的是有效利用內存的優勢來提高數據庫的性能。它具有高吞吐率,低延時訪問,良好並行處理能力等特性。

 

更多文章與筆記請關注:微信公衆號:二進制樹

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