1 數據庫介紹
1.1 什麼是數據庫
簡單的說,數據庫(database)就是存放數據的倉庫,這個倉庫是按照一定的數據結構(數據結構是指數據的組織形式或數據之間的聯繫)來組織、存儲的,我們可以通過數據庫提供的多種方法來管理數據庫
1.2 數據庫的種類
1.2.1 關係型數據
關係型數據庫模型就是把複雜的數據結構歸結爲簡單的二元關係(即二維表格形式);典型的數據庫:MySQL和Oracle
1.2.2 非關係型數據庫(NOSQL)
誕生在web2.0(以用戶爲主體,上傳下載)時代,動態應用比較多;傳統的關係型數據庫爲應對web2.0高併發、高吞吐的需求時,比較困難;非關係型數據庫也被稱爲NOSQL數據庫,是關係型數據庫的補充
1.2.3 非關係型數據庫的種類
1.2.3.1 鍵值(Key-Value)存儲數據庫
a. 鍵值數據庫就類似傳統語言中使用的哈希表。可以通過key來添加、查詢或刪除數據,因爲使用key主鍵訪問,所以會獲得很高的性能及擴展性。優勢:簡單、易部署、高併發
b. 典型產品:Memcached、Redis、MemcacheDB、BerkeleyDB
1.2.3.2 列存儲(Column-oriented)數據庫
a. 列存儲數據庫將數據存在列族(column family)中,一個列族存儲經常被一起查詢的相關數據。這部分數據通常是用來應對分佈式存儲的海量數據。鍵仍然存在,但是他們的特點是指向了多個列。這些列是由列家族來安排的
b. 典型產品:Cassandra、Hbase
1.2.3.3 面向文檔(Document-Oriented)數據庫
a. 面向文檔數據庫會將數據以文檔的形式儲存,每個文檔都是自包含數據單元,是一系列數據項的集合。同一個表中存儲的文檔屬性可以是不同的,數據可以使用XML、JSON或JSONB等多種形式存儲
b. 典型產品:MongoDB、CouchDB
1.2.3.4 圖形(Graph)數據庫
a. 圖形數據庫允許我們將數據意圖的方式存儲。實體會被作爲頂點,而實體之間的關係則會被作爲邊
b. 典型產品:Neo4J、InfoGrid
1.3 常用的關係型數據庫產品介紹
1.3.1 Oracle數據庫
主要應用範圍:傳統大企業,大公司,政府,金融,證券等等
1.3.2 MySQL數據庫
a. 特點:體積小、速度快、擁有成本低、開放源代碼
b. 主要應用範圍:互聯網領域、大中小型網站,遊戲公司,電商平臺等等
1.3.3 MariaDB數據庫
MariaDB數據庫是MySQL數據庫的分支,甲骨文公司收購了MySQL後,有將MySQL關閉的風險,因此MySQL開源社區採用分支的方式來避開這個風險
1.3.4 SQL Server數據庫
a. 微軟公司開發的大型關係型數據庫系統
b. 主要應用範圍:部分企業電商(央視購物),使用Windows服務器平臺的企業
1.3.5 Access數據庫
美國Microsoft公司於1994年推出的微機數據庫管理系統。它具有界面友好、易學易用、開發簡單、接口靈活等特點,是典型的新一代桌面關係型數據庫管理系統。性能安全性都很一般,可供個人管理或小型網站使用
1.3.6 其它不常用關係型數據庫
DB2、PostgreSQL、Informix、Sybase
1.4 常用的非關係型數據庫產品介紹
1.4.1 Memcached(Key-Value)
Memcached是一個開源的、高性能的、具有分佈式內存對象的緩存系統。速度快、重啓數據易丟失
1.4.2 Redis(Key-Value)
a. Redis是高性能的Key-Value型數據庫。Redis的數據都是緩存在內存中。區別是Redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件
b. 特點:
- 支持內存緩存,這個功能相當於memcached
- 支持持久化,這個功能相當於memcachedb、ttserver
- 數據類型更豐富,比其它Key-Value庫功能更強
- 支持集羣,分佈式
- 支持隊列等特殊功能
1.4.3 MongoDB(Document-oriented)
a. MongoDB是介於關係型數據和非關係型數據庫之間的產品。是非關係型數據庫當中功能最豐富,最像關係型數據庫的。它支持的數據結構非常鬆散,類似json的bjson格式,因此可以存儲比較複雜的數據類型
b. 特點:
- 查詢語言非常強大
- 支持數據建立索引
- 面向集合存儲,易存儲對象類型的數據
- 模式自由
- 支持動態查詢
- 支持完全索引,包含內部對象
- 支持查詢
- 支持複製和故障恢復
- 實用高效的二進制數據存儲,包括大型對象(如視頻)
- 自動處理碎片,以支持雲計算層次的擴展性
- 支持RUBY,PYTHON,JAVA,C++,PHP等多種語言
- 文件存儲格式爲BSON(一種JSON的擴展)
- 可通過網絡訪問
1.4.4 Cassandra(Column-oriented)
a. Cassandra主要特點它不是一個數據庫,而是一堆數據庫節點共同構成的一個分佈式網絡服務。由Facebook開發,目前360、Facebook在使用此係統
b. 特性:
- 分佈式
- 基於Column的結構化
- 高伸展性
2 MySQL數據庫的概念
2.1 MySQL數據庫介紹
a. MySQL數據庫是一款深受歡迎的開源領域的重要的關係型數據庫產品
b. MySQL數據庫是一種關係型數據庫管理系統,特點是將數據保存在不同的表中,在將這些表放入不同的數據庫中,而不是將所有數據統一放在一個打倉庫裏,這樣的設計增加了MySQL的讀取速度,靈活可管理性也得到了很大提高
c. 訪問以及管理MySQL數據庫的最常用標準化語言爲SQL結構化查詢語言
2.2 MySQL數據庫優勢,爲什麼選擇MySQL
a. 性能卓越,服務穩定,很少出現異常宕機
b. 開放源代碼且無版權制約,自主性及使用成本低
c. 歷史悠久,社區及用戶非常活躍,遇到問題,可以尋求幫助
d. 軟件體積小,使用簡單,並且易於維護,安裝及維護成本低
e. 品牌口碑效應,使得企業無需考慮就直接用之,LAMP,LNMP流行架構
f. 支持多種操作系統,提供多種API接口,支持多種開發語言,特別對流行的PHP語言有很好的支持
2.3 MySQL數據庫版本分類
a. 採用雙授權政策,分爲商業版(收費版)和社區版
b. Alpha版:只在開發的公司內部運行,不對外公開
c. Beta版:一般是完成功能的開發和所有的測試工作之後的產品,不會存在較大的功能或性能BUG,並邀請或提供給用戶體驗與測試
d. RC版:屬於生產環境發佈之前的一個小版本或候選版,是根據Beta版本測試結果,收集到的BUG或缺陷之處的信息,進行修復和完善之後的一版產品
e. GA版:軟件產品正式發佈的版本,也稱生產版本的產品。一般企業都會選擇GA版本的MySQL軟件,用於真是的生產環境中