1. 程式人生 > 其它 >什麼是資料庫?什麼是關係資料庫?什麼是非關係型資料庫?

什麼是資料庫?什麼是關係資料庫?什麼是非關係型資料庫?

參考網址:https://www.cnblogs.com/progor/p/8729798.html

本文內容:

  • 什麼是資料庫
  • 什麼是關係資料庫
  • 什麼是非關係型資料庫

PS:雖然這些東西都是一些比較基礎常識的東西,但為了記錄自己的學習之路,也為了為以後的一些突發奇想留下“坑”,所以寫下了這篇博文。

首發日期:2018-04-07


什麼是資料庫?

  • 資料庫是資料的倉庫。
  • 與普通的“資料倉庫”不同的是,資料庫依據“資料結構”來組織資料,因為“資料結構”,所以我們看到的資料是比較“條理化”的(比如不會跟以前的普通檔案儲存式儲存成一個檔案那麼不條理化,我們的資料庫分成一個個庫,分成一個個表,分成一條條記錄,這些記錄是多麼分明)
  • 也因為其“資料結構”式,所以有極高的查詢速率(比如B-Tree查詢法),(由於專精,可以根據自己的結構特性來快速查詢,所以對於資料庫的查詢會比較快捷;不像普通檔案系統的“查詢”那麼通用)
  • 如果與EXCEL來比的話,能明顯的看出資料庫的好處,我們能給一個個“欄位”新增“約束”(比如約束一列的值不能為空)
  • 資料庫與普通的檔案系統的主要區別(起因):資料庫能快速查詢對應的資料
  • 常說的XX資料庫,其實實質上是XX資料庫管理系統。資料庫管理系統是一個軟體,是資料庫管理的程式實現。

什麼是關係型資料庫?

  • 關係型資料庫是依據關係模型來建立的資料庫。
  • 所謂關係模型就是“一對一、一對多、多對多”等關係模型,關係模型就是指二維表格模型,因而一個關係型資料庫就是由二維表及其之間的聯絡組成的一個數據組織。
  • 關係型資料可以很好地儲存一些關係模型的資料,比如一個老師對應多個學生的資料(“多對多”),一本書對應多個作者(“一對多”),一本書對應一個出版日期(“一對一”)
  • 關係模型是我們生活中能經常遇見的模型,儲存這類資料一般用關係型資料庫
  • 關係模型包括資料結構(資料儲存的問題,二維表)、操作指令集合(SQL語句)、完整性約束(表內資料約束、表與表之間的約束)。

資料的儲存形式:

關係的處理形式:

下面是一個E-R圖,是多個模型一起用的情況:

常見的關係型資料庫:

Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL

關係型資料庫的特點:

安全(因為儲存在磁碟中,不會說突然斷電資料就沒有了)、

容易理解(建立在關係模型上)、

但不節省空間(因為建立在關係模型上,就要遵循某些規則,好比資料中某欄位值即使為空仍要分配空間)


什麼是非關係型資料庫?

  • 非關係型資料庫主要是基於“非關係模型”的資料庫(由於關係型太大,所以一般用“非關係型”來表示其他型別的資料庫)
  • 非關係型模型比如有:
    • 列模型:儲存的資料是一列列的。關係型資料庫以一行作為一個記錄,列模型資料庫以一列為一個記錄。(這種模型,資料即索引,IO很快,主要是一些分散式資料庫)
    • 鍵值對模型:儲存的資料是一個個“鍵值對”,比如name:liming,那麼name這個鍵裡面存的值就是liming
    • 文件類模型:以一個個文件來儲存資料,有點類似“鍵值對”。

常見非關係模型資料庫:

  • 列模型:Hbase
  • 鍵值對模型:redis,MemcacheDB
  • 文件類模型:mongoDB

非關係型資料庫的特點:

效率高(因為儲存在記憶體中)、

但不安全(斷電丟失資料,但其中redis可以同步資料到磁碟中),現在很多非關係型資料庫都開始支援轉存到磁碟中。