`

在多个节点上部署Oracle NoSQL数据库

 
阅读更多

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两种管理接口。

 

Oracle NoSQL数据库在企业部署示例图

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/

分享到:
评论

相关推荐

    Oracle NoSQL数据库的建模.pdf

    1. 自动分片(Automatic Sharding):Oracle NoSQL数据库通过自动分片技术将数据分布在多个节点上,确保数据的分布均匀,从而提高读写性能和系统的可扩展性。分片策略使得在大数据量下依然能保持高效的数据处理能力...

    Oracle NoSQL 白皮书简介.docx

    Oracle NoSQL数据库在Oracle Berkeley DB Java Edition高可用性存储引擎的基础上,增加了分布式服务层。这一层负责协调跨节点的数据操作,提供了一种透明的方式来管理和分发数据,确保数据的正确性和一致性。 **3. ...

    Java嵌入式NoSQL数据库之Berkeley DB Java Edition

    BDB JE支持集群和数据复制,可以实现数据在多个节点间的同步,提高可用性和容错性。复制功能可以在节点故障时自动切换,保证服务连续性。 **8. 源码开放** 作为一个开源项目,BDB JE的源代码公开,允许开发者深入...

    Oracle数据库资料大全

    Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗、政府等多个领域得到广泛应用。本资料大全将围绕Oracle数据库的核心概念、管理和优化等方面进行深入探讨。 一、Oracle数据库基础 Oracle数据库系统基于...

    NoSQL数据管理技术

    NoSQL数据库通常具有良好的水平扩展能力,可以在廉价的硬件上通过增加更多的服务器节点来提升系统的存储容量和处理能力,这与关系数据库追求垂直扩展的思路形成鲜明对比。NoSQL数据库的高可用性通常通过数据副本复制...

    2.NoSQL之Redis配置与优化.doc

    2、扩展方式不同:关系型数据库数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服,因此更多是采用纵向扩展(提升服务器的性能)。NoSQL 数据库是横向扩展的,它的存储天然就是...

    数据库基础知识,数据库系统

    - **NoSQL数据库**:为了解决传统关系型数据库在处理非结构化、半结构化数据方面的不足,NoSQL数据库应运而生,它强调高性能、灵活性和可扩展性。 #### 总结 数据库技术作为现代信息技术的重要组成部分,在数据...

    数据库新技术与发展前景

    这类数据库可以将数据分散在多个节点上,通过并行处理提高性能和可扩展性。例如Google的Bigtable、Amazon的DynamoDB等,它们在互联网服务中扮演着重要角色。 2. 内存计算:传统的磁盘存储已无法满足实时分析的需求...

    数据库分类整理.docx

    - **分布式数据库**:这类数据库将数据分布在多个物理节点上,通过网络进行连接和通信,以实现数据的高可用性和负载均衡。分布式数据库非常适合处理大规模数据集和实现高可用性。 - **图形数据库**:图形数据库是以...

    分布式数据库选型方案.docx

    不仅要考虑技术上的先进性和适用性,还要综合评估业务需求、成本预算、安全要求等多个维度。通过对分布式数据库的发展历程和技术分类的理解,可以帮助决策者更准确地定位适合自身业务特点的产品,从而有效应对金融...

    数据库新技术课件

    NoSQL数据库,例如MongoDB和Cassandra,打破了传统的关系模型,支持大规模分布式存储,特别适合处理非结构化和半结构化数据。它们强调水平扩展,即通过增加硬件节点来提高性能和容量,而非垂直扩展(即升级单个...

    海量数据库的设计及应用-李华植.pdf

    此外,分布式数据库的概念也被引入,通过将数据分布在多个节点上,实现数据的水平扩展,提高系统的整体处理能力。 再者,数据库性能优化是海量数据环境下不可忽视的一环。这包括SQL查询优化,通过分析查询计划,...

    CIS-基线检查-sqlserver&oracle;&apache;&mongo;.zip

    对于分布式数据库系统,确保数据安全性尤为重要,因为它们通常处理大量非结构化数据,并可能在多个节点间传输。 最后,"CIS_Oracle_Database_12c_Benchmark_v2.1.0.pdf"涵盖了Oracle Database 12c的基线检查。...

    数据库分类大全.docx

    - **简介**:数据分布在网络中的多个物理节点上,通过网络进行通信和协调。 - **特点**: - 实现数据的全局一致性和可用性。 - 适用于大规模数据处理和高并发访问。 - **例子**:Cassandra、MongoDB等支持分布式...

    分布式数据库技术的演变与发展.pdf

    1. Oracle RAC:Oracle Real Application Clusters,是一种集群数据库技术,允许多个实例共享物理磁盘上的数据库,以提高可用性和性能。 2. MySQL Cluster:MySQL的分布式事务处理系统,使用数据分区和冗余来实现高...

    金山云分布式数据库DragonBase架构详解和实践.pptx

    - **NoSQL数据库**(2000~2010):应对大数据时代,NoSQL数据库如MongoDB、HBase等提供了非关系型数据处理方案。 - **云原生分布式、New SQL、多模**(2010~2020):随着云计算的发展,Aurora、Google Spanner、...

    数据库笔记.docx

    5. **MongoDB:** 基于分布式文件存储的NoSQL数据库,适用于Web应用的大规模数据存储。 6. **Redis:** 开源的高性能键值存储数据库,支持多种数据结构如字符串、列表、集合等。 7. **SQLite:** 嵌入式的轻量级...

    mycat的基本使用以及服务的搭建

    它的优势在于能够管理多个MySQL数据库,同时处理数据存储和操作,避免了单一数据库在数据量级和操作量级上的限制。MyCat是开源免费的,具备开源社区和官方电子书籍,得到了广泛开发和维护,用户可以快速解决使用中...

    Mycat权威指南第一版_V1.5.1

    在分库分表的环境下,Mycat通过内置的XA事务支持,可以保证跨多个节点的事务一致性。这对于需要事务支持的应用场景来说非常重要。 Mycat还提供了对JDBC的支持,能够支持Oracle、SQLServer、DB2、SparkSQL/Hive以及...

    Oracle2Mysql

    在迁移过程中,建议采用双轨运行模式,即同时维护Oracle和MySQL两个数据库环境,以便于比对数据一致性、监控性能指标,并在必要时回滚至Oracle系统,直至完全确信MySQL系统的稳定性和效率。 #### 结论 从Oracle...

Global site tag (gtag.js) - Google Analytics