版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
8.2NoSQL數(shù)據(jù)庫8.2.1什么是NoSQL數(shù)據(jù)庫數(shù)據(jù)庫應用和開發(fā)NoSQL是NotOnlySQL的縮寫,而不是NotSQL,它不一定遵循傳統(tǒng)數(shù)據(jù)庫的一些基本要求,比如說遵循SQL標準、ACID屬性、表結構等等。它打破了關系型數(shù)據(jù)庫長久以來占主導地位的快速成長起來的非關系松散數(shù)據(jù)存儲類型,這種數(shù)據(jù)存儲不需要事先設計好的表結構,它也不會出現(xiàn)表之間的連接操作和水平分割,學術界稱這種數(shù)據(jù)庫為非結構化存儲。相比傳統(tǒng)關系型數(shù)據(jù)庫,叫它分布式數(shù)據(jù)管理系統(tǒng)更貼切,數(shù)據(jù)存儲被簡化更靈活,重點被放在了分布式數(shù)據(jù)管理上。非關系型數(shù)據(jù)庫(NoSQL=NotOnlySQL)是傳統(tǒng)關系型數(shù)據(jù)庫的功能縮減版本,即通過減少不常用或極少用到的功能來大幅度提高產(chǎn)品性能。其出現(xiàn)是由于大數(shù)據(jù)應用的興起,也為了解決現(xiàn)代社會中多重數(shù)據(jù)多種數(shù)據(jù)融合的問題。因此,在實際開發(fā)中,有很多業(yè)務其實并不需要完整的關系型數(shù)據(jù)庫功能,所以使用性能更高、成本更低的非關系型數(shù)據(jù)庫成為了更明智的選擇。8.2NoSQL數(shù)據(jù)庫8.2.1什么是NoSQL數(shù)據(jù)庫數(shù)據(jù)庫應用和開發(fā)NoSQL數(shù)據(jù)庫的主要優(yōu)勢歸納如下:①易擴展:關系型數(shù)據(jù)庫并不擅長大量數(shù)據(jù)的寫入處理。原本關系型數(shù)據(jù)庫就是以JOIN為前提的,就是說,各個數(shù)據(jù)之間存在關聯(lián)是關系型數(shù)據(jù)庫得名的主要原因。為了進行JOIN處理,關系型數(shù)據(jù)庫不得不把數(shù)據(jù)存儲在同個服務器內,這不利于數(shù)據(jù)的分散。相反,NoSQL數(shù)據(jù)庫原本就不支持JOIN處理,各個數(shù)據(jù)都是獨立設計的,很容易把數(shù)據(jù)分散到多個服務器上。由于數(shù)據(jù)被分散到多個服務器上,減少了每個服務器上的數(shù)據(jù)量,即使要進行大量數(shù)據(jù)的寫入操作,處理起來也更容易。同理,數(shù)據(jù)的讀入操作當然也同樣容易;②靈活的數(shù)據(jù)模型:NoSQL無需事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。適合在字段不固定的時候用,而在關系型數(shù)據(jù)庫里則要更改表結構。③高可用:NoSQL在不太影響性能的情況,就可以方便的實現(xiàn)高可用的架構。比如Cassandra,HBase模型,通過復制模型也能實現(xiàn)高可用。④大數(shù)據(jù)量,高性能:NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的無關系性,數(shù)據(jù)庫的結構簡單。8.2NoSQL數(shù)據(jù)庫8.2.2NoSQL數(shù)據(jù)庫的四大分類數(shù)據(jù)庫應用和開發(fā)類型簡介典型應用案例鍵值對這是最常見的NoSQL數(shù)據(jù)庫,它的數(shù)據(jù)是以鍵值的形式存儲的。雖然它的處理速度非???,但是基本上只能通過鍵查詢獲取數(shù)據(jù)。根據(jù)數(shù)據(jù)的保存方式可以分為臨時性、永久性和兩者兼具3種。圖像存儲基于鍵的文件系統(tǒng)對象緩存設計為可擴展的系統(tǒng)BerkeleyDBMemcacheRedis列族采用稀疏矩陣的形式,可以存儲關鍵字及其映射值,并且可以把值分成多個列族,讓每個列族代表一張數(shù)據(jù)映射表。網(wǎng)絡爬蟲的結果大數(shù)據(jù)的問題軟一致性CassandraHBaseRiak圖存儲圖數(shù)據(jù)庫可存放實體及實體間關系。實體也叫“節(jié)點”(node),它們具有屬性(property)。可將節(jié)點視為應用程序中某對象的實例。關系又叫“邊”(edge),它們也有屬性。邊具備方向性(directionalsignificance),而節(jié)點則按關系組織起來,以便在其中查找所需模式。用圖將數(shù)據(jù)一次性組織好,稍后便可根據(jù)“關系”以不同方式解讀它。社交網(wǎng)絡欺詐偵測強關聯(lián)的數(shù)據(jù)Neo4jInfiniteGraphAllegroGraph文檔存儲“文檔”(document)是文檔存儲數(shù)據(jù)庫中的主要概念。此類的數(shù)據(jù)庫可存放并獲取文檔,其格式可以是XML、JSON、BSON等。這些文檔具備自述性(self-describing),呈現(xiàn)分層的樹狀數(shù)據(jù)結構(hierarchicaltreedatastructure),可以包含映射表、集合和純量值。數(shù)據(jù)庫中的文檔彼此相似,但不必完全相同。文檔數(shù)據(jù)庫所存放的文檔,就相當于鍵值數(shù)據(jù)庫所存放的“值”。文檔數(shù)據(jù)庫可視為其值可查的鍵值數(shù)據(jù)庫。高度變化的數(shù)據(jù)文檔搜索集成中心互聯(lián)網(wǎng)內容管理出版物MongoDBCouchDBNoSQL應用采用很多數(shù)據(jù)存儲類型(不同的數(shù)據(jù)庫)。有簡單的表現(xiàn)鍵值關系的鍵值存儲、表現(xiàn)關聯(lián)關系的圖存儲、用以存儲可變數(shù)據(jù)的文檔存儲,每一種NoSQL數(shù)據(jù)存儲類型都有其獨特的屬性和使用場景。8.2NoSQL數(shù)據(jù)庫8.2.3主流NoSQL數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫應用和開發(fā)
對于NoSQL系統(tǒng)的使用者來說,其中一個挑戰(zhàn)就是從眾多不同的NoSQL數(shù)據(jù)庫類別中選擇一個合適的架構模式。本節(jié)將介紹7種主流的NoSQL數(shù)據(jù)庫系統(tǒng),并對比這幾種數(shù)據(jù)庫系統(tǒng)的特性和最佳應用場景。8.2NoSQL數(shù)據(jù)庫8.2.3主流NoSQL數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫應用和開發(fā)
CouchDB是一個文檔型數(shù)據(jù)庫服務器。于現(xiàn)在流行的關系數(shù)據(jù)庫服務器不同,CouchDB是圍繞一系列語義上自包含的文檔而組織的。CouchDB中的文檔是沒有模式的(schemafree),也就是說并不要求文檔具有某種特定的結構。CouchDB的這種特性使得相對于傳統(tǒng)的關系型數(shù)據(jù)庫而言,有自己的適用范圍。一般來說,圍繞文檔來構建的應用都比較適合使用CouchDB作為其后臺存儲。CouchDB強調其中所存儲的文檔,在語義上是自包含的。這種面向文檔的設計思路,更貼近很多應用的問題域的真實情況。對于這類應用,使用CouchDB的文檔來進行建模,會更加自然和簡單。與此同時,CouchDB也提供基于MapReduce編程模型的視圖來對文檔進行查詢,可以提供類似于關系數(shù)據(jù)庫中SQL語句的能力。CouchDB對于很多應用來說,提供了關系數(shù)據(jù)庫之外的更好的選擇。該數(shù)據(jù)庫系統(tǒng)適用于數(shù)據(jù)變化較少,執(zhí)行預定義查詢,進行數(shù)據(jù)統(tǒng)計的應用程序。適用于需要提供數(shù)據(jù)版本支持的應用程序。
Redis是一個開源的和高級的鍵值對存儲系統(tǒng)。它支持存儲多種value類型,不僅包括基本的String類型,還包括List、Set、Zset和Hash類型。這種數(shù)據(jù)類型都支持push/pop、add/remove及取交集、并集、差集和其他豐富的操作,而且這些操作都是原子性的。在此基礎上,Redis支持各種不同方式的排序。為了保證效率,Redis中的數(shù)據(jù)都是緩存在內存中的。根據(jù)實際運行中的配置,Redis會周期性的把數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現(xiàn)了master-slave(主從)同步。Redis支持很多語言的客戶端調用,如Python、Ruby、Erlang和PHP,使用很方便。另外,Redis的代碼遵循ANSIC標準,可以在支持Posix標準的系統(tǒng)上安裝運行,如Linux和BSD等,Windows上還不能正式支持。該數(shù)據(jù)庫適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可預見(適合內存容量)的應用程序。1.CouchDB2.Redis8.2NoSQL數(shù)據(jù)庫8.2.3主流NoSQL數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫應用和開發(fā)3.MongoDB
MongoDB是10gen公司開發(fā)的一款以高性能和可擴展性為特征的開源軟件,它是NoSQL中面向文檔的數(shù)據(jù)庫。它是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是非關系數(shù)據(jù)庫當中功能最豐富,最像關系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結構非常松散,是類似JSON的BSON格式,因此可以存儲比較復雜的數(shù)據(jù)類型。MongoDB最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現(xiàn)類似關系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)簡歷索引。它是一個面向集合的,模式自由的文檔型數(shù)據(jù)庫。該數(shù)據(jù)庫適用于需要動態(tài)查詢支持;需要使用索引而不是map/reduce功能;需要對大數(shù)據(jù)庫有性能要求;需要使用CouchDB但因為數(shù)據(jù)改變太頻繁而占滿內存的應用程序。4.HBase
HBase是建立在HDFS上的,它提供高可靠性、高性能、列存儲和可伸縮性、實時讀寫的數(shù)據(jù)庫系統(tǒng)。它介于NoSQL和RDBMS之間,僅能通過主鍵(rowkey)和主鍵的range來檢索數(shù)據(jù),僅支持單行事務(可通過hive支持來實現(xiàn)多表join等復雜操作)。主要用來存儲非結構化和半結構化的松散數(shù)據(jù)。Hbase中的表一般有這樣的特點:1)大:一個表可以有上億行,上百萬列。2)面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索。3)稀疏:對于空(null)的列,并不占用存儲空間,因此,表可以設計的非常稀疏。該數(shù)據(jù)庫需要對大數(shù)據(jù)進行隨機、實時訪問的場合。8.2NoSQL數(shù)據(jù)庫8.2.3主流NoSQL數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫應用和開發(fā)5.Riak6.Membase
Riak是一個分布式的NoSQLkey-value數(shù)據(jù)存儲,提供高可用、容錯性、操作簡便性和可擴展性。除了開源版本,它還支持企業(yè)版和云存儲的版本。Riak實施原則來自于Amazond的Dynamo的論文,并受到CAP理論的深遠影響。在Erlang中,Riak具有容錯數(shù)據(jù)復制和整個集群的自動數(shù)據(jù)分發(fā)功能。Riak采用免費授權模式:開源的版本有Riak和RiakCS,但是用戶也需要為額外的功能和支持付費。Riak具有可插拔的后端,用于其核心存儲,默認存儲后端為Bitcask,并支持LevelDB。該數(shù)據(jù)庫適用于想使用類似Cassandra(類似Dynamo)數(shù)據(jù)庫但無法處理bloat及復雜性的情況。適用于想做多站點復制,但又需要對單個站點的擴展性、可用性及出錯處理有要求的情況。
Membase是針對交互式應用程序進行了優(yōu)化的一種開源的,分布式(無共享架構)多模型的面向文檔的NoSQL數(shù)據(jù)庫。這些應用程序可以通過創(chuàng)造、存儲、檢索、聚合、操縱和呈現(xiàn)數(shù)據(jù)為許多用戶并非用戶提供服務。為了支持這些應用需求,Membase旨在提供易擴展的鍵值或者JSON文檔訪問,具有低延遲和高吞吐量。它被設計為能夠滿足從單個機器集群到跨越許多機器的大規(guī)模部署。該數(shù)據(jù)庫適用于需要低延遲數(shù)據(jù)訪問,高并發(fā)支持以及高可用性的應用程序。8.2NoSQL數(shù)據(jù)庫8.2.3主流NoSQL數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫應用和開發(fā)7.Neo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 間歇開關課程設計
- 電路課程設計調試分析
- 棕櫚教育課程設計
- 音樂融合課程設計
- 課程設計項目評估報告
- 音樂課程設計內容
- 羽毛球課程設計與開發(fā)
- 早教規(guī)則意識課程設計
- 藝術品拍賣數(shù)據(jù)挖掘與應用-洞察分析
- 網(wǎng)絡設計與實現(xiàn)課程設計
- 河南省鄭州外國語高中-【高二】【上期中】【把握現(xiàn)在 蓄力高三】家長會【課件】
- 天津市武清區(qū)2024-2025學年八年級(上)期末物理試卷(含解析)
- 2025年中煤電力有限公司招聘筆試參考題庫含答案解析
- 企業(yè)內部控制與財務風險防范
- 高端民用航空復材智能制造交付中心項目環(huán)評資料環(huán)境影響
- 建設項目施工現(xiàn)場春節(jié)放假期間的安全管理方案
- 胃潴留護理查房
- 植物細胞中氨基酸轉運蛋白的一些已知或未知的功能
- 山東省高等學校精品課程
- 三菱張力控制器LE-40MTA-E說明書
- 生活垃圾填埋場污染控制標準
評論
0/150
提交評論