免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
[轉(zhuǎn)] NoSQL生態(tài)系統(tǒng)

By Jonathan Ellis,系統(tǒng)架構(gòu)師, Translated by Jametong

空前的數(shù)據(jù)量正在驅(qū)動(dòng)商業(yè)尋找傳統(tǒng)關(guān)系型數(shù)據(jù)庫的替代方案,它已經(jīng)為我們服務(wù)30多年了(今年5月份ACM剛剛給關(guān)系型數(shù)據(jù)慶祝40歲生日).總體來講,這些替代方案就是目前知名的“NoSQL數(shù)據(jù)庫.”

關(guān)系型數(shù)據(jù)庫的基本問題是無法處理許多現(xiàn)代的工作負(fù)載.有三個(gè)具體的問題領(lǐng)域:向外擴(kuò)展(Scale out)類似于Digg(3TB的綠色徽章數(shù)據(jù))或Facebook(50T的收件箱搜索數(shù)據(jù))或Ebay(總共2PB的數(shù)據(jù))的數(shù)據(jù)集,單機(jī)性能限制以及僵化的概要設(shè)計(jì).

商業(yè)上(包含Rackspace Cloud公司)需要尋找新的方式來存儲(chǔ)并擴(kuò)展大規(guī)模的數(shù)據(jù).我最近寫了一篇關(guān)于Cassandra的文章,一個(gè)我們投入了資源的非關(guān)系型數(shù)據(jù)庫.還有另外一些正在運(yùn)作中的非關(guān)系型數(shù)據(jù)庫,它們匯總在一起被我們稱為”NoSQL運(yùn)動(dòng)”.

“NoSQL”這個(gè)術(shù)語實(shí)際上是由一個(gè)Rackspace的員工Eric Evans最先提出的,當(dāng)時(shí)來自Last.fm網(wǎng)站的Johan Oskarsson提議組織一次開源分布式數(shù)據(jù)庫的研討會(huì).這個(gè)名稱與概念就一起流行了起來.

有些人反對(duì)NoSQL這個(gè)說法,因?yàn)樗犉饋硐袷莾H僅表明了我們不做什么,而不是我們?cè)谧鍪裁? 事實(shí)確實(shí)是這樣,我也基本同意此說法,但是這個(gè)術(shù)語仍然有其價(jià)值,因?yàn)楫?dāng)關(guān)系型數(shù)據(jù)庫是你所知道的唯一工具時(shí),每個(gè)問題看起來都像個(gè)拇指(俗語,如果你手里有一個(gè)錘子,你看到什么都是釘子,譯者補(bǔ)充).NoSQL這個(gè)術(shù)語起碼讓人們知道還有其他的選項(xiàng)可供選擇.但是,當(dāng)關(guān)系型數(shù)據(jù)庫是解決問題的最佳工具時(shí),我們并不是反關(guān)系型數(shù)據(jù)庫者;它的涵義應(yīng)該是“不僅僅有SQL(Not Only SQL)”而不是“不再有SQL(No SQL at all)”.

有關(guān)NoSQL名稱的一個(gè)真實(shí)的憂慮是,它是如此大的一個(gè)概念,以致于差異巨大的設(shè)計(jì)都可以涵蓋其中.如果在討論各種產(chǎn)品時(shí)沒有搞清楚這一點(diǎn),就會(huì)導(dǎo)致概念混亂.因此,我建議大家沿著下面三個(gè)維度來思考這些數(shù)據(jù)庫選項(xiàng): 可伸縮性(scalability)、數(shù)據(jù)模型與查詢模型(data and query model)以及持久化設(shè)計(jì)(persistence design).

我選擇了10種NoSQL數(shù)據(jù)庫作為示例.這不是一份詳盡的清單,但是這里討論的概念對(duì)于評(píng)估其他的NoSQL數(shù)據(jù)庫也至關(guān)重要.

可伸縮性(Scalability)

通過使用復(fù)制, 就可以輕易擴(kuò)展讀的規(guī)模,因此,每當(dāng)我在此文中談到規(guī)模伸縮(scaling),都是表示通過自動(dòng)分區(qū)將數(shù)據(jù)分布到多臺(tái)機(jī)器以擴(kuò)展寫的規(guī)模.我們將做這種事情的系統(tǒng)稱為“分布式數(shù)據(jù)庫”.它們包括Cassandra、HBaseRiak、Scalaris、Voldemort以及其他很多類似的系統(tǒng).如果你的寫容量或?qū)憯?shù)據(jù)大小已經(jīng)無法在一臺(tái)機(jī)器上進(jìn)行處理,如果你不想自己手工來管理分區(qū)的話,這些就是你的唯一選項(xiàng)了.(你不會(huì)這么做吧?)

人們使用分布式數(shù)據(jù)庫主要關(guān)注兩件事情: 1) 是否支持多個(gè)數(shù)據(jù)中心以及2) 能否在對(duì)應(yīng)用透明的前提下往正在運(yùn)行的集群中添加新機(jī)器的能力.

非分布式NoSQL數(shù)據(jù)庫包括CouchDB、MongoDBNeo4j、Redis以及Tokyo Cabinet.它們可作為分布式系統(tǒng)的持久層; MongoDB提供了受限制的數(shù)據(jù)分片(Sharding)功能,CouchDB也有一個(gè)獨(dú)立的Lounge項(xiàng)目來支持做類似的分片功能,Tokyo Cabinet可用作Voldemort的存儲(chǔ)引擎.

數(shù)據(jù)模型與查詢模型

NoSQL數(shù)據(jù)庫之間的數(shù)據(jù)模型與查詢API千差萬別.


(相關(guān)鏈接: Thriftmap/reduce viewsThriftCursorGraphCollectionNested hashesget/putget/putget/put)

部分重點(diǎn)內(nèi)容介紹:

Cassandra與HBase共同使用的ColumnFamily模型都是受到Google的Bigtable論文第2節(jié)的啟發(fā). (Cassandra丟棄了歷史版本,并增加了超級(jí)列(SuperColumn)的概念).在這兩個(gè)系統(tǒng)中,都有與你之前看到的關(guān)系型數(shù)據(jù)庫類似的行/列概念,但是此處的行是稀疏的行:你想要一行有多少列,一行就可以有多少列,這些列并不需要事先定義好.

鍵值(Key/value)模型是最簡(jiǎn)單也最容易實(shí)現(xiàn)的模型,但是,如果你僅想對(duì)值(Value)的一部分進(jìn)行查詢/更新時(shí),它的效率會(huì)比較低.要想在一個(gè)分布式的鍵值上,實(shí)現(xiàn)更加復(fù)雜的結(jié)構(gòu)也會(huì)非常困難.

文檔數(shù)據(jù)庫實(shí)際上是更高級(jí)的鍵/值(Key/Value)數(shù)據(jù)庫,允許在每個(gè)鍵上關(guān)聯(lián)嵌套的值.相對(duì)于每次簡(jiǎn)單地返回整個(gè)BLOB(二進(jìn)制大對(duì)象)來講,文檔數(shù)據(jù)庫支持更高效的查詢.

Neo4j擁有一個(gè)非常獨(dú)特的數(shù)據(jù)模型,它以節(jié)點(diǎn)與邊的形式在圖中存儲(chǔ)對(duì)象與關(guān)系.對(duì)于適合這個(gè)模型(例如,分層數(shù)據(jù))的查詢,它的性能可能會(huì)達(dá)到其替代選項(xiàng)的1000倍.

Scalaris的獨(dú)特之處在于,它可以提供跨越多個(gè)鍵的分布式事務(wù).(關(guān)于一致性與可用性的權(quán)衡的討論超出了本文的范圍,但是,在評(píng)估分布式系統(tǒng)時(shí),它也是需要記住的一方面.)

持久化設(shè)計(jì)

關(guān)于持久化設(shè)計(jì),我的意思是“數(shù)據(jù)在內(nèi)部是如何存儲(chǔ)的?”

持久化模型可以為我們提供大量關(guān)于這些數(shù)據(jù)庫適合處理多大工作負(fù)載的信息.

內(nèi)存數(shù)據(jù)庫非常非???單臺(tái)機(jī)器上的Redis可以處理100,000次操作/秒),但是無法處理超過可用內(nèi)存的數(shù)據(jù)集.持久性(Durability,數(shù)據(jù)不會(huì)由于服務(wù)器崩潰或停電而丟失)也是個(gè)問題; 在兩次刷新到磁盤的時(shí)間間隔內(nèi)預(yù)期數(shù)據(jù)丟失量可能非常大.Scalaris是我們此列表中唯一的內(nèi)存數(shù)據(jù)庫,它通過復(fù)制來解決持久性的問題,但是,由于它不支持跨越多個(gè)數(shù)據(jù)中心,因此,如果遇到類似電源故障一類的問題數(shù)據(jù)仍將非常脆弱.

在為了持久性寫入一個(gè)僅可追加的提交日志之后,Memtable與SSTable會(huì)緩沖內(nèi)存中的寫操作.在接受了足夠多的寫操作之后(Memtable達(dá)到一定的閾值),就會(huì)對(duì)memtable中的數(shù)據(jù)進(jìn)行排序,并一次性寫入到磁盤,寫入的文件就是一個(gè)“sstable.” 這樣它就可以提供接近于內(nèi)存處理的性能,因?yàn)樗簧婕叭魏螜z索操作,同時(shí)又可以避免純粹在內(nèi)存中的方法那樣遭遇持久性問題.(在前面引用的Bigtable論文的第5.3與5.4兩節(jié),以及論文日志結(jié)構(gòu)的合并樹(The Log-Structured merge-tree)中對(duì)此都有詳細(xì)的描述)

幾乎從有數(shù)據(jù)庫開始,B-樹就開始在數(shù)據(jù)庫中使用了.它們提供健壯的索引支持,但是在旋轉(zhuǎn)磁盤(仍然是目前最經(jīng)濟(jì)實(shí)用的存儲(chǔ)介質(zhì))上, 它的性能表現(xiàn)比較差,因?yàn)樗x寫任何內(nèi)容都會(huì)涉及到多次磁盤檢索.

CouchDB的僅可做追加操作的B-樹(Append-Only B-tree)是一個(gè)比較有趣的變體,它以限制CouchDB并發(fā)寫(one write at a time)的代價(jià)避免了其檢索的開銷.

結(jié)論

NoSQL運(yùn)動(dòng)在2009年取得了爆發(fā)性的效果,因?yàn)樵絹碓蕉嗟钠髽I(yè)需要處理大規(guī)模的數(shù)據(jù).Rackspace Cloud公司很高興在NoSQL運(yùn)動(dòng)扮演了一個(gè)較早期的角色,還會(huì)持續(xù)為Cassandra投入資源并支持與NoSQL East類似的活動(dòng).

可以到Google討論組找到與NoSQL相關(guān)的會(huì)議通知與討論.

 原文鏈接:http://www.dbthink.com/?p=458

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
詳解NoSQL數(shù)據(jù)庫使用實(shí)例
大數(shù)據(jù)與關(guān)系型數(shù)據(jù)庫水火不容嗎?
java開發(fā)者的大數(shù)據(jù)工具和框架
因事制宜 各展所長(zhǎng)
(good)NoSQL的必要性和效率、成本分析 | 博評(píng) - Sting的網(wǎng)經(jīng)
Cassandra簡(jiǎn)介
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服