從字面意思理解,首先數(shù)據(jù)庫是一個存放東西的庫,里面存的東西是數(shù)據(jù)。以下解釋來自百度百科:
數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的建立在計算機存儲設(shè)備上的倉庫 。
想象一下這個場景:某高中二年級有三個班,期末考試成績下來了,每個班的學(xué)生的成績都打印在了一張A4紙上,而每個班的成績單都放在一個檔案袋里,最后所有的檔案袋都放在李主任那里保管。如下圖所示:
01 成績表類比數(shù)據(jù)庫
每個班的成績表上記錄著該班所有學(xué)生的成績,其內(nèi)容大概是下面這個樣子:
排名 姓名 語文 數(shù)學(xué) 英語 總分 1 李元芳 99 99 99 297 2 后裔 99 98 98 295 3 孫尚香 95 95 95 285 該表中所有成員的數(shù)據(jù)結(jié)構(gòu)都相同,也就是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)。
檔案袋可類比于數(shù)據(jù)庫,成績表可類比于數(shù)據(jù)庫中的表,而李主任則類比于數(shù)據(jù)庫服務(wù)器。開學(xué)來了老師們都要聯(lián)系李主任去拿檔案袋,我們在使用數(shù)據(jù)庫時也要首先連接數(shù)據(jù)庫。
數(shù)據(jù)庫通常分為層次式數(shù)據(jù)庫、網(wǎng)絡(luò)式數(shù)據(jù)庫和關(guān)系式數(shù)據(jù)庫三種。而不同的數(shù)據(jù)庫是按不同的數(shù)據(jù)結(jié)構(gòu)來聯(lián)系和組織的。
在當(dāng)今的互聯(lián)網(wǎng)中,最常見的數(shù)據(jù)庫模型主要是兩種,即關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫<NOSQL>。
2.1 關(guān)系型數(shù)據(jù)庫
關(guān)系模型就是指二維表格模型,因而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系組成的一個數(shù)據(jù)組織。當(dāng)前主流的關(guān)系型數(shù)據(jù)庫有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB等。
2.2 非關(guān)系型數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫,又被稱為NoSQL(Not Only SQL ),意為不僅僅是SQL,對NOSQL 最普遍的定義是“非關(guān)聯(lián)型的”,強調(diào)Key-Value 存儲和文檔數(shù)據(jù)庫的優(yōu)點 。主要代表有MongoDB,Redis、CouchDB等。
數(shù)據(jù)庫是相關(guān)數(shù)據(jù)的集合,一個數(shù)據(jù)庫通常包含如下組成部分:
作為本系列文章的主角,下面要介紹一下 MySQL。
MySQL 是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
隨著 MySQL 被 Oracle 收購,MySQL 的用戶和開發(fā)者開始質(zhì)疑開源數(shù)據(jù)庫的命運,有一部分人開始尋找 MySQL 的替代品,其中比較主流的有: Percona Server 、MariaDB、 Drizzle。值得一提的是 MariaDB 的創(chuàng)始人正是 MySQL 的創(chuàng)始人。