本文內容:
- 什么是數據庫
- 什么是關系數據庫
- 什么是非關系型數據庫
PS:雖然這些東西都是一些比較基礎常識的東西,但為了記錄自己的學習之路,也為了為以后的一些突發奇想留下“坑”,所以寫下了這篇博文。
首發日期:2018-04-07
什么是數據庫?
- 數據庫是數據的倉庫。
- 與普通的“數據倉庫”不同的是,數據庫依據“數據結構”來組織數據,因為“數據結構”,所以我們看到的數據是比較“條理化”的(比如不會跟以前的普通文件存儲式存儲成一個文件那么不條理化,我們的數據庫分成一個個庫,分成一個個表,分成一條條記錄,這些記錄是多么分明)
- 也因為其“數據結構”式,所以有極高的查找速率(比如B-Tree查找法),(由於專精,可以根據自己的結構特性來快速查找,所以對於數據庫的查找會比較快捷;不像普通文件系統的“查找”那么通用)
- 如果與EXCEL來比的話,能明顯的看出數據庫的好處,我們能給一個個“字段”添加“約束”(比如約束一列的值不能為空)
- 數據庫與普通的文件系統的主要區別(起因):數據庫能快速查找對應的數據
- 常說的XX數據庫,其實實質上是XX數據庫管理系統。數據庫管理系統是一個軟件,是數據庫管理的程序實現。
什么是關系型數據庫?
- 關系型數據庫是依據關系模型來創建的數據庫。
- 所謂關系模型就是“一對一、一對多、多對多”等關系模型,關系模型就是指二維表格模型,因而一個關系型數據庫就是由二維表及其之間的聯系組成的一個數據組織。
- 關系型數據可以很好地存儲一些關系模型的數據,比如一個老師對應多個學生的數據(“多對多”),一本書對應多個作者(“一對多”),一本書對應一個出版日期(“一對一”)
- 關系模型是我們生活中能經常遇見的模型,存儲這類數據一般用關系型數據庫
- 關系模型包括數據結構(數據存儲的問題,二維表)、操作指令集合(SQL語句)、完整性約束(表內數據約束、表與表之間的約束)。
數據的存儲形式:
關系的處理形式:
下面是一個E-R圖,是多個模型一起用的情況:
常見的關系型數據庫:
Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL
關系型數據庫的特點:
安全(因為存儲在磁盤中,不會說突然斷電數據就沒有了)、
容易理解(建立在關系模型上)、
但不節省空間(因為建立在關系模型上,就要遵循某些規則,好比數據中某字段值即使為空仍要分配空間)
什么是非關系型數據庫?
- 非關系型數據庫主要是基於“非關系模型”的數據庫(由於關系型太大,所以一般用“非關系型”來表示其他類型的數據庫)
- 非關系型模型比如有:
常見非關系模型數據庫:
- 列模型:Hbase
- 鍵值對模型:redis,MemcacheDB
- 文檔類模型:mongoDB
非關系型數據庫的特點:
效率高(因為存儲在內存中)、
但不安全(斷電丟失數據,但其中redis可以同步數據到磁盤中),現在很多非關系型數據庫都開始支持轉存到磁盤中。