真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nosql選擇,nosql有哪些

選擇NoSQL的幾種理由

1.Scalability

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到五峰網(wǎng)站設(shè)計(jì)與五峰網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋五峰地區(qū)。

有兩種理由尋求一種分布式數(shù)據(jù)庫(kù):

1)支持多個(gè)數(shù)據(jù)中心

2)可以透明在線為你的應(yīng)用增加新服務(wù)器。

非分布式的NoSQL數(shù)據(jù)庫(kù)包括有 CouchDB, MongoDB, Neo4j, Redis, and Tokyo Cabinet.

當(dāng)然他們可以為分布式的持久層架構(gòu)服務(wù),MongoDB 提供有限的劃分碎片sharding支持, 正如 CouchDB分離的Lounge項(xiàng)目一樣, Tokyo

Cabinet能用于作為Voldemort存儲(chǔ)引擎.

2.Data and Query Model

NoSQL 支持各種數(shù)據(jù)類型數(shù)據(jù)模型,圖片 視頻 等等

高性能 NoSQL

關(guān)系數(shù)據(jù)庫(kù)經(jīng)過(guò)幾十年的發(fā)展,已經(jīng)非常成熟,但同時(shí)也存在不足:

表結(jié)構(gòu)是強(qiáng)約束的,業(yè)務(wù)變更時(shí)擴(kuò)充很麻煩。

如果對(duì)大數(shù)據(jù)量的表進(jìn)行統(tǒng)計(jì)運(yùn)算,I/O會(huì)很高,因?yàn)榧词怪会槍?duì)某列進(jìn)行運(yùn)算,也需要將整行數(shù)據(jù)讀入內(nèi)存。

全文搜索只能使用 Like 進(jìn)行整表掃描,性能非常低。

針對(duì)這些不足,產(chǎn)生了不同的 NoSQL 解決方案,在某些場(chǎng)景下比關(guān)系數(shù)據(jù)庫(kù)更有優(yōu)勢(shì),但同時(shí)也犧牲了某些特性,所以不能片面的迷信某種方案,應(yīng)將其作為 SQL 的有利補(bǔ)充。

NoSQL != No SQL,而是:

NoSQL = Not Only SQL

典型的 NoSQL 方案分為4類:

Redis 是典型,其 value 是具體的數(shù)據(jù)結(jié)構(gòu),包括 string, hash, list, set, sorted set, bitmap, hyperloglog,常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。

以 list 為例:

LPOP key 是移除并返回隊(duì)列左邊的第一個(gè)元素。

如果用關(guān)系數(shù)據(jù)庫(kù)就比較麻煩了,需要操作:

Redis 的缺點(diǎn)主要體現(xiàn)在不支持完成的ACID事務(wù),只能保證隔離性和一致性,無(wú)法保證原子性和持久性。

最大的特點(diǎn)是 no-schema,無(wú)需在使用前定義字段,讀取一個(gè)不存在的字段也不會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。

特點(diǎn):

以電商為例,不同商品的屬性差異很大,如冰箱和電腦,這種差異性在關(guān)系數(shù)據(jù)庫(kù)中會(huì)有很大的麻煩,而使用文檔數(shù)據(jù)庫(kù)則非常方便。

文檔數(shù)據(jù)庫(kù)的主要缺點(diǎn):

關(guān)系數(shù)據(jù)庫(kù)是按行來(lái)存儲(chǔ)的,列式數(shù)據(jù)庫(kù)是按照列來(lái)存儲(chǔ)數(shù)據(jù)。

按行存儲(chǔ)的優(yōu)勢(shì):

在某些場(chǎng)景下,這些優(yōu)勢(shì)就成為劣勢(shì)了,例如,計(jì)算超重人員的數(shù)據(jù),只需要讀取體重這一列進(jìn)行統(tǒng)計(jì)即可,但行式存儲(chǔ)會(huì)將整行數(shù)據(jù)讀取到內(nèi)存中,很浪費(fèi)。

而列式存儲(chǔ)中,只需要讀取體重這列的數(shù)據(jù)即可,I/O 將大大減少。

除了節(jié)省I/O,列式存儲(chǔ)還有更高的壓縮比,可以節(jié)省存儲(chǔ)空間。普通行式數(shù)據(jù)庫(kù)的壓縮比在 3:1 到 5:1 左右,列式數(shù)據(jù)庫(kù)在 8:1 到 30:1,因?yàn)閱蝹€(gè)列的數(shù)據(jù)相似度更高。

列式存儲(chǔ)的隨機(jī)寫(xiě)效率遠(yuǎn)低于行式存儲(chǔ),因?yàn)樾惺酱鎯?chǔ)時(shí)同一行多個(gè)列都存儲(chǔ)在連續(xù)空間中,而列式存儲(chǔ)將不同列存儲(chǔ)在不連續(xù)的空間。

一般將列式存儲(chǔ)應(yīng)用在離線大數(shù)據(jù)分析統(tǒng)計(jì)場(chǎng)景,因?yàn)檫@時(shí)主要針對(duì)部分列進(jìn)行操作,而且數(shù)據(jù)寫(xiě)入后無(wú)須更新。

關(guān)系數(shù)據(jù)庫(kù)通過(guò)索引進(jìn)行快速查詢,但在全文搜索的情景下,索引就不夠了,因?yàn)椋?/p>

假設(shè)有一個(gè)交友網(wǎng)站,信息表如下:

需要匹配性別、地點(diǎn)、語(yǔ)言列。

需要匹配性別、地點(diǎn)、愛(ài)好列。

實(shí)際搜索中,各種排列組合非常多,關(guān)系數(shù)據(jù)庫(kù)很難支持。

全文搜索引擎是使用 倒排索引 技術(shù),建立單詞到文檔的索引,例如上面的表信息建立倒排索引:

所以特別適合根據(jù)關(guān)鍵詞來(lái)查詢文檔內(nèi)容。

上面介紹了幾種典型的NoSQL方案,及各自的適用場(chǎng)景和特點(diǎn),您可以根據(jù)實(shí)際需求進(jìn)行選擇。

為什么選擇NoSQL數(shù)據(jù)庫(kù)如此困難

傳統(tǒng)觀念中 NoSQL數(shù)據(jù)庫(kù)非常適合某些數(shù)據(jù)類型,如:非關(guān)系數(shù)據(jù)源。同時(shí),NoSQL被吹捧為最適合Web應(yīng)用程序的優(yōu)秀平臺(tái)。然而他適合大多數(shù)數(shù)據(jù),特別是web應(yīng)用程序的數(shù)據(jù)是相關(guān)型。那么,這是否可以給你一個(gè)堅(jiān)持使用RDMS的理由呢?也不一定,即使很困難,我們還是要做出選擇。

評(píng)估NoSQL是一個(gè)很茅盾的理論,一些人認(rèn)為,應(yīng)該將所有文檔數(shù)據(jù)存儲(chǔ)在一個(gè)文檔中,做鏈接代碼就是褻瀆神明。另外一部分人認(rèn)為,存儲(chǔ)應(yīng)用文檔,加入代碼,才是合理選擇。與此同時(shí),不同的數(shù)據(jù)庫(kù),需要在文檔中限制嵌套數(shù)據(jù)數(shù)量。有的人會(huì)鼓勵(lì)文檔引用。這是NoSQL數(shù)據(jù)模型的基本部分,也沒(méi)有一個(gè)明確的共識(shí)。

曾經(jīng)有一篇很熱的帖子"Why you should never use XYZ",我想,讀到這里,一定會(huì)有人搜索這篇文章。當(dāng)然,這種文章各式各樣,太過(guò)于籠統(tǒng)的標(biāo)題也沒(méi)什么幫助。毫無(wú)疑問(wèn),會(huì)有人會(huì)搜索這個(gè)文章,然后再找

到這個(gè)文章,進(jìn)一步深入,找到該文章的方法遠(yuǎn)比成功(理解問(wèn)題)的故事多。很難知道誰(shuí)提供了一個(gè)有效的技術(shù)問(wèn)題,誰(shuí)又誤讀了這個(gè)問(wèn)題(或者缺少證據(jù)證明其觀點(diǎn))。

有大量選擇,RDBMS的世界,選擇就很容易。你有4或5個(gè)目標(biāo),大家工作方式差不多,來(lái)選擇環(huán)境、預(yù)算支持的平臺(tái)。對(duì)于成熟的產(chǎn)品,風(fēng)險(xiǎn)比較小。 NoSQL的世界,有很多數(shù)據(jù)庫(kù)引擎功能選擇。每一個(gè)有自己的獨(dú)特優(yōu)勢(shì),也有致命弱點(diǎn)。所以選擇很難, NoSQL項(xiàng)目生命周期短,嘗試新項(xiàng)目或者流行項(xiàng)目也會(huì)有風(fēng)險(xiǎn)。上次,我的的項(xiàng)目是在 CouchDB上,而現(xiàn)在似乎停擺了。

做出這個(gè)痛苦決定的原因是,這可能是一個(gè)案例:你需要做一大堆工作,才能知道,你做出的選擇對(duì)與錯(cuò)。你可以實(shí)體化你的數(shù)據(jù)模型,了解他與系統(tǒng)的工作情況,但是,這只有你正真撞到南墻,才可以找到裂縫(答案)。以我為例,我建的應(yīng)用程序是關(guān)系數(shù)據(jù)庫(kù),移動(dòng)文件存儲(chǔ)的主要因素是,需要一個(gè)無(wú)模式設(shè)計(jì)來(lái)達(dá)到我的目標(biāo)。使用NoSQL 數(shù)據(jù)庫(kù)存儲(chǔ)關(guān)系型數(shù)據(jù)庫(kù)并不是我們所常說(shuō)的,雖然,這種事常常發(fā)生。

現(xiàn)在我在用 Couchbase 和 MongoDB,Mongo對(duì)我沒(méi)多大吸引力,不過(guò)鑒于他非常流行,對(duì)于引起來(lái)說(shuō),很有好處。當(dāng)然,很多都可以以同樣的方式流行。PHP很流行,因?yàn)樗囊子眯?,而不是因?yàn)樗芎谩?/p>

如何根據(jù)性能選擇內(nèi)存NoSQL數(shù)據(jù)庫(kù)

本文主要內(nèi)容是測(cè)試了不同NoSQL數(shù)據(jù)庫(kù)在測(cè)試工具YCSB中的表現(xiàn)。我們選取了3款流行的內(nèi)存(in-memory)數(shù)據(jù)庫(kù)管理系統(tǒng):Redis,Tarantool 以及 CouchBase,還有緩存系統(tǒng)Memchached。Memchached雖然不屬于數(shù)據(jù)庫(kù)管理系統(tǒng)但常作為快速存儲(chǔ)系統(tǒng)使用。

測(cè)試環(huán)境由4臺(tái)在Microsoft Azure Cloud中的虛擬機(jī)組成的計(jì)算機(jī)組組成。這些虛擬機(jī)同屬于一個(gè)數(shù)據(jù)中心。nosql-1和nosql-2用作測(cè)試Tarantool和CouchBase,nosql-3和nosql-4用作測(cè)試Redis,Azure Redis Cache 以及 Memcached。這些機(jī)器都安裝和配置了相應(yīng)數(shù)據(jù)庫(kù)和測(cè)試項(xiàng)目。虛擬機(jī)的配置為4核A3 CPU,7GB RAM,120GB硬盤(pán)。

數(shù)據(jù)庫(kù)及設(shè)置

內(nèi)存數(shù)據(jù)庫(kù)管理系統(tǒng)會(huì)存儲(chǔ)所有在主內(nèi)存中的數(shù)據(jù)并在磁碟上進(jìn)行持續(xù)更新操作;透過(guò)日志記錄每個(gè)數(shù)據(jù)的修改以確保連貫性。由于是以append-only方式進(jìn)行日志寫(xiě)入,因此它很少遇到瓶頸問(wèn)題;讀取/寫(xiě)入都不會(huì)造成頻繁的磁碟頭移動(dòng)。

Redis在2009推出,目前的最新版本是3.0.5。我們這里使用的版本是3.0.4,以append-only(只附加)方式進(jìn)行數(shù)據(jù)管理,與其配合使用的是Microsoft Azure Redis Cache工具。

Tarantool是一款開(kāi)源NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng)。我們使用的是Tarantool 1.6.7-126-gb35aff9,日志采用write-ahead(先寫(xiě))模式。Memcached是一款分布式內(nèi)存緩存系統(tǒng),這里使用是Memcached 1.4.14-0ubuntu9。

Couchbase Server是開(kāi)源分布式NoSQL面向文檔數(shù)據(jù)庫(kù),這里使用的版本是Couchbase 4.0.0-4047-1。

YCSB測(cè)試工具

Yahoo! Cloud Serving Benchmark(YCSB)是功能強(qiáng)大的NoSQL數(shù)據(jù)庫(kù)性能測(cè)試工具,它提供了6種主要的負(fù)載工作類型,以字母A到F來(lái)區(qū)分。

負(fù)載A負(fù)責(zé)更新操作,極值是50/50的讀寫(xiě)操作,如用于進(jìn)行新近操作記錄。負(fù)載B負(fù)責(zé)讀取操作,極值是95/5的讀寫(xiě)操作,如用于進(jìn)行圖片標(biāo)簽管理,多進(jìn)行標(biāo)簽讀取操作。負(fù)載C負(fù)載100%的讀取操作,如用于進(jìn)行用戶屬性獲取。負(fù)載D以先進(jìn)先出方式進(jìn)行插入操作,如用戶進(jìn)行最新數(shù)據(jù)讀取。負(fù)載E負(fù)責(zé)小范圍記錄讀取而不是單個(gè)記錄讀取,如線程會(huì)話。負(fù)載F負(fù)責(zé)記錄的讀取,修改和寫(xiě)入,如用戶信息管理。

我們對(duì)配置文件作了兩處參數(shù)修改:數(shù)據(jù)條目recordcount設(shè)為200000,操作條目operationcount設(shè)為5000000。YCSB是多線程工具,我們將以8, 16, 32, 64, 128 及256 線程來(lái)進(jìn)行測(cè)試。詳細(xì)的測(cè)試腳本請(qǐng)點(diǎn)擊這里進(jìn)行下載。

下列測(cè)試結(jié)果圖以顏色進(jìn)行測(cè)試對(duì)象區(qū)分,

Tarantool (HASH) (藍(lán))

Tarantool (TREE)(淺藍(lán))

Redis (紅)

Azure Redis Cache (橙)

Memcached (綠)

CouchBase(黑)

更多圖片請(qǐng)點(diǎn)擊[這里]查看。

結(jié)論

Tarantool在所有負(fù)載類型測(cè)試中皆取得了最優(yōu)成績(jī)。它創(chuàng)建了一個(gè)無(wú)鎖內(nèi)存引擎,以協(xié)同多任務(wù)方式進(jìn)行操作而不是互斥或并行處理方式。根據(jù)以下性能圖表現(xiàn),我們的結(jié)論是Tarantool的高吞吐量處理是其最大優(yōu)勢(shì)之一。因此在多數(shù)場(chǎng)合下,Tarantool是用戶的最佳選擇。

如何選擇NoSQL數(shù)據(jù)庫(kù)

NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的

SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。

NoSQL(NoSQL

= Not Only SQL

),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)

據(jù)存儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。

從這一新興技術(shù)中選擇一款正確的NoSQL數(shù)據(jù)庫(kù)是非常具有挑戰(zhàn)性的。比一下網(wǎng)建議在選擇時(shí)考慮以下因素:

并發(fā)控制

發(fā)控制指的是當(dāng)多個(gè)用戶同時(shí)更新運(yùn)行時(shí),用于保護(hù)數(shù)據(jù)庫(kù)完整性的各種技術(shù)。并發(fā)機(jī)制不正確可能導(dǎo)致臟讀、幻讀和不可重復(fù)讀等此類問(wèn)題。并發(fā)控制的目的是保

證一個(gè)用戶的工作不會(huì)對(duì)另一個(gè)用戶的工作產(chǎn)生不合理的影響。在某些情況下,這些措施保證了當(dāng)用戶和其他用戶一起操作時(shí),所得的結(jié)果和她單獨(dú)操作時(shí)的結(jié)果是

一樣的。在另一些情況下,這表示用戶的工作按預(yù)定的方式受其他用戶的影響。

封鎖

就是事務(wù)T在對(duì)某個(gè)數(shù)據(jù)對(duì)象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖。加鎖后事務(wù)T就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對(duì)象。

封鎖是一次只允許一個(gè)用戶讀取或修改的一種機(jī)制,是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)。

MVCC

Multi-Version Concurrency Control多版本并發(fā)控制,維持一個(gè)數(shù)據(jù)的多個(gè)版本使讀寫(xiě)操作沒(méi)有沖突。MVCC優(yōu)化了數(shù)據(jù)庫(kù)并發(fā)系統(tǒng),使系統(tǒng)在有大量并發(fā)用戶時(shí)得到最高的性能,并且可以不用關(guān)閉服務(wù)器就直接進(jìn)行熱備份。

ACID

數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素的縮寫(xiě)。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久

性(Durability)。一個(gè)支持事務(wù)(Transaction)的數(shù)據(jù)庫(kù)系統(tǒng),必需要具有這四種特性,否則在事務(wù)過(guò)程(Transaction

processing)當(dāng)中無(wú)法保證數(shù)據(jù)的正確性,交易過(guò)程極可能達(dá)不到交易方的要求。

None

一些系統(tǒng)不提供原子性。

鏡像

數(shù)據(jù)庫(kù)鏡像是DBMS根據(jù)DBA的要求,自動(dòng)把整個(gè)數(shù)據(jù)庫(kù)或其中的關(guān)鍵數(shù)據(jù)復(fù)制到另一個(gè)磁盤(pán)上,每當(dāng)主數(shù)據(jù)庫(kù)更新時(shí),DBMS會(huì)自動(dòng)把更新后的數(shù)據(jù)復(fù)制過(guò)去,即DBMS自動(dòng)保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性。

鏡像分為同步和異步。

數(shù)據(jù)存儲(chǔ)

指的是數(shù)據(jù)的物理特性怎樣被存儲(chǔ)在數(shù)據(jù)庫(kù)中。

磁盤(pán) 數(shù)據(jù)被存儲(chǔ)在硬盤(pán)驅(qū)動(dòng)器里;

GFS或谷歌文件系統(tǒng)是一個(gè)由谷歌開(kāi)發(fā)的專有的分布式文件系統(tǒng);

Hadoop是Apache軟件框架,免費(fèi)許可下支持?jǐn)?shù)據(jù)密集型分布式應(yīng)用程序;

RAM隨機(jī)存儲(chǔ)器;

插件 可以添加外部插件;

Amazon S3通過(guò)Web服務(wù)接口提供存儲(chǔ);

BDB:BDB

全稱是 “Berkeley DB”,它是MySQL具有事務(wù)能力的表類型,由Sleepycat

Software開(kāi)發(fā)。BDB表類型提供了MySQL用戶長(zhǎng)久期盼的功能,即事務(wù)控制能力。在任何RDBMS中,事務(wù)控制能力都是一種極其重要和寶貴的功

能。事務(wù)控制能力使得我們能夠確保一組命令確實(shí)已經(jīng)全部執(zhí)行成功,或者確保當(dāng)任何一個(gè)命令出現(xiàn)錯(cuò)誤時(shí)所有命令的執(zhí)行結(jié)果均被退回。

實(shí)現(xiàn)語(yǔ)言

實(shí)現(xiàn)語(yǔ)言會(huì)影響數(shù)據(jù)庫(kù)的發(fā)展速度。典型的NoSQL數(shù)據(jù)庫(kù)是用低級(jí)語(yǔ)言如C / C + +編寫(xiě)的。另一方面,那些更高層次的語(yǔ)言如Java,使自定義更容易。

實(shí)現(xiàn)語(yǔ)言有:C, C++, Erlang, Java, Python

特性

考慮下列哪一個(gè)特點(diǎn)對(duì)你的數(shù)據(jù)庫(kù)是最重要的:

持久性

可用性

一致性

分區(qū)容忍性

證書(shū)類型

下面這些許可證是一個(gè)不同的開(kāi)放源碼許可的形式:

GPL:通用公共許可證

BSD:伯克利軟件分發(fā)

MPL:Mozilla公共許可證

EPL:Eclipse公共許可證

IDPL:最初的開(kāi)發(fā)者的公共許可證

LGPL:較寬松通用公共許可證

存儲(chǔ)類型

存儲(chǔ)類型是NoSQL數(shù)據(jù)庫(kù)最大的不同,是決定使用哪款數(shù)據(jù)庫(kù)的一個(gè)首要指標(biāo)。

關(guān)鍵字:支持get、put和刪除操作

按列存儲(chǔ):相對(duì)于傳統(tǒng)的按行存儲(chǔ),數(shù)據(jù)集成容易多了

面向文件系統(tǒng):存儲(chǔ)像是JSON或XML這樣的結(jié)構(gòu)化文件,很容易就能從面向?qū)ο筌浖蝎@取數(shù)據(jù)。


網(wǎng)站名稱:nosql選擇,nosql有哪些
標(biāo)題URL:http://weahome.cn/article/dsspdjg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部