上海涛德顾问学院

查看: 5488|回复: 0

Oracle Nosql入门培训教材 涛德顾问学院独家推出

[复制链接]

88

主题

0

好友

451

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-4-28 22:16:53 |显示全部楼层
ORACLE Nosql KVstore的体系结构,涛德顾问学院中国唯一独家推出。 作者 唐涛(sean tang :http://www.weibo.com/tangtao1980


Oracle Nosql 架构

Oracle Nosql 架构

ORACLE Nosql的数据库我们叫做KVStore。KVStore由一系列storage nodes存储节点组成,这些存储节点可以分布在不同的数据中心 data center 。
一个storage node就是一个有自己存储的服务器,或者是一个PC机。
一个storage node可以有一个或者多个replication nodes(复制节点),所以上面的图可以理解为两种情况
第一种:是一个storage node 上面有3个replication nodes。
第二种:3个storage node ,每个storage node有一个replication node。
oraclebi 推荐storage node上只有一个replication node。

Replication node 又分为两类 1是master node (主复制节点) 2 是replica node(冗余节点)。master node复制写入并同步数据到replica node,replica node负责读取,有时候我们也认为master node是一种特殊类型的replica node。
Master node 以及存放它的冗余的其他 replica node 我们合在一起叫replication group复制组。上图就表示一个KVStore中含有一个复制组,这个组里面有1个master node,2个replica node
Nosql与RDBMS数据库最大的区别主要它的数据是以 key-value pairs(键-值对)的形式存在。key是用于定位搜索,value 用于存放key对应的数据,这个概念很像ORACLE 关系型数据库的 IOT表。 这些key-value pairs被Nosql均匀的分布在多个Partition中。如上图中的P1,P2,P3,P4。Partition是Nosql自动创建的逻辑存储对象,相同的key的数据一定在同一个partition中,但是同一个partition可以包含多个key的数据。

第二讲:
在前面Oracle Nosql第一讲里,讲述了一个分布式的Nosql体系结构,接下来将讲述的如何配置和安装一个Nosql。需要注意的是本章节安装的KVLite ,它是一个简化版的NoSQL 。相当于我们整个环境只有一个storage node,上面只有一个master。

KVLite的作用可以帮我们快速熟悉NoSql管理界面,和开发接口。也可以帮助开发人员迅速搭建开发环境。
一 Linux配置
在本课程中都是以Oracle Enterprise Linux为操作系统)
1 useradd oracle
添加用户

2 passwd oracle
修改oracle密码

3 安装Java JDK 并在oracle用户的 ~/.bash_profle 配置JAVA_HOME环境变量
例如我的oracle用户的 .bash_profile文件中有如下记录
export JAVA_HOME=/usr/java/jdk1.6.0_37
export PATH=$JAVA_HOME/bin:$PATH

二 安装KVLite
KVLite的安装非常简单,解压缩安装介质即可
1首先你需要到otn.oracle.com下载Nosql的软件 例如 kv-ee-1.2.123.zip
2然后copy你下载的软件到一个Linux系统的/home/oracle目录(。
3 以oracle用户登录你的操作系统系统解压zip文件
unzip kv-ee-1.2.123.zip


三运行KVLite

1 cd /home/oracle/kvstore-1.2.123
2  java -jar lib/kvstore-1.2.123.jar kvlite

如果成功运行 你会收到提示 kvlite的5000端口开启了监听。

四 测试安装
java -jar lib/kvstore-1.2.123.jar ping –host localhost –port
5000
如果看到有 running的提示信息表示你已成功运行kvlite。

接下来的NoSql入门系统第三讲oraclebi将为大家介绍Nosql的开发接口。


NoSql 入门第三讲

Nosql 提供一个 KVStore handle的对象来访问 Oracle NoSQL数据库;也可以用来打开和关闭一个已经运行的store;当你在操作store(DML ,Select)是必须要使用的一个对象。

要创建一个 KVStore handle, 我们需要使用 KVStoreFactory 和KVStoreConfig java class。我们可以先创建一个 class KVStoreConfig 的对象。然后把这个对象传递到 KVStoreFactory class,由KVStoreFactory 返回一个 KVStore handle对象。

流程如下图:
Kvstoreconfig的结构如下

Kvstoreconfig的结构

Kvstoreconfig的结构

public KVStoreConfig( string storeName, string helperHostPort)
其中的 storeName 是传入vstore名字,
例如http://www.oraclebi.net的Nosql第二讲中我们配置了一个单节点的kvstore ,它的名字叫”kvlite” 。helperHostPort 表示 主机名和端口 例如如果是本机访问就是 “localhost:5000”。
再例如:
KVStoreConfig kconfig = new KVStoreConfig("oraclebi.net","localhost:5000");
KVStorefactory 是一个static class. 我们用它的 getStore method,返回 the KVStore handle。其结构如下

public static KVStore getStore(KVStoreConfig config)
所以这个method的参数是我们上一步的实现的 kconfig 对象。

例如具体代码为:
KVStore kvstore = KVStoreFactory.getStore(kconfig);
有了这个kvstore句柄我们就可以做各种Nosql DML等动作了。
在oraclebi的下一讲里,我们将讲述如何做insert record的动作,同时这也是Nosql入门的教程的最后一讲。

第四讲
1 首先我们需要创建的是record中的Key的Major部分也叫Major-Key,如果Key 有相同的Major,那么这些有相同Major的Key以及它所对应的Value将会被Nosql放到相同的Partition。有点列式数据库的味道。只不过这个列就是Major部分。
为了实现这个功能我们先创建一个 String 类型的ArrayList
接着把需要插入Nosql的key 放入到这个ArrayList
例如:
List majorPath = new ArrayList();
majorPath.add("sean");
majorPath.add("tang");
2 接着我们创建Key 的 Minor部分(也叫Minor-key)。,如果你的一个record 有多个Minor key 那么可以向上面的Major Key 一样定义一个ArrayList来存放。如果Minor key 只有一个则用String 变量来存放也可以。
例如:我们定义了一个Minor-key 叫info
String minorComponent;
minorComponent = "info";
3 接着我们需要利用Key class 的 createKey 方法创建一个Record Key 对象名字叫做mykey。
Key myKey = Key.createKey(majorPath,minorComponent);
4 然后我们用Key class 的 createValue 方法 创建一个Value对象,名字叫myValue
例如:
List data = new ArrayList();
data.add("OU Principal Instructor ");
data.add("http://www.weibo.com/u/3236407900");
Value myValue = Value.createValue(data.getBytes());
到目前为止我们已经构建了一个完整的位于内存的record 。这个Record 包含:
Major-Key 有2个 sean tang。
Minor-key 有一个 info
value为:
{
OU Principal Instructor http://www.weibo.com/u/3236407900
}
5 接下来我们要把这条记录插入到Nosql数据中
我们将调用一个叫kvstore 的 handle 对数据做插入处理。kvstore handle的创建方法请查看Nosql第三讲的内容。
import java.util.ArrayList;
import oracle.kv.Key;
import oracle.kv.Value;
import oracle.kv
public class WriteRecord
{
//Create Handle
//Create Record
myStore.put(myKey,myValue);
}
说明:这个专题里我们用了一种简单方法完成了插入,现实中还要考虑异常处理。比如如果已经存在相同的key在Nosql 数据库中等场景,Oracle也提供了多种插入方法,和异常处理方法需要大家查询联机文档。还有record还需要取出给用户读取,这就需要用到get() ,和 multiGet() 等多种方法和接口。限于篇幅我们就不在赘述。大致处理方式与本章写record数据类似。
涛德顾问学院
Oracle OCM 11g认证培训Oracle 12c OCP 全国独家推出
大数据,BI商业智能,数据库,ADF,中间件,EBS,ODI,ETL全产业链培训服务提供商
回复

使用道具 举报

上海涛德顾问学院 ( 沪ICP备14006824号 )  

GMT+8, 2018-12-15 02:17 , Processed in 0.225247 second(s), 28 queries , Gzip On.

Top Data World

回顶部