日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺析OracleNoSQLDatabase

近日Oracle提供了不久前公布的NoSQL數(shù)據(jù)庫的下載,目前只有企業(yè)版,開源的社區(qū)版還沒提供,也就是說還看不到源碼。不過根據(jù)文檔也能大致了解這個(gè)NoSQL數(shù)據(jù)庫怎么樣??焖倏戳丝矗偨Y(jié)如下。

興安網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,興安網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為興安1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的興安做網(wǎng)站的公司定做!

一、數(shù)據(jù)模型

key包含一到多個(gè)major key component和零到多個(gè)minor key component,組合起來唯一標(biāo)準(zhǔn)一條記錄。key component為Java String,按對(duì)應(yīng)encoding排序。value則是字節(jié)流。key和value的大小都沒有嚴(yán)格限制。

記錄還有版本號(hào),每次更新都產(chǎn)生唯一的新版本號(hào)。在put/delete/get操作時(shí),都可以指定要版本號(hào),其中g(shù)et時(shí)用于指定要讀的版本,而 put/delete指定版本號(hào)是指當(dāng)記錄的最新版本還是指定版本時(shí)才更新,用于實(shí)現(xiàn)原子Compare-and-Swap語義。版本號(hào)應(yīng)該至少是在一個(gè) partition內(nèi)部是全局唯一的。

二、分區(qū)與架構(gòu)

兩層架構(gòu),客戶端直接到存儲(chǔ)節(jié)點(diǎn)。核心架構(gòu)是Replication Node和Replication Group,一個(gè)Replication Group包含一個(gè)可寫的Master Replication Node和多個(gè)只讀的replica。master失敗時(shí)會(huì)failover到某replica?,F(xiàn)在發(fā)布的版本暫時(shí)還不能動(dòng)態(tài)調(diào)整存儲(chǔ)節(jié)點(diǎn)個(gè)數(shù),以后會(huì)加。

數(shù)據(jù)按major key hash分區(qū)到partition。這樣擁有相同的major key僅僅minor key不同的多條記錄一定在同一partition,可以提供高效的多記錄操作,且系統(tǒng)還支持原子性的操作這樣的多條記錄。一個(gè)Replication Group一般負(fù)責(zé)多個(gè)partition,一個(gè)存儲(chǔ)節(jié)點(diǎn)一般負(fù)責(zé)一個(gè)Replication Node,如果調(diào)整存儲(chǔ)節(jié)點(diǎn)個(gè)數(shù),則以partition為單位來移動(dòng)數(shù)據(jù)。為方便以后scale-out,應(yīng)該一開始就多一些partition。

系統(tǒng)底層用的是Berkeley DB Java Edition,用Btree數(shù)據(jù)結(jié)構(gòu)。緩存包含Berkeley DB的緩存和文件系統(tǒng)緩存,不用DIRECT_IO,文檔建議Berkeley DB緩存用于容納Btree的內(nèi)部節(jié)點(diǎn),葉節(jié)點(diǎn)用文件系統(tǒng)緩存。另外也提供單機(jī)版稱為KVLite。

三、操作

Oracle NoSQL提供的操作比較豐富,主要包括:

1、用于插入或更新記錄的put類操作,包括put/putIfAbsent/putIfPresent/putIfVersion,都要指定一個(gè)完整的Key。用途顧名思義就不說了,稍提一點(diǎn)是putIfVersion功能提供了Compare-and-Swap,在處理并發(fā)時(shí)很有用

2、用于刪除記錄的delete類操作,包括delete/deleteIfVersion/multiDelete。前兩者要指定完整Key,用途顧名思義。說一下multiDelete,這個(gè)操作最多可以指定三個(gè)參數(shù),一是必須指定完整的major key,二是可以指定一個(gè)由第一個(gè)minor key的上下限構(gòu)成的KeyRange,三是可以指定是刪除子節(jié)點(diǎn)/子孫節(jié)點(diǎn)/父節(jié)點(diǎn)和子節(jié)點(diǎn)/父節(jié)點(diǎn)和子孫節(jié)點(diǎn)等多種Depth模式。

3、用于讀取記錄的get類操作,包括get/multiGet/multiGetIterator/storeIterator。multiGet和 multiDelete一樣可以指定KeyRange和Depth。multiGetIterator用于批量取一個(gè)完整major key下的大量記錄,防止占內(nèi)存過多,可以指定遍歷方向,不保證數(shù)據(jù)是某時(shí)刻的一致視圖。storeIterator用于遍歷不完整major key下的大量記錄,甚至遍歷所有記錄。

4、用于批量原子更新多條記錄的execute操作。系統(tǒng)保證這批操作的原子性,限制是操作的記錄必須都擁有相同的major key,且同一條記錄不能操作多次。

四、數(shù)據(jù)一致性

Oracle NoSQL的數(shù)據(jù)一致性比較靈活精細(xì)。就讀取而言,可以指定只從master讀、不管replica是否落后都可以從replica讀、只在 replica落后master時(shí)間在某閾值之內(nèi)時(shí)才能從replica讀、只在replica的版本號(hào)不小于某指定版本號(hào)時(shí)才讀。指定版本號(hào)的讀一致性可以用于實(shí)現(xiàn)read-your-own-write形式的一致性,即保證自己能讀到自己剛寫的數(shù)據(jù)。

就更新而言,可以指定兩方面的策略。一是master要不要等各個(gè)replica的應(yīng)答,這里可以選要所有replica應(yīng)答、要大多數(shù)replica應(yīng)答和不等replica應(yīng)答等3 種。二是數(shù)據(jù)要不要持久化到磁盤,這里可以選不要(更新到內(nèi)存就可以了)、寫磁盤但不SYNC、寫磁盤且要SYNC等3種。持久化策略可以指定 master和replica分別指定。根據(jù)文檔看似乎沒有用到2PC。

五、系統(tǒng)管理及其它

系統(tǒng)提供命令行或WEB界面的管理工具,管理比較方便??梢詣?chuàng)建snapshot,snapshot只在partition內(nèi)部一致,不保證全局一致。可以從snapshot恢復(fù)。提供將NoSQL Database數(shù)據(jù)導(dǎo)入到Hadoop功能??蛻舳蓑?qū)動(dòng)是jar包。

六、小結(jié)與評(píng)價(jià)

優(yōu)點(diǎn):

1、數(shù)據(jù)模型和操作強(qiáng)大。通過由多個(gè)key component來構(gòu)成key并且設(shè)計(jì)操作時(shí)加以支持,Oracle NoSQL實(shí)際上不再是純平面的Key-Value模型,而經(jīng)常呈現(xiàn)為一種樹形模型。多一個(gè)key component后綴的記錄可以看作是子節(jié)點(diǎn)。系統(tǒng)提供了許多批量操作一個(gè)子樹的功能,對(duì)比關(guān)系模式可以看出這解決了一部分JOIN問題,提高了開發(fā)效率。

2、數(shù)據(jù)一致性靈活精細(xì)。讀取和更新都提供了很多一致性選項(xiàng),可以實(shí)現(xiàn)不同的性能和一致性折衷。此外通過版本號(hào),可以支持Compare-and-Swap、Read-your-own-write等語義,為實(shí)現(xiàn)并發(fā)正確性提供了便利。

3、支持多記錄原子性操作。

當(dāng)前版本最主要的問題是不能加存儲(chǔ)節(jié)點(diǎn),不過相信這個(gè)問題不久后會(huì)被解決。

原文出處:http://wangyuanzju.blog.163.com/blog/static/130292011919114541710/


分享文章:淺析OracleNoSQLDatabase
文章位置:http://m.5511xx.com/article/cccccsi.html