成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Oracle NoSQL Database

數據庫 Oracle
本文中,作者對甲骨文最新發布的Oracle NoSQL Database從數據模型、分區與架構、操作、數據一致性等方面進行了分析。

近日Oracle提供了不久前公布的NoSQL數據庫的下載,目前只有企業版,開源的社區版還沒提供,也就是說還看不到源碼。不過根據文檔也能大致了解這個NoSQL數據庫怎么樣。快速看了看,總結如下。

一、數據模型

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

記錄還有版本號,每次更新都產生唯一的新版本號。在put/delete/get操作時,都可以指定要版本號,其中get時用于指定要讀的版本,而 put/delete指定版本號是指當記錄的最新版本還是指定版本時才更新,用于實現原子Compare-and-Swap語義。版本號應該至少是在一個 partition內部是全局唯一的。

二、分區與架構

兩層架構,客戶端直接到存儲節點。核心架構是Replication Node和Replication Group,一個Replication Group包含一個可寫的Master Replication Node和多個只讀的replica。master失敗時會failover到某replica。現在發布的版本暫時還不能動態調整存儲節點個數,以后會加。

數據按major key hash分區到partition。這樣擁有相同的major key僅僅minor key不同的多條記錄一定在同一partition,可以提供高效的多記錄操作,且系統還支持原子性的操作這樣的多條記錄。一個Replication Group一般負責多個partition,一個存儲節點一般負責一個Replication Node,如果調整存儲節點個數,則以partition為單位來移動數據。為方便以后scale-out,應該一開始就多一些partition。

系統底層用的是Berkeley DB Java Edition,用Btree數據結構。緩存包含Berkeley DB的緩存和文件系統緩存,不用DIRECT_IO,文檔建議Berkeley DB緩存用于容納Btree的內部節點,葉節點用文件系統緩存。另外也提供單機版稱為KVLite。

三、操作

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

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

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

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

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

四、數據一致性

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

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

五、系統管理及其它

系統提供命令行或WEB界面的管理工具,管理比較方便。可以創建snapshot,snapshot只在partition內部一致,不保證全局一致。可以從snapshot恢復。提供將NoSQL Database數據導入到Hadoop功能。客戶端驅動是jar包。

六、小結與評價

優點:

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

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

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

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

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

【編輯推薦】

  1. Oracle發布NoSQL數據庫
  2. 微軟進軍NoSQL 發布Trinity數據庫
  3. 微軟研究人員:NoSQL需要標準化
  4. MySQL中的NoSQL插件
  5. SQL與NoSQL——MySQL與NoSQL的融合
責任編輯:艾婧 來源: wangyuanzju的博客
相關推薦

2011-11-21 11:19:19

Oracle NoSQ

2009-07-15 10:43:37

MyEclipse D

2013-05-03 00:41:57

大數據NoSQL

2010-04-13 17:10:59

Oracle Data

2010-10-21 08:45:19

NoSQL

2010-04-14 14:14:42

Oracle用戶解鎖

2011-10-09 09:38:03

OracleNoSQL

2009-06-09 13:21:32

Oracle Data實現

2009-07-17 16:49:18

iBATIS XML配

2010-04-16 14:39:54

ORACLE鎖

2010-04-16 12:57:20

Spatial數據加密

2013-03-26 10:33:50

SaaSNoSQLOracle

2014-04-09 09:55:46

Oracle NoSQ

2014-06-12 08:48:38

Oracle數據庫

2011-08-09 14:54:01

OracleDATABASE LI

2010-04-16 16:12:51

jdbc分頁

2009-07-22 08:54:32

Oracle恢復管理器

2009-03-16 13:30:55

腳本數據字典Oracle
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品久久久久久久久久入口 | 中文字幕av在线 | 午夜专区 | 精品久久国产 | 国产精久久久久久久妇剪断 | 逼逼视频 | 久久久亚洲一区 | 亚洲一区二区三区四区五区中文 | 99精品国产一区二区三区 | www国产成人免费观看视频,深夜成人网 | 懂色一区二区三区免费观看 | 亚洲精品国产偷自在线观看 | 亚洲成av人片在线观看无码 | 本地毛片 | 久免费视频 | 美女天天操 | 亚洲国产激情 | 国产网站在线免费观看 | 久久青| 狠狠操网站 | 久久久精品一区二区三区 | 亚洲精品一区国产精品 | 一区二区三区在线看 | 久久久九九 | 久久精品国产99国产精品亚洲 | 欧美激情在线播放 | 久久久久久国产一区二区三区 | 亚洲综合大片69999 | 色伊人久久 | 日本精品一区二区三区视频 | 亚洲欧美久久 | 精品少妇一区二区三区日产乱码 | 日日精品 | 毛片一区二区三区 | 伊人网在线综合 | 久久免费看 | 亚洲精品国产综合区久久久久久久 | 欧洲精品久久久久毛片完整版 | 久久天天躁狠狠躁夜夜躁2014 | 亚洲精品视频一区二区三区 | 国产精品久久久久久久久久久久 |