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