面试滑铁卢之:说说关系型数据库的特点
希望能對大家回答面試有幫助~
文章目錄
- 一、數據庫的分類
- 1.關系型數據庫
- 特點:
- 2.非關系型數據庫(NoSQL)
- 特點:
- 二、NoSQL 與關系型數據庫的區別
一、數據庫的分類
數據庫分為關系型數據庫(Mysql,SqlServer等)和非關系型數據庫(MongoDB、Redis等)
1.關系型數據庫
采用了關系模型來組織數據的數據庫,其以行和列的形式存儲數據,以便于用戶理解,關系型數據庫這一系列的行和列被稱為表,一組表組成了數據庫,存儲的格式可以直觀地反映實體間的關系。
特點:
1.存儲方式:
傳統的關系型數據庫采用表格的儲存方式,數據以行和列的方式進行存儲,要讀取和查詢都十分方便。
2.存儲結構:
關系型數據庫按照結構化的方法存儲數據,先定義好表的結構,再根據表的結構存入數據,所以整個數據表的可靠性和穩定性都比較高,但存入數據后,如果需要修改數據表的結構就會十分困難。
3.查詢方式:
關系型數據庫采用結構化查詢語言(即SQL)來對數據庫進行查詢。
4.規范化:
在數據庫的設計開發過程中開發人員通常會面對同時需要對一個或者多個數據實體(包括數組、列表和嵌套數據)進行操作,這樣在關系型數據庫中,一個數據實體一般首先要分割成多個部分,然后再對分割的部分進行規范化,規范化以后再分別存入到多張關系型數據表中。
5.事務性:
關系型數據庫強調ACID規則(原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)),可以滿足對事務性要求較高或者需要進行復雜數據查詢的數據操作,而且可以充分滿足數據庫操作的高性能和操作穩定性的要求。并且關系型數據庫十分強調數據的強一致性,對于事務的操作有很好的支持。關系型數據庫可以控制事務原子性細粒度,并且一旦操作有誤或者有需要,可以馬上回滾事務。
6.讀寫性能:
關系型數據庫十分強調數據的一致性,并為此降低讀寫性能付出了巨大的代價一旦面對海量數據的處理的時候效率就會變得很差,特別是遇到高并發讀寫的時候性能就會下降的非常厲害。
2.非關系型數據庫(NoSQL)
出于簡化數據庫結構、避免冗余、影響性能的表連接、摒棄復雜分布式的目的被設計。指的是分布式的、非關系型的、不保證遵循ACID原則的數據存儲系統。
特點:
1.易擴展:
數據之間無關系,這樣就非常容易擴展。
2.大數據量,高性能:
NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。
3.靈活的數據模型:
NoSQL無須事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式。
二、NoSQL 與關系型數據庫的區別
1.存儲方式不同:
傳統的關系型數據庫采用表格的儲存方式, 數據以行和列的方式進行存儲。而非關系型數據通常以數據集的方式,大量的數據集中存儲在一起,類似于鍵值對、圖結構或者文檔。
2.存儲結構不同:
關系型數據庫按照結構化的方法存儲數據,一旦存入數據后,如果需要修改數據表的結構就會十分困難。而NoSQL數據庫由于面對的是大量非結構化的數據的存儲,它采用的是動態結構,對于數據類型和結構的改變非常的適應,可以根據數據存儲的需要靈活的改變數據庫的結構。
3.存儲規范不同:
關系型數據庫為了避免重復、規范化數據以及充分利用好存儲空間,把數據按照最小關系表的形式進行存儲,這樣數據管理的就可以變得很清晰、一目了然,當然這主要是一張數據表的情況。如果是多張表情況就不一樣了,由于數據涉及到多張數據表,數據表之間存在著復雜的關系,隨著數據表數量的增加,數據管理會越來越復雜。而NoSQL數據庫的數據存儲方式是用平面數據集的方式集中存放,雖然會存在數據被重復存儲,從而造成存儲空間被浪費的問題,但是由于基本上單個數據庫都是采用單獨存放的形式,很少采用分割存放的方式,所以這樣數據往往能存成一個整體,這對于數據的讀寫提供了極大的方便。
4.擴展方式不同:
擴展方式是NoSQL數據庫與關系型數據庫差別最大的地方,由于關系型數據庫將數據存儲在數據表中,數據操作的瓶頸出現在多張數據表的操作中,而且數據表越多這個問題越嚴重,如果要緩解這個問題,只能提高處理能力,也就是選擇速度更快性能更高的計算機,這樣的拓展空間一定有非常有限的。而NoSQL數據庫由于使用的是數據集的存儲方式,它的存儲方式一定是分布式的,它可以添加更多數據庫服務器到資源池,然后由這些增加的服務器來負擔數據量增加的開銷。
5.查詢方式不同:
關系型數據庫采用結構化查詢語言(SQL)來對數據庫進行查詢。NoSQL數據庫使用的是非結構化查詢語言,它以數據集為單位來管理和操作數據,由于它沒有一個統一的標準,所以每個數據庫廠商提供產品標準是不一樣的。
6.事務性不同:
關系型數據庫強調ACID規則(原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)),可以滿足對事務性要求較高或者需要進行復雜數據查詢的數據操作,而且可以充分滿足數據庫操作的高性能和操作穩定性的要求。并且關系型數據庫十分強調數據的強一致性,對于事務的操作有很好的支持。關系型數據庫可以控制事務原子性細粒度,并且一旦操作有誤或者有需要,可以馬上回滾事務。而NoSQL數據庫強調BASE原則(基本可用(Basically Available)、軟狀態(Soft-state)、最終一致性(Eventual Consistency)),它減少了對數據的強一致性支持,從而獲得了基本一致性和柔性可靠性,并且利用以上的特性達到了高可靠性和高性能,最終達到了數據的最終一致性。NoSQL數據庫雖然對于事務操作也可以使用,但由于它是一種基于節點的分布式數據庫,對于事務的操作不能很好的支持,也很難滿足其全部的需求,所以NoSQL數據庫的性能和優點更多的體現在大數據的處理和數據庫的擴展方面。
7.讀寫性能不同:
關系型數據庫十分強調數據的一致性,并為此降低讀寫性能付出了巨大的代價,一旦面對海量數據的處理的時候效率就會變得很差,特別是遇到高并發讀寫的時候性能就會下降的非常厲害。NoSQL數據庫是按key-value類型進行存儲的,以數據集的方式存儲的,因此無論是擴展還是讀寫都非常容易,并且NoSQL數據庫不需要關系型數據庫繁瑣的解析,所以NoSQL數據庫的大數據管理、檢索、讀寫、分析以及可視化方面性能具有關系型數據庫不可比擬的優勢。
總結
以上是生活随笔為你收集整理的面试滑铁卢之:说说关系型数据库的特点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Whale帷幄 - saas营销推广策划
- 下一篇: Deepin安装SSH服务器