一、為什么要學(xué)習(xí)數(shù)據(jù)庫(kù)
能夠反作用于業(yè)務(wù)和快速分析定位問題
在軟件開發(fā)中會(huì)遇到很多問題,追根究底它就是一個(gè)數(shù)據(jù)庫(kù)里數(shù)據(jù)的問題,就比如說我們要去驗(yàn)證注冊(cè)來源對(duì)不對(duì),如果我們不去查庫(kù)的話,我不知道有這個(gè)字段的存在,雖然它需求里面說了這么一段話,但實(shí)際我從頁面上去做功能測(cè)試的時(shí)候,我并不能看到這個(gè)注冊(cè)來源到底存得對(duì)不對(duì),所以我們要去看數(shù)據(jù)庫(kù)。
二、常見數(shù)據(jù)庫(kù)
1、關(guān)系型數(shù)據(jù)庫(kù)
關(guān)系型數(shù)據(jù)庫(kù):關(guān)系型數(shù)據(jù)庫(kù)的官方解釋比較難理解,其實(shí)簡(jiǎn)單點(diǎn)來講,關(guān)系型數(shù)據(jù)庫(kù)就是以行和列的形式儲(chǔ)存數(shù)據(jù)的組織結(jié)構(gòu),這里體現(xiàn)為二維結(jié)構(gòu)的表,而且多個(gè)表之間可能會(huì)存在一些關(guān)系。
1)Oracle
Oracle是美國(guó)oracle公司(甲骨文)提供的以分布式數(shù)據(jù)庫(kù)為核心的一組軟件產(chǎn)品,oracle數(shù)據(jù)庫(kù)的特點(diǎn)是安全、高速、穩(wěn)定、并發(fā)性好,這些特點(diǎn)都使得很多大企業(yè)都選擇數(shù)據(jù)庫(kù)的時(shí)候毫不猶豫的選擇了oracle。
早些年的時(shí)候,世界500強(qiáng)幾乎100%都是oracle的用戶。但是oracle是收費(fèi)的,而且不便宜,這也使得很多初創(chuàng)公司或者中小型企業(yè)是完全沒有能力去負(fù)擔(dān)這筆開支,而放棄使用oracle,轉(zhuǎn)而選擇簡(jiǎn)便易用,更輕量級(jí)且免費(fèi)開源的MySQL。
2)MySQL
MySQL是一種開發(fā)源代碼的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),并且因?yàn)槠渌俣?,可靠性和適用性備受中小型企業(yè)的青睞。雖然早期版本不支持事物操作、子查詢、外鍵、存儲(chǔ)過程和視圖等功能。
但是從02年發(fā)布的4.0beta版以來,MySQL外使用innoDB作為默認(rèn)引擎,對(duì)事物處理能力及數(shù)據(jù)緩存能力又來極大的提高,05年的5.0版本有添加了存儲(chǔ)過程、服務(wù)端游標(biāo)、觸發(fā)器、查詢優(yōu)化以及分布式事物功能。
3)MariaDB
MariaDB數(shù)據(jù)庫(kù)是MySQL的一個(gè)分支,由開源社區(qū)在維護(hù),開發(fā)MariaDB有一部分原因是因?yàn)閾?dān)心甲骨文收購(gòu)MySQL后,會(huì)有將MySQL閉源的意圖,因此社區(qū)采用分支的方式來避開這個(gè)風(fēng)險(xiǎn)。
MariaDB完全兼容MySQL,包括API和命令行,是MySQL的完美替代品,儲(chǔ)存引擎方面,MariaDB使用的是xtraDB替代了MySQL的InnoDB。
4)Sqlserver
Sqlserver是由Microsoft開發(fā)和推廣的數(shù)據(jù)庫(kù),它最初是由Microsoft、Sybase和Ashton-tate三家公司共同開發(fā)的,并于1988年推出了第一個(gè)OS/2版本。
Ms SQL server主要面向中小型企業(yè)。其最大的優(yōu)勢(shì)是在于集成了Ms公司的各類產(chǎn)品及資源,提供了強(qiáng)大的可視化界面、高度集成的管理開發(fā)工具,在快速構(gòu)建商業(yè)智能(BI)方面頗有的建樹。
2、非關(guān)系型數(shù)據(jù)庫(kù)
非關(guān)系型數(shù)據(jù)庫(kù):非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)跟關(guān)系型的完全不同,它主要是以鍵值對(duì)的形式去存儲(chǔ)數(shù)據(jù)。
1)Memcached
Memcached是以livejournal旗下Danga Interactive 公司的Brad Fitzpatric為首開發(fā)的一款軟件,它的出現(xiàn)很好的解決一系列數(shù)據(jù)庫(kù)瓶頸問題,因?yàn)樵趙eb應(yīng)用中頻繁,集中的訪問數(shù)據(jù)庫(kù),就會(huì)帶來高并發(fā)帶來的一系列問題。
比如導(dǎo)致數(shù)據(jù)庫(kù)負(fù)擔(dān)加重、響應(yīng)惡化、網(wǎng)站顯示延遲等重大影響這些問題,而有了memcached提供的數(shù)據(jù)緩存機(jī)制,這些問題就都不是問題了。
2)Redis
Redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、和hash(哈希類型)等。Redis是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。
Redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value儲(chǔ)存的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。
3)MongoDB
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此課程儲(chǔ)存比較復(fù)雜的數(shù)據(jù)庫(kù)類型。
Mongo最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎都可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)表單查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)庫(kù)建立索引。
三、如何學(xué)習(xí)數(shù)據(jù)庫(kù)
1)創(chuàng)建/刪除庫(kù)、創(chuàng)建/刪除表、查看庫(kù)、查看表
2) 備份、還原數(shù)據(jù)
3)存儲(chǔ)過程 、視圖
4)導(dǎo)入、導(dǎo)出數(shù)據(jù)
5)數(shù)據(jù)庫(kù)基礎(chǔ)配置 :修改密碼、添加用戶等
6)數(shù)據(jù)庫(kù)鏈接工具:如 WorkBench Navicat phpMyAdmin 等
7)基本的增刪改查 語句
8) 稍微復(fù)雜點(diǎn)的SQL :多表查詢、子查詢 等等
9) 至少得知道常見的數(shù)據(jù)庫(kù):Mysql MSSQL Oracle Memcached Redis Mongodb
10) 數(shù)據(jù)庫(kù)的安裝、部署:你至少得會(huì)自己在服務(wù)器或自己電腦上安裝個(gè)數(shù)據(jù)庫(kù)
接口測(cè)試和接口文檔生成工具:apipost

