1.關係型數據庫通過外鍵關聯來建立表與表之間的關係, 2.非關係型數據庫通常指數據以對象的形式存儲在數據庫中,而對象之間的關係通過每個對象自身的屬性來決定
比如 有一個學生的數據:
姓名:張三,性別:男,學號:12345,班級:二年級一班
還有一個班級的數據:
班級:二年級一班,班主任:李四
關係型數據庫中,我們創建學生表和班級表來存這兩條數據,並且學生表中的班級存儲的是班級表中的主鍵。
非關係型數據庫中,我們創建兩個對象,一個是學生對象,一個是班級對象,用代碼表示如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
通過設置Student類的classid等於Grade類的id來建立這種關係;
非關係型數據庫中,我們查詢一條數據,結果出來一個數組,關係型數據庫中,查詢一條數據結果是一個對象。
數據庫 類型 |
特性 | 優點 | 缺點 |
關係型數據庫 SQLite、Oracle、mysql |
1、關係型數據庫,是指採用了關係模型來組織 數據的數據庫; 2、關係型數據庫的最大特點就是事務的一致性; 3、簡單來說,關係模型指的就是二維表格模型, 而一個關係型數據庫就是由二維表及其之間的聯繫所組成的一個數據組織。 |
1、容易理解:二維表結構是非常貼近邏輯世界一個概念,關係模型相對網狀、層次等其他模型來說更容易理解; 2、使用方便:通用的SQL語言使得操作關係型數據庫非常方便; 3、易於維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數據冗餘和數據不一致的概率; 4、支持SQL,可用於複雜的查詢。 |
1、爲了維護一致性所付出的巨大代價就是其讀寫性能比較差; 2、固定的表結構; 3、高併發讀寫需求; 4、海量數據的高效率讀寫; |
非關係型數據庫 MongoDb、redis、HBase |
1、使用鍵值對存儲數據; 2、分佈式; 3、一般不支持ACID特性; 4、非關係型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合。 |
1、無需經過sql層的解析,讀寫性能很高; 2、基於鍵值對,數據沒有耦合性,容易擴展; 3、存儲數據的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,而關係型數據庫則只支持基礎類型。 |
1、不提供sql支持,學習和使用成本較高; 2、無事務處理,附加功能bi和報表等支持也不好; |
注1:數據庫事務必須具備ACID特性,ACID是Atomic原子性,Consistency一致性,Isolation隔離性,Durability持久性。
注2:數據的持久存儲,尤其是海量數據的持久存儲,還是需要一種關係數據庫。