什麼是數據庫?redis
- 數據庫是數據的倉庫。
- 與普通的「數據倉庫」不一樣的是,數據庫依據「數據結構」來組織數據,由於「數據結構」,因此咱們看到的數據是比較「條理化」的(好比不會跟之前的普通文件存儲式存儲成一個文件那麼不條理化,咱們的數據庫分紅一個個庫,分紅一個個表,分紅一條條記錄,這些記錄是多麼分明)
- 也由於其「數據結構」式,因此有極高的查找速率(好比B-Tree查找法),(因爲專精,能夠根據本身的結構特性來快速查找,因此對於數據庫的查找會比較快捷;不像普通文件系統的「查找」那麼通用)
- 若是與EXCEL來比的話,能明顯的看出數據庫的好處,咱們能給一個個「字段」添加「約束」(好比約束一列的值不能爲空)
- 數據庫與普通的文件系統的主要區別(原由):數據庫能快速查找對應的數據
- 常說的XX數據庫,其實實質上是XX數據庫管理系統。數據庫管理系統是一個軟件,是數據庫管理的程序實現。
什麼是關係型數據庫?數據庫
- 關係型數據庫是依據關係模型來建立的數據庫。
- 所謂關係模型就是「一對1、一對多、多對多」等關係模型,關係模型就是指二維表格模型,於是一個關係型數據庫就是由二維表及其之間的聯繫組成的一個數據組織。
- 關係型數據能夠很好地存儲一些關係模型的數據,好比一個老師對應多個學生的數據(「多對多」),一本書對應多個做者(「一對多」),一本書對應一個出版日期(「一對一」)
- 關係模型是咱們生活中能常常碰見的模型,存儲這類數據通常用關係型數據庫
- 關係模型包括數據結構(數據存儲的問題,二維表)、操做指令集合(SQL語句)、完整性約束(表內數據約束、表與表之間的約束)。
數據的存儲形式:安全
關係的處理形式:數據結構
下面是一個E-R圖,是多個模型一塊兒用的狀況:分佈式
常見的關係型數據庫:spa
Oracle、DB二、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQLblog
關係型數據庫的特色:索引
安全(由於存儲在磁盤中,不會說忽然斷電數據就沒有了)、內存
容易理解(創建在關係模型上)、文檔
但不節省空間(由於創建在關係模型上,就要遵循某些規則,比如數據中某字段值即便爲空仍要分配空間)
什麼是非關係型數據庫?
- 非關係型數據庫主要是基於「非關係模型」的數據庫(因爲關係型太大,因此通常用「非關係型」來表示其餘類型的數據庫)
- 非關係型模型好比有:
- 列模型:存儲的數據是一列列的。關係型數據庫以一行做爲一個記錄,列模型數據庫以一列爲一個記錄。(這種模型,數據即索引,IO很快,主要是一些分佈式數據庫)
- 鍵值對模型:存儲的數據是一個個「鍵值對」,好比name:liming,那麼name這個鍵裏面存的值就是liming
- 文檔類模型:以一個個文檔來存儲數據,有點相似「鍵值對」。
常見非關係模型數據庫:
列模型:Hbase
鍵值對模型:redis,MemcacheDB
文檔類模型:mongoDB
非關係型數據庫的特色:
效率高(由於存儲在內存中)、
但不安全(斷電丟失數據,但其中redis能夠同步數據到磁盤中),如今不少非關係型數據庫都開始支持轉存到磁盤中。