一,、什么是數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是“按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)”,。是一個(gè)長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的,、有組織的,、可共享的、統(tǒng)一管理的大量數(shù)據(jù)的集合,。
數(shù)據(jù)庫(kù)的存儲(chǔ)空間很大,,可以存放百萬(wàn)條、千萬(wàn)條,、上億條數(shù)據(jù),。但是數(shù)據(jù)庫(kù)并不是隨意地將數(shù)據(jù)進(jìn)行存放,是有一定的規(guī)則的,,否則查詢的效率會(huì)很低,。當(dāng)今世界是一個(gè)充滿著數(shù)據(jù)的互聯(lián)網(wǎng)世界,充斥著大量的數(shù)據(jù),。即這個(gè)互聯(lián)網(wǎng)世界就是數(shù)據(jù)世界,。數(shù)據(jù)的來(lái)源有很多,比如出行記錄,、消費(fèi)記錄,、瀏覽的網(wǎng)頁(yè)、發(fā)送的消息等等,。除了文本類型的數(shù)據(jù),,圖像、音樂(lè),、聲音都是數(shù)據(jù),。
數(shù)據(jù)庫(kù)的概念實(shí)際包括兩層意思:
1、數(shù)據(jù)庫(kù)是一個(gè)實(shí)體,,它是能夠合理保管數(shù)據(jù)的“倉(cāng)庫(kù)”,,用戶在該“倉(cāng)庫(kù)”中存放要管理的事務(wù)數(shù)據(jù),“數(shù)據(jù)”和“庫(kù)”兩個(gè)概念結(jié)合成為數(shù)據(jù)庫(kù),。
2,、數(shù)據(jù)庫(kù)是數(shù)據(jù)管理的新方法和技術(shù),它能更合適的組織數(shù)據(jù),、更方便的維護(hù)數(shù)據(jù)、更嚴(yán)密的控制數(shù)據(jù)和更有效的利用數(shù)據(jù),。
數(shù)據(jù)庫(kù)作為最重要的基礎(chǔ)軟件,,是確保計(jì)算機(jī)系統(tǒng)穩(wěn)定運(yùn)行的基石。
二,、數(shù)據(jù)庫(kù)有哪些類型
數(shù)據(jù)庫(kù)有兩種類型,,分別是關(guān)系型數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)。
1,、關(guān)系數(shù)據(jù)庫(kù)
關(guān)系型數(shù)據(jù)庫(kù),,存儲(chǔ)的格式可以直觀地反映實(shí)體間的關(guān)系,。關(guān)系型數(shù)據(jù)庫(kù)和常見(jiàn)的表格比較相似,關(guān)系型數(shù)據(jù)庫(kù)中表與表之間是有很多復(fù)雜的關(guān)聯(lián)關(guān)系的,。常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)有Mysql,,SqlServer等。在輕量或者小型的應(yīng)用中,,使用不同的關(guān)系型數(shù)據(jù)庫(kù)對(duì)系統(tǒng)的性能影響不大,,但是在構(gòu)建大型應(yīng)用時(shí),則需要根據(jù)應(yīng)用的業(yè)務(wù)需求和性能需求,,選擇合適的關(guān)系型數(shù)據(jù)庫(kù),。
關(guān)系型數(shù)據(jù)庫(kù)對(duì)于結(jié)構(gòu)化數(shù)據(jù)的處理更合適,如學(xué)生成績(jī),、地址等,,這樣的數(shù)據(jù)一般情況下需要使用結(jié)構(gòu)化的查詢,例如join,,這樣的情況下,,關(guān)系型數(shù)據(jù)庫(kù)就會(huì)比NoSQL數(shù)據(jù)庫(kù)性能更優(yōu),而且精確度更高,。由于結(jié)構(gòu)化數(shù)據(jù)的規(guī)模不算太大,,數(shù)據(jù)規(guī)模的增長(zhǎng)通常也是可預(yù)期的,所以針對(duì)結(jié)構(gòu)化數(shù)據(jù)使用關(guān)系型數(shù)據(jù)庫(kù)更好,。關(guān)系型數(shù)據(jù)庫(kù)十分注意數(shù)據(jù)操作的事務(wù)性,、一致性,如果對(duì)這方面的要求關(guān)系型數(shù)據(jù)庫(kù)無(wú)疑可以很好的滿足,。
2,、非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)
隨著近些年技術(shù)方向的不斷拓展,大量的NoSql數(shù)據(jù)庫(kù)如MongoDB,、Redis,、Memcache出于簡(jiǎn)化數(shù)據(jù)庫(kù)結(jié)構(gòu)、避免冗余,、影響性能的表連接,、摒棄復(fù)雜分布式的目的被設(shè)計(jì)。
NoSQL數(shù)據(jù)庫(kù)指的是分布式的,、非關(guān)系型的,、不保證遵循ACID原則的數(shù)據(jù)存儲(chǔ)系統(tǒng)。NoSQL數(shù)據(jù)庫(kù)技術(shù)與CAP理論,、一致性哈希算法有密切關(guān)系,。所謂CAP理論,,簡(jiǎn)單來(lái)說(shuō)就是一個(gè)分布式系統(tǒng)不可能滿足可用性,、一致性與分區(qū)容錯(cuò)性這三個(gè)要求,,一次性滿足兩種要求是該系統(tǒng)的上限。而一致性哈希算法則指的是NoSQL數(shù)據(jù)庫(kù)在應(yīng)用過(guò)程中,,為滿足工作需求而在通常情況下產(chǎn)生的一種數(shù)據(jù)算法,,該算法能有效解決工作方面的諸多問(wèn)題但也存在弊端,即工作完成質(zhì)量會(huì)隨著節(jié)點(diǎn)的變化而產(chǎn)生波動(dòng),,當(dāng)節(jié)點(diǎn)過(guò)多時(shí),,相關(guān)工作結(jié)果就無(wú)法那么準(zhǔn)確。這一問(wèn)題使整個(gè)系統(tǒng)的工作效率受到影響,,導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)亂碼與出錯(cuò)率大大提高,,甚至?xí)霈F(xiàn)數(shù)據(jù)節(jié)點(diǎn)的內(nèi)容遷移,產(chǎn)生錯(cuò)誤的代碼信息,。但盡管如此,,NoSQL數(shù)據(jù)庫(kù)技術(shù)還是具有非常明顯的應(yīng)用優(yōu)勢(shì),如數(shù)據(jù)庫(kù)結(jié)構(gòu)相對(duì)簡(jiǎn)單,,在大數(shù)據(jù)量下的讀寫(xiě)性能好,;能滿足隨時(shí)存儲(chǔ)自定義數(shù)據(jù)格式需求,非常適用于大數(shù)據(jù)處理工作,。
NoSQL數(shù)據(jù)庫(kù)適合追求速度和可擴(kuò)展性,、業(yè)務(wù)多變的應(yīng)用場(chǎng)景。對(duì)于非結(jié)構(gòu)化數(shù)據(jù)的處理更合適,,如文章,、評(píng)論,這些數(shù)據(jù)如全文搜索,、機(jī)器學(xué)習(xí)通常只用于模糊處理,,并不需要像結(jié)構(gòu)化數(shù)據(jù)一樣,進(jìn)行精確查詢,,而且這類數(shù)據(jù)的數(shù)據(jù)規(guī)模往往是海量的,,數(shù)據(jù)規(guī)模的增長(zhǎng)往往也是不可能預(yù)期的,而NoSQL數(shù)據(jù)庫(kù)的擴(kuò)展能力幾乎也是無(wú)限的,,所以NoSQL數(shù)據(jù)庫(kù)可以很好的滿足這一類數(shù)據(jù)的存儲(chǔ),。NoSQL數(shù)據(jù)庫(kù)利用key-value可以大量的獲取大量的非結(jié)構(gòu)化數(shù)據(jù),并且數(shù)據(jù)的獲取效率很高,,但用它查詢結(jié)構(gòu)化數(shù)據(jù)效果就比較差,。
目前NoSQL數(shù)據(jù)庫(kù)仍然沒(méi)有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),它現(xiàn)在有四種大的分類:
(1)鍵值對(duì)存儲(chǔ)(key-value):代表軟件Redis,,它的優(yōu)點(diǎn)能夠進(jìn)行數(shù)據(jù)的快速查詢,,而缺點(diǎn)是需要存儲(chǔ)數(shù)據(jù)之間的關(guān)系。
(2)列存儲(chǔ):代表軟件Hbase,,它的優(yōu)點(diǎn)是對(duì)數(shù)據(jù)能快速查詢,,數(shù)據(jù)存儲(chǔ)的擴(kuò)展性強(qiáng),。而缺點(diǎn)是數(shù)據(jù)庫(kù)的功能有局限性。
(3)文檔數(shù)據(jù)庫(kù)存儲(chǔ):代表軟件MongoDB,,它的優(yōu)點(diǎn)是對(duì)數(shù)據(jù)結(jié)構(gòu)要求不特別的嚴(yán)格,。而缺點(diǎn)是查詢性的性能不好,同時(shí)缺少一種統(tǒng)一查詢語(yǔ)言,。
(4)圖形數(shù)據(jù)庫(kù)存儲(chǔ):代表軟件InfoGrid,,它的優(yōu)點(diǎn)可以方便的利用圖結(jié)構(gòu)相關(guān)算法進(jìn)行計(jì)算。而缺點(diǎn)是要想得到結(jié)果必須進(jìn)行整個(gè)圖的計(jì)算,,而且遇到不適合的數(shù)據(jù)模型時(shí),,圖形數(shù)據(jù)庫(kù)很難使用。