关系型和非关系型数据库的区别
?
區(qū)別一:存儲方式
關系型數(shù)據(jù)庫以數(shù)據(jù)庫表形式存儲數(shù)據(jù)? 結構比較規(guī)整固定?
非關系型以JSON文檔、哈希表或者其他方式 結構更加靈活和可擴展?
?
區(qū)別二:表和數(shù)據(jù)的關系
?
關系型數(shù)據(jù)庫中,必須定義好表和字段結構后才能添加數(shù)據(jù),
非關系型數(shù)據(jù)庫中,數(shù)據(jù)可以在任何時候任何地方添加,不需要先定義表,數(shù)據(jù)庫會自動創(chuàng)建相應的集合
?
?
區(qū)別三:數(shù)據(jù)之間的關系
?
關系型數(shù)據(jù)庫中建立實體數(shù)據(jù)之間的聯(lián)系是通過加外鍵
非關系型數(shù)據(jù)庫中除了這種規(guī)范化做法以外,還能用一種非規(guī)范化方式:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??即把外部數(shù)據(jù)直接放到原數(shù)據(jù)集中,以提高查詢效率。缺點就是更新審核人數(shù)據(jù)的時候將會比較麻煩。?
?
區(qū)別四:參照完整性
?
參照完整性:若A關系中的某個或者某些屬性參照B或其他幾個關系中的屬性,那么在關系A中該屬性要么為空,要么必須出現(xiàn)B或者其他的關系的對應屬性中。?
舉個例子:
上表是審核人員表 下表是借閱人員表 用外鍵關聯(lián)
關系型數(shù)據(jù)庫中不允許刪除已經(jīng)被使用的外部數(shù)據(jù),例如審核人表中的"熊三"已經(jīng)被分配給了借閱人表熊大,那么在審核人表中將不允許刪除熊三這條數(shù)據(jù),以保證數(shù)據(jù)完整性。
非關系型數(shù)據(jù)庫中則沒有這種強耦合的概念,可以隨時刪除任何數(shù)據(jù)。?
區(qū)別五:事務
關系型數(shù)據(jù)庫 有事務的概念
非關系型數(shù)據(jù)庫沒對事務的支持較差
區(qū)別六:應用場景
?關系型數(shù)據(jù)庫適合存儲結構化數(shù)據(jù),如用戶的帳號、地址
NoSQL適合存儲非結構化數(shù)據(jù),如文章、評論。
前許多大型互聯(lián)網(wǎng)項目都會選用MySQL(或任何關系型數(shù)據(jù)庫) + NoSQL的組合方案。
?
區(qū)別七:查詢語言
?
關系型數(shù)據(jù)庫通過結構化查詢語言來操作數(shù)據(jù)庫 有統(tǒng)一標準
非關系型數(shù)據(jù)庫使用的是非結構化查詢語言(UnQl),它是沒有標準的。?
區(qū)別八:性能
?
關系型數(shù)據(jù)庫為了維護數(shù)據(jù)的一致性 在面對高并發(fā)讀寫性能非常差,面對海量數(shù)據(jù)的時候讀寫效率非常低。
nosql存儲的格式是key-value類型的,并且存儲在內(nèi)存中,對于數(shù)據(jù)一致性弱要求,無需sql的解析,提高了讀寫性能。?
?
區(qū)別九:授權方式
大多數(shù)的關系型數(shù)據(jù)庫都是付費的并且價格昂貴,成本較大,
非關系型數(shù)據(jù)庫通常都是開源的。
總結
以上是生活随笔為你收集整理的关系型和非关系型数据库的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快乐随心情
- 下一篇: MySQL45讲学习笔记(二)