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

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

新聞中心

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

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

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

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

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

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

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

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

數(shù)據(jù)按major key hash分區(qū)到partition。這樣擁有相同的major key僅僅minor key不同的多條記錄一定在同一partition,可以提供高效的多記錄操作,且系統(tǒng)還支持原子性的操作這樣的多條記錄。一個Replication Group一般負責多個partition,一個存儲節(jié)點一般負責一個Replication Node,如果調(diào)整存儲節(jié)點個數(shù),則以partition為單位來移動數(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é)點,葉節(jié)點用文件系統(tǒng)緩存。另外也提供單機版稱為KVLite。

三、操作

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

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

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

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

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

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

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

就更新而言,可以指定兩方面的策略。一是master要不要等各個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)部一致,不保證全局一致??梢詮膕napshot恢復(fù)。提供將NoSQL Database數(shù)據(jù)導(dǎo)入到Hadoop功能??蛻舳蓑?qū)動是jar包。

六、小結(jié)與評價

優(yōu)點:

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

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

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

當前版本最主要的問題是不能加存儲節(jié)點,不過相信這個問題不久后會被解決。

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


網(wǎng)頁名稱:淺析OracleNoSQLDatabase
URL鏈接:http://www.5511xx.com/article/cccccsi.html