本章開始介紹了關係型資料庫,非關係型資料庫,圖模型資料。
首先解釋了關係模型和文件模型是什麼,然後指出了從資料庫模型到應用程式物件模型之間的不匹配(稱為物件關係不匹配)我們通常使用 orm 框架來解決從資料庫模型到程式物件的轉換。
接著引出了一對多、多對
一、多對多關係以及查詢的區域性性。和 json 這種資料格式
使用了 linked 上的簡歷來說明這幾種關係,乙個人有多份工作經歷;多個人在同乙個地區工作;乙個使用者為另乙個使用者的推薦;以及使用者兩種模型進行儲存的做了比較
最後討論了圖資料模型,圖的表示,使用關係模型來表示屬性圖;介紹了一種屬性圖的查詢語言(cypher查詢語言),並用其構建乙個查詢語句和 sql 的等價查詢語句進行了比較;最後還介紹了三元組儲存和sparql,datalog。圖相關的東西了解的不多,有時間還需要多看看
每種資料模型都有自己的適用場景和特點,這章並沒有足夠的細節,下章見
一對多關係 和 連線查詢
連線查詢通常使用 id 來進行連線,id 可以一直不變,而其對人有意義的值卻時常會變;
規範化通過將相同的資料儲存在一處,那麼這些資料在變化時,就不需要複製給其他副本,減少了不一致性;同時規範化還有許多其他好處。
多對多關係、多對一關係
一對多關係中:
文件型模型:通過在父記錄中巢狀記錄,而不是儲存在單獨的表 多對
一、多對多關係:都是通過識別符號來引用(稱為外來鍵或者文件引用)
容錯屬性
第五章處理併發性
第七章文件模式的便利性
通常文件表示為 json 資料格式,而這種格式的資料通常可以任意的新增鍵值對,那麼讀取時客戶端無法保證文件可能包含的字段。但是應用程式通常假定資料是具有某種格式的,但是不強制執行,這被稱為寫時模式和讀時模式
寫時模式,在寫入時具有的資料模型,資料庫保證其所有資料都符合這種格式
讀時模式,在讀取時指定乙個資料模型版本,如果欄位不存在通常會填充預設值
這種方式就像我們打的 jar 包,新版本通常都會對舊版本進行相容。查詢的客戶端都有指定的資料版本;而寫入通常是最新的版本;但是新版本如果刪除了某個字段,那麼讀時模式就不太好處理了
查詢的區域性性
通常乙個文件需要一次性載入至頁面,使用文件資料庫儲存則只需要一次查詢,如果關係型資料庫將資料存放在不同的表中,則需要多次連線,不管是在 sql 層面還是在應用**層面,這會花費更多的時間。
這需要大多數查詢都滿足區域性性的情況下才有效,如果只需要訪問文件的一部分內容則會很浪費,因為文件是一次性全部載入至記憶體的。
現在的關係型資料庫大多都已經支援 json 格式和 xml 格式,關係模型和文件模型的界限正在漸漸模糊
宣告式查詢
只定義了查詢的模式,而不是指定具體的執行流程,為查詢優化提供了優化的空間,例如並行查詢,使用何種索引
命令式查詢
類似於**,告訴計算機以某種特定的順序執行某些操作。
mapreduce 查詢
既不是宣告式也不是命令式,而是介於兩者之間,查詢的邏輯要用**片段來表示,**被框架反覆執行。很容易在集群上分布式執行。
mapreduce 即是一種程式設計模型也是一種計算框架。大資料處理的內容很多可以看看這個專欄
圖在現實生活中很多,社交網路,公里網路,網路圖譜等等
圖由邊和頂點組成
頂點:有唯一識別符號,一組出邊,一組入邊;一組屬性
邊:有唯一識別符號,邊的起點,邊的終點,描述兩個頂點之間的關係,一組屬性
三元組儲存
三元組:形如(主語,謂語,賓語)這三部分來表示儲存,例如 三元組(狗蛋,喜歡,翠花);主語是頂點,而賓語是另乙個頂點(此時謂語就是邊)或者主語頂點下的屬性的鍵或值
第二章 聚合資料模型
nosql技術與傳統的關聯式資料庫相比,最明顯的轉變是拋棄了關係模型。nosql主要有四種模型 前三種都是面向聚合的 2.1 聚合 關係模型 元組 行 是受限的結構 只能包含一系列的值,不能巢狀另外的元組和列表。所有操作都以元組為目標,而且其返回值必須是元組。面向聚合 是nosql運算元據時所用的單...
第二章 建立資料模型 ER模型 完整性約束
在進行資料庫建立之前,我們需要對實際問題進行模型的建立,我們需要將現實世界中事物和事物的性質以及事物之間的聯絡抽象出來,而這一過程最常用的手段就是e r模型設計 本章內容最重要的兩件事就是掌握 er模型的設計和er模型向關係模型的轉化 幕布鏈結 稍微區分下概念模型和資料模型,兩者本質上都是對現實世界...
第二章 過程模型
基於構件的開發,併發模型,演化過程模型,形式化過程模型,通用過程模型,增量過程模型,慣用過程模型,過程模式。2.1通用過程模型 在軟體過程中,技術工作的層次包括活動,活動由動作構成,動作由任務組成。過程定義為在工作產品構建過程中,所需完成的工作活動,動作和任務的集合。這些活動,動作,任務中的每乙個都...