1. 简介
Oracle NoSQL数据库是一款基于Berkeley DB Java Edition构建的,分布式的,跨数据中心的Key-Value数据库。它是一款高性能,和极短的响应时间(毫秒级)的云数据库方案。Oracle NoSQL数据库使客户能够轻松地管理大量的,动态模式 (dynamic schemas) 的数据,如Web日志数据,传感器和智能仪表的数据,用户个性化数据,和社交网络的数据。 Oracle NoSQL DB是采用Oracle Berkeley DB Java Edition做底层存储引擎,但我们在其之上添加了更多的基础架构层的功能,如: 数据分布 动态分区 负载平衡 监控和管理 可预见的延迟 多节点备份 举例来说,Oracle NoSQL DB是汽车的话,Oracle BDB则算汽车引擎。 Oracle NoSQL数据库会有商业版和社区版两个版本。当前发行的第一个版本中(v1.1.100),两者没有功能上的区别(商业版有Oracle的支持服务)。目前商业版本已经开放下载:http://t.cn/SvbsUm 它包括数据库产品本身的Java类库,第三方类库,示例代码,文档,启动脚本和基于Google GWT实现的管理功能。
2. Oracle NoSQL数据库在企业部署的示例图
如下图所示,在当今的企业部署中,Oracle NoSQL数据库可以和传统的关系型数据库混合搭配提供服务。比如,NoSQL数据库可以运行有实时要求的、非结构化的应用;关系型数据库可以用来执行查 询分析、交易结算等功能。举个在线电子商务的应用来说,和用户相关的注册信息、个人头像、评论、爱好、购物车、网站的静态图片、商品等信息可以存在 Oracle NoSQL数据库;而当用户选定进行结算时,则可以通过Oracle关系型数据库进行支付等操作。
Oracle NoSQL数据库分客户端和服务端2个部分。客户端提供给应用程序的API调用(如Put,Get,Delete,Multi Put/Get/Delete,Iterator等),以及服务端的一些状态和统计信息(如数据分区、机器负载等)。目前客户端仅提供Java接口,暂时不支持其他语言。
而服务端则具体用来管理数据,提供数据库操作、并发控制、一致性和扩展性、管理功能等。在下图中,每个Storage Node代表着数据中心中的一台物理或者虚拟的机器(VM),这些机器可以是跨数据中心的。而针对整个NoSQL数据库的管理进程可以部署在某个Storage Node上。我们提供命令行和web两种管理接口。
http://www.bdbchina.com/wp-content/uploads/2011/12/deploy.png
Oracle NoSQL数据库在企业部署示例图
3. 在多个节点上部署NoSQL数据库
目前Oracle NoSQL数据库只支持在Linux或者Solaris (10及以上)机器上进行部署,这是由于部署及管理的脚本是bash的。如果你要在Windows上进行部署,你可以有2种办法:使用 Cygwin,MingGW等类Linux工具;或者将NoSQL部署脚本转换成Windows的bat脚本 (可参考 https://forums.oracle.com/forums/thread.jspa?threadID=2307203&tstart=0 )。你也可以尝试在类Linux的系统(如Unix)上实验部署Oracle NoSQL数据库。为了性能考虑,我们不推荐你使用虚拟机。
3.1 前期准备
JDK 1.6.0 u25或以上。
一台或者多台Linux或者Solaris (10及以上)机器。
保证机器之间时间同步。你可以使用ntp等工具。
Oracle NoSQL数据库发布包,如kv-1.1.100.zip。
3.2 安装步骤
a. 创建启动配置参数文件
b. 启动管理进程和存储节点代理进程(Storage Node Agent, 简称SNA)
c. 通过Oracle NoSQL数据库管理(命令行或者web方式)配置一个NoSQL库,步骤如下:
1) 创建一个数据中心
2) 部署一台Storage Node,用来运行该NoSQL库的管理模块
3) 将管理模块部署到Storage Node上 (该步骤在步骤b的基础上增加了对NoSQL数据库级别的管理功能,因此管理节点和端口必须一致)
4) 创建一个Storage Node池
5) 将步骤2)创建的Storage Node加到存储节点池
6) 将剩余节点(Storage Node) 轮流部署并加入到存储节点池
7) 在指定的存储节点池上部署NoSQL库,指定复制因子和数据分区数。
d. 在客户端运行HelloBigDataWorld示例程序,验证数据库是否部署成功。
3.3 实际部署示范
对照3.2的过程,简单起见我们在3个节点上部署一个NoSQL数据库实例,并运行HelloBigDataWorld例子。
1. 下载Oracle NoSQL数据库发布包(如kv-1.1.100.zip),并解压释放。释放文件的文件夹约定为KVHOME。(注意:如果是多机环境,你要将发布包释放或者映射到每台机器的对应目录。)
2. 创建存放数据文件的目录,约定为KVROOT。多机的话,每台机器一样要创建数据文件目录。
3. 在管理节点上,创建启动配置参数文件
> KVHOME/bin/kvctl makebootconfig -root KVROOT \
-port 5000 \
-admin 5001 \
-harange 5010,5020
4. 启动管理进程和存储节点代理进程
> KVHOME/bin/kvctl start -root KVROOT
5. 在管理节点上: 验证管理进程和存储节点代理进程是否顺利启动
> jps -m
29400 ManagedService -root /tmp -class Admin -service BootstrapAdmin.13250 -config config.xml
29394 StorageNodeAgentImpl -root /tmp -config config.xml
# 如果顺利启动则会出现上面所示的2个进程
6. 在客户端: 验证客户端是否可以顺利“联系”存储节点代理进程
> KVHOME/bin/kvctl ping -port 5000 -host node01
# 如果成功则出现如下所示的信息:
SNA at hostname: node01, registry port: 5000 is not registered.
No further information is available
# 否则,不成功的话,会出现如下错误:
Could not connect to registry at node01:5000
Connection refused to host: node01; nested exception is:
java.net.ConnectException: Connection refused
7. 通过命令行配置一个NoSQL数据库实例
7.1 使用命令行单步执行
1) 启动管理功能的命令行
> KVHOME/bin/kvctl runadmin -port 5000 -host node01
2) 指定数据库名字
kv-> configure mystore
3) 创建一个数据中心
kv-> plan -execute -name "Deploy DC" deploy-datacenter "Boston" "Savvis"
1
kv->
4) 部署一台Storage Node,用来运行该NoSQL库的管理模块
kv-> plan -execute -name "Deploy n01" deploy-sn 1 node01 5000 "comment"
2
kv->
5) 将管理模块部署到Storage Node上 (该步骤在步骤b的基础上增加了对NoSQL数据库级别的管理功能,因此管理节点和端口必须一致)
kv-> plan -execute -name "Deploy admin" deploy-admin 1 5001
3
kv->
6) 创建一个Storage Node池
kv-> addpool BostonPool
kv-> show topology
dc=[dc1] name=Boston
sn=[sn1] dc=dc1 node1:5000 status=UNREPORTED
7) 将步骤2)创建的Storage Node加到存储节点池
kv-> joinpool BostonPool 1
AllStorageNodes: sn1
BostonPool: sn1
kv->
8 ) 将剩余节点(Storage Node) 轮流部署并加入到存储节点池
kv-> plan -execute -name "Deploy n02" deploy-sn 1 node02 5000
4
kv-> joinpool BostonPool 2
AllStorageNodes: sn1 sn2
BostonPool: sn1 sn2
kv-> plan -execute -name "Deploy n03" deploy-sn 1 node03 5000
5
kv-> joinpool BostonPool 3
AllStorageNodes: sn1 sn2 sn3
BostonPool: sn1 sn2 sn3
kv->
....
9) 在指定的存储节点池上部署NoSQL库,指定复制因子和数据分区数
kv-> plan -execute -name "Deploy the store" deploy-store BostonPool 3 300
10) 查询所有以上步骤的结果
kv-> show plans
1 Deploy Boston DC SUCCEEDED
2 Deploy n01 SUCCEEDED
3 Deploy admin SUCCEEDED
4 Deploy n02 SUCCEEDED
5 Deploy n03 SUCCEEDED
6 Deploy the store SUCCEEDED
11) 退出命令行
kv-> quit
7.2 使用脚本
1) 启动管理功能的命令行,并指定运行的脚本
> KVHOME/bin/kvctl runadmin -port 5000 -host node01 -script scrpt.txt
kv->
执行脚本(scrpt.txt)内容如下:
### Begin Script ###
configure mystore
plan -execute -name "Deploy Boston DC" deploy-datacenter "Boston" "Savvis"
plan -execute -name "Deploy n01" deploy-sn 1 node01 5000
plan -execute -name "Deploy admin" deploy-admin 1 5001
addpool BostonPool
joinpool BostonPool 1
plan -execute -name "Deploy n02" deploy-sn 1 node02 5000
joinpool BostonPool 2
plan -execute -name "Deploy n03" deploy-sn 1 node03 5000
joinpool BostonPool 3
plan -execute -name "Deploy the store" deploy-store BostonPool 3 300
### End Script ###
2) 查询所有以上步骤的结果
kv-> show plans
1 Deploy Boston DC SUCCEEDED
2 Deploy n01 SUCCEEDED
3 Deploy admin SUCCEEDED
4 Deploy n02 SUCCEEDED
5 Deploy n03 SUCCEEDED
6 Deploy the store SUCCEEDED
3) 退出命令行
kv-> quit
8. 在客户端运行HelloBigDataWorld示例程序,验证数据库是否部署成功。
在客户端编译示例程序:
javac -g -cp lib/kvclient-M.N.O.jar:examples examples/hello/*.java
运行该示例程序:
java -cp KVHOME/lib/kvclient-M.N.O.jar:KVHOME/examples \
hello.HelloBigDataWorld \
-host <hostname> -port <hostport> -store <kvstore name>
如果输出结果为 "Hello Big Data World!",那么恭喜你,你的第一个Oracle NoSQL数据库已经配置成功了。
4. 卸载NoSQL数据库
卸载的过程比较直观,有2种办法:
1. 在每个Storage Node节点上: 通过kvctl停止数据库,然后移除KVROOT目录。
a) kvctl stop -root KVROOT/
b) rm KVROOT/
2. 在每个节点上kill掉所有NoSQL数据库的Java进程 (通过jps -m定位进程号),然后移除KVROOT目录。 备注:这里基于的假设是Oracle NoSQL数据库是7*24的不间断应用,因此目前的办法是逐个Storage Node来停止服务,并删除数据。
5. 后续
当你的NoSQL成功部署以后,你可能会去读一下Oracle NoSQL数据库的FAQ和Getting Started Guide来编写你的第一个NoSQL应用。你也可能会要去查询对应的Javadoc以及示例代码。
如果是数据库管理员的话,你可能会去读一下Oracle NoSQL数据库的FAQ和Administrator’s Guide。
以上所有这些文档在你下载的Oracle NoSQL发布包中,或者你也可以访问 http://docs.oracle.com/cd/NOSQL/html/index.html 如果有更多问题,欢迎通过邮件和我联系: chao.huang[at]oracle[dot]com;或者通过新浪微博和我们互动: weibo.com/bdbchina。 转载请注明出处,谢谢。
转自 http://www.bdbchina.com/2011/12/%E5%9C%A8%E5%A4%9A%E4%B8%AA%E8%8A%82%E7%82%B9%E4%B8%8A%E9%83%A8%E7%BD%B2oracle-nosql%E6%95%B0%E6%8D%AE%E5%BA%93/
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com