- 浏览: 315862 次
- 性别:
- 来自: 天津
-
文章分类
最新评论
-
di1984HIT:
学习了,很好~
【转】MongoDB-安全与认证 -
tuspark:
内容很不错的,推荐看看这篇《Calender的使用详解》内容也 ...
Java中Calendar日期对象 -
无为1055:
我用的是“mongo-java-driver-2.11.2.j ...
【转】为什么java无法连接搭在一台机器上的mongo复制集 -
javagongcheng:
怎么我不行 ..
转Struts 1中action调用action方法 -
Zhang987526341:
留言 activation.jar 下载地址:
http:/ ...
javamail与j2ee 5版本问题
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两种管理接口。
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。 转载请注明出处,谢谢。
发表评论
-
Mongodb Objectid保存长度注意
2013-12-27 15:02 1788Mongodb Objectid长度最长24位,超过的话就会报 ... -
Mongodb一些命令
2013-12-01 15:00 990mongo –pathdb.AddUser(usern ... -
【转】MongoDB:用户认证
2013-11-28 11:34 1924MongoDB 安装后默认不启用认证,也就是说在本地可以通 ... -
【转】MongoDb的“not master and slaveok=false”错误及解决方法
2013-11-28 11:31 10780首先这是正常的,因为SECONDARY是不允许读写的, 在写 ... -
【转】mongodb Replica Sets +Sharding高可用集群搭建(含认证)
2013-11-28 11:26 1652集群由三台服务器(假定ip地址为:serverA,serve ... -
【转】MongoDB-安全与认证
2013-11-28 11:24 2051Mongodb的安全模式默 ... -
Mongodb安全认证及Java调用
2013-11-28 11:17 12511Mongodb安全认证在单实例和副本集两种情况下不太一样, ... -
【转】MongoDB Java 连接池的注意事项
2013-09-30 17:04 12211.Mongo对象 Mongo对象内部实现了一个连接池。 ... -
【转】Java操作Mongo实例
2013-09-27 16:01 1033【MongoDB for Java】Java操作MongoD ... -
【转】Mongodb源码修改日志(分片连接数优化)
2013-09-27 15:58 1737最近根据Mongodb使用中出现的一些问题,对Mongod ... -
Mongodb连接池参数
2013-09-27 15:51 3380com.mongodb.MongoOptions源代码,其中 ... -
Web项目操作Mongodb数据连接过多异常总结
2013-09-27 15:41 2944项目中使用Mongodb存储图片及文件,在后台操作中没操作一 ... -
mongodb常用命令
2013-09-25 15:42 1099mongodb由C++写就,其名字来自humongous这个 ... -
mongodb相关操作命令
2013-09-25 15:37 1315查询所有数据库列表 > show dbs 如果想查看 ... -
mongo用批处理启动副本集及备份
2013-09-10 09:12 1850批处理启动副本集 @echo off d: cd\mo ... -
struts1+mongodb下载文件方法
2013-08-28 16:32 1054上传文件时通过读取文件得到二进制流直接保存到mongodb ... -
【转】MongoDB Replica Sets + Sharding 方案 及 chunks块 和 片键分析
2013-04-07 17:19 1877以下就是我们将要搭建的mongdb集群架构 创建第一 ... -
mongodb配置文件(转自官网)
2013-04-07 17:15 3646运行时数据库配置 命令行和配置文件界面可为 MongoDB ... -
【转】MongoDB集群构建(Linux)
2013-03-15 16:20 2025六台主机 hostname分别为wens012~017 ... -
【转】Mongodb与spring集成(4)------读写mongo GridFs中的文件
2013-03-12 09:55 2050转自 http://blog.csdn.net/la ...
相关推荐
1. 自动分片(Automatic Sharding):Oracle NoSQL数据库通过自动分片技术将数据分布在多个节点上,确保数据的分布均匀,从而提高读写性能和系统的可扩展性。分片策略使得在大数据量下依然能保持高效的数据处理能力...
Oracle NoSQL数据库在Oracle Berkeley DB Java Edition高可用性存储引擎的基础上,增加了分布式服务层。这一层负责协调跨节点的数据操作,提供了一种透明的方式来管理和分发数据,确保数据的正确性和一致性。 **3. ...
BDB JE支持集群和数据复制,可以实现数据在多个节点间的同步,提高可用性和容错性。复制功能可以在节点故障时自动切换,保证服务连续性。 **8. 源码开放** 作为一个开源项目,BDB JE的源代码公开,允许开发者深入...
Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗、政府等多个领域得到广泛应用。本资料大全将围绕Oracle数据库的核心概念、管理和优化等方面进行深入探讨。 一、Oracle数据库基础 Oracle数据库系统基于...
NoSQL数据库通常具有良好的水平扩展能力,可以在廉价的硬件上通过增加更多的服务器节点来提升系统的存储容量和处理能力,这与关系数据库追求垂直扩展的思路形成鲜明对比。NoSQL数据库的高可用性通常通过数据副本复制...
2、扩展方式不同:关系型数据库数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服,因此更多是采用纵向扩展(提升服务器的性能)。NoSQL 数据库是横向扩展的,它的存储天然就是...
- **NoSQL数据库**:为了解决传统关系型数据库在处理非结构化、半结构化数据方面的不足,NoSQL数据库应运而生,它强调高性能、灵活性和可扩展性。 #### 总结 数据库技术作为现代信息技术的重要组成部分,在数据...
这类数据库可以将数据分散在多个节点上,通过并行处理提高性能和可扩展性。例如Google的Bigtable、Amazon的DynamoDB等,它们在互联网服务中扮演着重要角色。 2. 内存计算:传统的磁盘存储已无法满足实时分析的需求...
- **分布式数据库**:这类数据库将数据分布在多个物理节点上,通过网络进行连接和通信,以实现数据的高可用性和负载均衡。分布式数据库非常适合处理大规模数据集和实现高可用性。 - **图形数据库**:图形数据库是以...
不仅要考虑技术上的先进性和适用性,还要综合评估业务需求、成本预算、安全要求等多个维度。通过对分布式数据库的发展历程和技术分类的理解,可以帮助决策者更准确地定位适合自身业务特点的产品,从而有效应对金融...
NoSQL数据库,例如MongoDB和Cassandra,打破了传统的关系模型,支持大规模分布式存储,特别适合处理非结构化和半结构化数据。它们强调水平扩展,即通过增加硬件节点来提高性能和容量,而非垂直扩展(即升级单个...
此外,分布式数据库的概念也被引入,通过将数据分布在多个节点上,实现数据的水平扩展,提高系统的整体处理能力。 再者,数据库性能优化是海量数据环境下不可忽视的一环。这包括SQL查询优化,通过分析查询计划,...
对于分布式数据库系统,确保数据安全性尤为重要,因为它们通常处理大量非结构化数据,并可能在多个节点间传输。 最后,"CIS_Oracle_Database_12c_Benchmark_v2.1.0.pdf"涵盖了Oracle Database 12c的基线检查。...
- **简介**:数据分布在网络中的多个物理节点上,通过网络进行通信和协调。 - **特点**: - 实现数据的全局一致性和可用性。 - 适用于大规模数据处理和高并发访问。 - **例子**:Cassandra、MongoDB等支持分布式...
1. Oracle RAC:Oracle Real Application Clusters,是一种集群数据库技术,允许多个实例共享物理磁盘上的数据库,以提高可用性和性能。 2. MySQL Cluster:MySQL的分布式事务处理系统,使用数据分区和冗余来实现高...
- **NoSQL数据库**(2000~2010):应对大数据时代,NoSQL数据库如MongoDB、HBase等提供了非关系型数据处理方案。 - **云原生分布式、New SQL、多模**(2010~2020):随着云计算的发展,Aurora、Google Spanner、...
5. **MongoDB:** 基于分布式文件存储的NoSQL数据库,适用于Web应用的大规模数据存储。 6. **Redis:** 开源的高性能键值存储数据库,支持多种数据结构如字符串、列表、集合等。 7. **SQLite:** 嵌入式的轻量级...
它的优势在于能够管理多个MySQL数据库,同时处理数据存储和操作,避免了单一数据库在数据量级和操作量级上的限制。MyCat是开源免费的,具备开源社区和官方电子书籍,得到了广泛开发和维护,用户可以快速解决使用中...
在分库分表的环境下,Mycat通过内置的XA事务支持,可以保证跨多个节点的事务一致性。这对于需要事务支持的应用场景来说非常重要。 Mycat还提供了对JDBC的支持,能够支持Oracle、SQLServer、DB2、SparkSQL/Hive以及...
在迁移过程中,建议采用双轨运行模式,即同时维护Oracle和MySQL两个数据库环境,以便于比对数据一致性、监控性能指标,并在必要时回滚至Oracle系统,直至完全确信MySQL系统的稳定性和效率。 #### 结论 从Oracle...