1.1 數(shù)據(jù)庫(kù)介紹
1.1.1 什么是數(shù)據(jù)庫(kù)?
簡(jiǎn)單的說(shuō),數(shù)據(jù)庫(kù)(因?yàn)镈atabase)就是一個(gè)存放數(shù)據(jù)的倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)是按照一定的數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)的組織形式或數(shù)據(jù)之間的聯(lián)系)來(lái)組織、存儲(chǔ)的,我們可以通過(guò)數(shù)據(jù)庫(kù)提供的多種方式來(lái)管理數(shù)據(jù)庫(kù)里的數(shù)據(jù)。
更簡(jiǎn)單形象的理解,數(shù)據(jù)庫(kù)和我們生活中存放雜物的儲(chǔ)物間倉(cāng)庫(kù)性質(zhì)一樣,區(qū)別只是存放的東西不同,雜物間存放實(shí)體的物件,而數(shù)據(jù)庫(kù)里存放的是數(shù)據(jù)。
數(shù)據(jù)庫(kù)誕生于距距現(xiàn)在大概六十多年前,隨著信息技術(shù)的發(fā)展和人類社會(huì)的不斷進(jìn)步,特別是2000年以后,數(shù)據(jù)庫(kù)不在僅僅是存儲(chǔ)和管理數(shù)據(jù)了,而轉(zhuǎn)變成用戶所需要的各種數(shù)據(jù)管理方式。數(shù)據(jù)庫(kù)有很多種類和功能,從最簡(jiǎn)單的存儲(chǔ)有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲(chǔ)的大型數(shù)據(jù)庫(kù)系統(tǒng)都在各方面得到了廣泛的應(yīng)用。
1.2 數(shù)據(jù)庫(kù)的種類
按照早期的數(shù)據(jù)庫(kù)理論,比較流行的數(shù)據(jù)庫(kù)模型有三種,分別為層次式數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)式數(shù)據(jù)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù)(前兩者已經(jīng)基本消失)。而當(dāng)今的互聯(lián)網(wǎng)中,最常用的數(shù)據(jù)庫(kù)模型主要是兩種,即關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)。
1.2.1 關(guān)系型數(shù)據(jù)庫(kù)介紹
關(guān)系型數(shù)據(jù)庫(kù)的由來(lái)
雖然網(wǎng)狀數(shù)據(jù)庫(kù)和層次數(shù)據(jù)庫(kù)已經(jīng)很好地解決了數(shù)據(jù)的集中和共享問(wèn)題,但是在數(shù)據(jù)獨(dú)立性和抽象級(jí)別上仍有很大欠缺,而關(guān)系型數(shù)據(jù)庫(kù)就可以較好地解決這些問(wèn)題。
q 關(guān)系型數(shù)據(jù)庫(kù)介紹
關(guān)系型數(shù)據(jù)庫(kù)模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡(jiǎn)單的二元關(guān)系(即二維表格形式)。在關(guān)系數(shù)據(jù)庫(kù)中,對(duì)數(shù)據(jù)的操作幾乎全部建立在一個(gè)或多個(gè)關(guān)系表格上,通過(guò)對(duì)這些關(guān)聯(lián)表的表格分類、合并、連接或選取等運(yùn)算來(lái)實(shí)現(xiàn)數(shù)據(jù)的管理。
關(guān)系型數(shù)據(jù)庫(kù)誕生距今已有40多年了,從理論產(chǎn)生發(fā)展到現(xiàn)實(shí)產(chǎn)品,例如:MySQL和Oracle數(shù)據(jù)庫(kù)。Oracle在數(shù)據(jù)庫(kù)領(lǐng)域里上升到了霸主地位,形成每年高達(dá)數(shù)百億美元的龐大產(chǎn)業(yè)市場(chǎng),而MySQL也是不容忽視的數(shù)據(jù)庫(kù),以至于被Oracle重金收購(gòu)(先被SUN收購(gòu),然后SUN被Oracle收購(gòu),據(jù)說(shuō)MySQL賣了10億美金)。
關(guān)系型數(shù)據(jù)庫(kù)表格之間的關(guān)系舉例
表1:學(xué)生表
學(xué)號(hào)
姓名
年齡
S001
張三
16
S002
李四
17
S003
王五
18
S004
趙六
19
表2:課程表
課程號(hào)
課程名
學(xué)分
C1001
語(yǔ)文
5
C1002
數(shù)學(xué)
5
C1003
外語(yǔ)
5
C1004
物理
4
表1:學(xué)生選課表
學(xué)號(hào)
課程號(hào)
成績(jī)
S001
C1001
80
S002
C1002
90
S003
C1003
59
S004
C1004
66
小結(jié):什么是關(guān)系型數(shù)據(jù)庫(kù)
1、二維的表格;
2、市場(chǎng)占有量較大的位MySQL和Oracle數(shù)據(jù)庫(kù);
3、通過(guò)SQL結(jié)構(gòu)化查詢語(yǔ)言來(lái)存取、管理數(shù)據(jù);
4、保持?jǐn)?shù)據(jù)一致性方面很強(qiáng)。ACID理論?
1.2.2 非關(guān)系型數(shù)據(jù)庫(kù)介紹
非關(guān)系型數(shù)據(jù)庫(kù)誕生的背景
非關(guān)系型數(shù)據(jù)庫(kù)也被稱為NoSQL數(shù)據(jù)庫(kù),NoSQL的本意是“Not Only SQL”,指的是非關(guān)系型數(shù)據(jù)庫(kù),而不是“No SQL”的意思(沒(méi)有SQL語(yǔ)句?),因此,NoSQL的產(chǎn)生并不是要徹底否定關(guān)系型數(shù)據(jù)庫(kù),而是作為傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的一個(gè)有效補(bǔ)充。NoSQL數(shù)據(jù)庫(kù)在特定的場(chǎng)景下可以發(fā)揮出難以想象的高效率和高性能。
隨著互聯(lián)網(wǎng)web2.0(以前的基本上是靜態(tài)網(wǎng)頁(yè),而現(xiàn)在是交互的網(wǎng)站)網(wǎng)站的興起,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是對(duì)于規(guī)模日益擴(kuò)大的海量數(shù)據(jù),超大規(guī)模和高并發(fā)的微博、微信、SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,例如:傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)IO瓶頸、性能瓶頸都難以有效突破,于是開(kāi)始出現(xiàn)了大批針對(duì)特定場(chǎng)景,以高性能和使用便利為目的的功能特異化的數(shù)據(jù)庫(kù)產(chǎn)品,NoSQL(非關(guān)系型)類的數(shù)據(jù)庫(kù)就是在這樣的情景中誕生并得到了非常迅速的發(fā)展。NoSQL不將數(shù)據(jù)的一致性作為重點(diǎn),或者是作為次重點(diǎn)。
NoSQL是非關(guān)系型數(shù)據(jù)庫(kù)的廣義定義。它打破了長(zhǎng)久以來(lái)關(guān)系型數(shù)據(jù)庫(kù)與ACID理論大統(tǒng)一的局面。NoSQL數(shù)據(jù)存儲(chǔ)不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫(kù)無(wú)法比擬的性能優(yōu)勢(shì)。該術(shù)語(yǔ)(NoSQL)在2009年初得到了廣泛認(rèn)同。當(dāng)今的應(yīng)用體系結(jié)構(gòu)需要數(shù)據(jù)存儲(chǔ)在橫向伸縮性上能夠滿足需求。而NoSQL存儲(chǔ)就是為了實(shí)現(xiàn)這個(gè)需求而誕生的。
NOSQL非關(guān)系型數(shù)據(jù)庫(kù)小結(jié):
1、NOSQL不是否定關(guān)系數(shù)據(jù)庫(kù),而是作為關(guān)系數(shù)據(jù)庫(kù)的一個(gè)重要補(bǔ)充。
2、NOSQL為了高性能、高并發(fā)而生,忽略影響高性能、高并發(fā)的功能。
3、NOSQL典型產(chǎn)品memcached(純內(nèi)存),redis(持久化緩存),mongodb(面向文檔)
1.2.3 非關(guān)系型數(shù)據(jù)庫(kù)種類
(1) 鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)
鍵值數(shù)據(jù)庫(kù)就類似傳統(tǒng)語(yǔ)言中使用的哈希表??梢酝ㄟ^(guò)key來(lái)添加、查詢或者刪除數(shù)據(jù),因?yàn)槭褂胟ey主鍵訪問(wèn),所以會(huì)獲得很高的性能及擴(kuò)展性。
鍵值(Key-Value)數(shù)據(jù)庫(kù)主要是使用一個(gè)哈希表,這個(gè)表中有一個(gè)特定的鍵和一個(gè)指針指向特定的數(shù)據(jù)。Key/value模型對(duì)于IT系統(tǒng)來(lái)說(shuō)的優(yōu)勢(shì)在于簡(jiǎn)單、易部署、高并發(fā)。
典型產(chǎn)品:Memcached、Redis、MemcacheDB、Berkeley DB
(2) 列存儲(chǔ)(Column-oriented)數(shù)據(jù)庫(kù)
列存儲(chǔ)數(shù)據(jù)庫(kù)將數(shù)據(jù)存在列族(column family)中,一個(gè)列族存儲(chǔ)經(jīng)常被一起查詢的相關(guān)數(shù)據(jù)。舉個(gè)例子,如果我們有一個(gè)Person類,我們通常會(huì)一起查詢他們的姓名和年齡,而不是薪資。這種情況下,姓名和年齡就會(huì)被放入一個(gè)列族中,而薪資則在另外一個(gè)列族中。
這部分?jǐn)?shù)據(jù)庫(kù)通常是用來(lái)應(yīng)對(duì)分布式存儲(chǔ)的海量數(shù)據(jù)。鍵仍然存在,但是他們的特點(diǎn)是指向了多個(gè)列。這些列是由列家族來(lái)安排的。
典型產(chǎn)品:Hbase、Cassandra
(3) 面向文檔數(shù)據(jù)庫(kù)
文檔型數(shù)據(jù)庫(kù)的靈感是來(lái)自于Lotus Notes辦公軟件的,而且它同第一種鍵值存儲(chǔ)相類似。該類型的數(shù)據(jù)模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲(chǔ),比如JSON。文檔型數(shù)據(jù)庫(kù)可以看作是鍵值數(shù)據(jù)庫(kù)的升級(jí)版,允許之間嵌套鍵值。而且文檔型數(shù)據(jù)庫(kù)比鍵值數(shù)據(jù)庫(kù)的查詢效率更高。
面向文檔數(shù)據(jù)庫(kù)會(huì)將數(shù)據(jù)以文檔的形式存儲(chǔ)。每個(gè)文檔都是自包含的數(shù)據(jù)單元,是一系列數(shù)據(jù)項(xiàng)的集合。每個(gè)數(shù)據(jù)項(xiàng)都有一個(gè)名稱與對(duì)應(yīng)的值,值既可以是簡(jiǎn)單的數(shù)據(jù)類型,如字符串、數(shù)字和日期等;也可以是復(fù)雜的類型,如有序列表和關(guān)聯(lián)對(duì)象。數(shù)據(jù)存儲(chǔ)的最小單位是文檔,同一個(gè)表中存儲(chǔ)的文檔屬性可以是不同的,數(shù)據(jù)可以使用XML、JSON或者JSONB等多種形式存儲(chǔ)。
典型產(chǎn)品:MongoDB、CouchDB
(4) 圖形數(shù)據(jù)庫(kù)
圖形數(shù)據(jù)庫(kù)允許我們將數(shù)據(jù)已圖的方式存儲(chǔ)。實(shí)體會(huì)被作為定點(diǎn),而實(shí)體之間的關(guān)系則會(huì)被作為邊。比如我們有三個(gè)實(shí)體,Steve Jobs,Apple和Next,則會(huì)有兩個(gè)”Founded by”的邊將Apple和Next連接到Steve Jobs。
圖形結(jié)構(gòu)的數(shù)據(jù)庫(kù)同其他行列以及剛性結(jié)構(gòu)的SQL數(shù)據(jù)庫(kù)不同,它是使用靈活的圖形模型,并且能擴(kuò)展到多個(gè)服務(wù)器上。NoSQL數(shù)據(jù)庫(kù)沒(méi)有標(biāo)準(zhǔn)的查詢語(yǔ)言(SQL),因此進(jìn)行數(shù)據(jù)庫(kù)查詢需要制定數(shù)據(jù)模型。許多NoSQL數(shù)據(jù)庫(kù)都有REST式的數(shù)據(jù)接口或者查詢API。
典型的產(chǎn)品有:Neo4J、InfoGrid。
1.3 常用關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品介紹
1.3.1 Oracle數(shù)據(jù)庫(kù)
Oracle前生叫SDL,由Larry Ellison和另外兩個(gè)編程人員在1977創(chuàng)辦,他們開(kāi)發(fā)了自己的拳頭產(chǎn)品,在市場(chǎng)上大量銷售,1979年,Oracle公司引入了第一個(gè)商用SQL關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。Oracle公司是最早開(kāi)發(fā)關(guān)系型數(shù)據(jù)庫(kù)的廠商之一,其產(chǎn)品支持最廣泛的操作系統(tǒng)平臺(tái)。目前Oracle關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品的市場(chǎng)占有率數(shù)一數(shù)二。
Oracle公司是目前全球最大的數(shù)據(jù)庫(kù)軟件公司,也是近年業(yè)務(wù)增長(zhǎng)極為迅速的軟件提供與服務(wù)商。
主要應(yīng)用范圍:傳統(tǒng)大企業(yè),大公司,政府,金融,證券等等。
版本升級(jí):Oracle8i,Oracle9i,Oracle10g,Oracle11g,Oracle12c
1.3.2 MySQL數(shù)據(jù)庫(kù)
MySQL數(shù)據(jù)庫(kù)是一個(gè)中小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),軟件開(kāi)發(fā)者為瑞典MySQL AB公司。在2008年1月16號(hào)被Sun公司收購(gòu),后Sun公司又被oracle公司收購(gòu)。目前MySQL被廣泛地應(yīng)用在Internet上的大中小型網(wǎng)站中。由于體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多大中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù),甚至國(guó)內(nèi)知名的淘寶網(wǎng)頁(yè)選擇棄用ORACLE而更換為更開(kāi)放的MySQL。
MySQL數(shù)據(jù)庫(kù)主要應(yīng)用范圍:互聯(lián)網(wǎng)領(lǐng)域、大中小型網(wǎng)站,游戲公司,電商平臺(tái)等等。
1.3.3 MariaDB
MariaDB數(shù)據(jù)庫(kù)管理系統(tǒng)是MySQL數(shù)據(jù)庫(kù)的一個(gè)分支,主要由開(kāi)源社區(qū)維護(hù),采用CPL授權(quán)許可。開(kāi)發(fā)這個(gè)MariaDB數(shù)據(jù)庫(kù)分支的可能原因之一是:甲骨文公司收購(gòu)了MySQL之后,有將MySQL閉源的潛在風(fēng)險(xiǎn),因此MySQL開(kāi)源社區(qū)采用分支的方式來(lái)避開(kāi)這個(gè)風(fēng)險(xiǎn)。(CentOS7已經(jīng)將集成的MySQL替換為了MariaDB)
開(kāi)發(fā)MariaDB數(shù)據(jù)庫(kù)的目的是完全兼容MySQL數(shù)據(jù)庫(kù),包括API和命令行,使之能輕松的成為MySQL的代替品。在存儲(chǔ)引擎方面,使用XtraDB來(lái)代替MySQL的InnoDB。MariaDB由MySQL的創(chuàng)始人Michael Widenius主導(dǎo)開(kāi)發(fā),他早前曾以10億美元的價(jià)格,將自己創(chuàng)建的公司MySQL AB賣給了SUN,此后,隨著SUN被甲骨文收購(gòu),MySQL的所有權(quán)也落入了Oracle的手中。MariaDB數(shù)據(jù)庫(kù)的名稱來(lái)自MySQL的創(chuàng)始人Michael Widenius的女兒Maria的名字。
MariaDB基于事務(wù)的Maria存儲(chǔ)引擎,替換了MySQL的MyISAM存儲(chǔ)引擎,它使用Percona的XtraDB。這個(gè)版本還包括了PrimeBase XT和FederatedX存儲(chǔ)引擎。
MariaDB數(shù)據(jù)庫(kù)直到5.5八本,均依照MySQL的版本發(fā)行。因此,使用MariaDB5.5的人會(huì)從MySQL5.5中了解到MariaDB的所有功能。
1.3.4 SQL Server
Microsoft SQL Server是微軟公司開(kāi)發(fā)的大型關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)。SQL Server的功能比較全面,效率高,可以作為中型企業(yè)或者單位的數(shù)據(jù)庫(kù)平臺(tái)。SQL Server可以與Windows操作系統(tǒng)緊密集成,不論是應(yīng)用程序開(kāi)發(fā)速度還是系統(tǒng)事務(wù)處理運(yùn)行速度,都能得到較大的提升。對(duì)于在Windows品臺(tái)上開(kāi)發(fā)的各種企業(yè)級(jí)信息管理系統(tǒng)來(lái)說(shuō),不論是C/S架構(gòu)還是B/S架構(gòu),SQL Server都是一個(gè)很好的選擇。SQL Server的缺點(diǎn)是只能在Windows系統(tǒng)下運(yùn)行。
主要應(yīng)用范圍:部分企業(yè)電商,使用windows服務(wù)器平臺(tái)的企業(yè)。
1.3.5 Access
美國(guó)Microsoft公司于1994年推出的微機(jī)數(shù)據(jù)庫(kù)管理系統(tǒng)。它具有界面友好、易學(xué)易用、開(kāi)發(fā)簡(jiǎn)單、接口靈活等特點(diǎn),是典型的新一代桌面關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。它結(jié)合了Microsoft Jet Database Engine和圖形用戶界面兩項(xiàng)特點(diǎn),是Microsoft Office的成員之一。Access能夠存取Access/Jet、Microsoft SQL Server、Oracle,或者任何ODBC兼容數(shù)據(jù)庫(kù)的資料。
Access是入門級(jí)小型桌面數(shù)據(jù)庫(kù),性能安全性都很一般??晒﹤€(gè)人管理或小型網(wǎng)站使用
1.3.6 其他數(shù)據(jù)庫(kù)
DB2,PostgreSQL,Informix,Sybase等。
1.4 常用的非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品介紹
1.4.1 Memcached(key-value)
Memcached是一個(gè)開(kāi)源的、高性能的、具有分布式內(nèi)存對(duì)象的緩存系統(tǒng)。通過(guò)它可以減輕數(shù)據(jù)庫(kù)負(fù)載,加速動(dòng)態(tài)的Web應(yīng)用,最初版本由LiveJournal的Brad Fitzpatrick在2003年開(kāi)發(fā)完成。目前全球有非常多的用戶都在使用它來(lái)構(gòu)建自己的大負(fù)載網(wǎng)站或提高自己的高訪問(wèn)網(wǎng)站的響應(yīng)速度。注意:Memcache是這個(gè)項(xiàng)目的名稱,而Memcached是服務(wù)器端的主程序文件名。
緩存一般用來(lái)保存一些經(jīng)常被讀取的對(duì)象或數(shù)據(jù)(例如,瀏覽器會(huì)把經(jīng)常訪問(wèn)的網(wǎng)頁(yè)緩存起來(lái)一樣),通過(guò)緩存來(lái)存取對(duì)象或數(shù)據(jù)要比在磁盤上存取快很多,前者是內(nèi)存,后者是磁盤。Memcached是一種純內(nèi)存緩存系統(tǒng),把經(jīng)常存取的對(duì)象或數(shù)據(jù)緩存在Memcached的內(nèi)存中,這些被緩存的數(shù)據(jù)被程序通過(guò)API的方式被存取,Memcached里面的數(shù)據(jù)就像一張巨大的HASH表,數(shù)據(jù)以key-value對(duì)的方式存在。Memcached通過(guò)緩存經(jīng)常被存取的對(duì)象或數(shù)據(jù),從而減輕頻繁讀取數(shù)據(jù)庫(kù)的壓力,提高網(wǎng)站的響應(yīng)速度,構(gòu)建出速度更快的可擴(kuò)展的Web應(yīng)用。官網(wǎng):http://memcached.org/
由于Memcached為純內(nèi)存緩存軟件,一旦重啟所有數(shù)據(jù)都會(huì)丟失,因此,新浪網(wǎng)基于Memcached開(kāi)發(fā)了一個(gè)開(kāi)源項(xiàng)目Memcachedb。通過(guò)為Memcached增加Berkeley DB的持久化存儲(chǔ)機(jī)制和異步主輔復(fù)制機(jī)制,使Memcached具備了事務(wù)恢復(fù)能力、持久化數(shù)據(jù)存儲(chǔ)能力和分布式復(fù)制能力,Memcachedb非常適合需要在超高性能讀寫速度、持久化保存的應(yīng)用場(chǎng)景,但是最近幾年逐漸被其他的持久化產(chǎn)品代替,例如redis。
小結(jié):
1、key-value型數(shù)據(jù)庫(kù)
2、純內(nèi)存數(shù)據(jù)庫(kù),重啟丟失數(shù)據(jù)
3、持久化產(chǎn)品memcachedb(sina)
1.4.2 redis(key-value)
和Memcached類似,redis也是一個(gè)key-value型存儲(chǔ)系統(tǒng)。但redis支持的存儲(chǔ)value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)等。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集、并集和差集及更豐富的操作,而這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與Memcached一樣,為了保證效率,redis的數(shù)據(jù)都是緩存在內(nèi)存中的。區(qū)別是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。
Redis是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。redis的出現(xiàn),很大程度上補(bǔ)償了Memcached這類key-value存儲(chǔ)的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。
官網(wǎng):http://www.redis.io/documentation
小結(jié):
1、支持內(nèi)存緩存,這個(gè)功能相當(dāng)于Memcached。
2、支持持久化存儲(chǔ),這個(gè)功能相當(dāng)于Memcachedb,ttserver
3、數(shù)據(jù)類型更豐富,比其他key-value庫(kù)功能更強(qiáng)
4、支持主從集群,分布式
5、支持列隊(duì)等特殊功能。
應(yīng)用:緩存從存取Memcached更改為redis。
1.4.3 MongoDB(Document-oriented)
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的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。MongoDB最大的特點(diǎn)就是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。它的特點(diǎn)是高性能、易部署、易使用,存儲(chǔ)數(shù)據(jù)非常方便。
主要功能特性:
1、面向集合存儲(chǔ),易存儲(chǔ)對(duì)象類型的數(shù)據(jù)。“面向集合”(Collenction-Orented),意思是數(shù)據(jù)被分組存儲(chǔ)在數(shù)據(jù)集中,被稱為一個(gè)集合(Collenction)。每個(gè)集合在數(shù)據(jù)庫(kù)中都有一個(gè)唯一的標(biāo)識(shí)名,并且可以包含無(wú)限數(shù)目的文檔。集合的概念類似關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)里的表(table),不同的是它不需要定義任何模式(schema)
2、模式自由。模式自由(schema-free),意味著對(duì)于存儲(chǔ)在MongoDB數(shù)據(jù)庫(kù)中的文件,我們不需要知道它的任何結(jié)構(gòu)定義。如果需要,你完全可以把不同結(jié)構(gòu)的文件存儲(chǔ)在同一個(gè)數(shù)據(jù)庫(kù)里。
3、支持動(dòng)態(tài)查詢
4、支持完全索引,包含內(nèi)部對(duì)象
5、支持查詢
6、支持復(fù)制和故障恢復(fù)
7、使用高效的二進(jìn)制數(shù)據(jù)存儲(chǔ),包括大型對(duì)象
8、自動(dòng)處理碎片,以支持云計(jì)算層次的擴(kuò)展性。
1.4.4 Cassandra(Column-oriented)
Apache Cassandra是一套開(kāi)源分布式Key-Value存儲(chǔ)系統(tǒng)。它最初由Facebook開(kāi)發(fā),用于存儲(chǔ)特別大的數(shù)據(jù)。Facebook目前在使用此系統(tǒng)。
Cassandra的主要特點(diǎn)就是它不是一個(gè)數(shù)據(jù)庫(kù),而是由一堆數(shù)據(jù)庫(kù)節(jié)點(diǎn)共同構(gòu)成的一個(gè)分布式網(wǎng)絡(luò)服務(wù),對(duì)Cassandra的一個(gè)寫操作,會(huì)被復(fù)制到其他節(jié)點(diǎn)上去,對(duì)Cassandra的讀操作,也會(huì)被路由到某個(gè)節(jié)點(diǎn)上面去讀取。對(duì)于一個(gè)Cassandra集群來(lái)說(shuō),擴(kuò)展性能是比較簡(jiǎn)單的事情,只管在集群里面添加節(jié)點(diǎn)就可以了。
Cassandra是一個(gè)混合型的非關(guān)系型數(shù)據(jù)庫(kù),類似于Google的BigTable。其主要功能比Dynimite更豐富,Cassandra最初由Facebook開(kāi)發(fā),后轉(zhuǎn)變成了開(kāi)源項(xiàng)目。它是一個(gè)網(wǎng)絡(luò)社交云計(jì)算方面理想的數(shù)據(jù)庫(kù)。
官網(wǎng):http:// cassandra.org
主要特性:
1、分布式
2、基于column的結(jié)構(gòu)化
3、高伸展性
1.4.5 其他數(shù)據(jù)庫(kù)
Hbase,MemcacheDB,BerkeleyDB,Tokyo Tyrant(ttserver)
1.5 數(shù)據(jù)庫(kù)排名
排名地址:https://db-engines.com/en/ranking
來(lái)源:http://blog.51cto.com/13178102/2064041
高通,蘋果專利大戰(zhàn)又來(lái)了
掃碼關(guān)注的工資會(huì)翻倍
print_r('關(guān)注一下吧');
var_dump('關(guān)注一下吧');
NSLog(@"關(guān)注一下吧!")
System.out.println("關(guān)注一下吧!");
console.log("點(diǎn)個(gè)贊吧!");
print("點(diǎn)個(gè)贊吧!");
printf("點(diǎn)個(gè)贊吧!");
cout << "點(diǎn)個(gè)贊吧!" << endl;
Console.WriteLine("轉(zhuǎn)發(fā)一下吧!");
fmt.Println("轉(zhuǎn)發(fā)一下吧!")
Response.Write("轉(zhuǎn)發(fā)一下吧!");
alert(’轉(zhuǎn)發(fā)一下吧!’)