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