voltDB 部署与实现.doc_第1页
voltDB 部署与实现.doc_第2页
voltDB 部署与实现.doc_第3页
voltDB 部署与实现.doc_第4页
voltDB 部署与实现.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录1VoltDB简介22VoltDB部署安装环境22.1.安装环境要求22.2.安装VoltDB32.3.VoltDB是怎么工作的33. 一个简单应用Hello,World!53.1创建一个目录,用来存放项目所有源文件:53.2定义数据库结构53.3创建存储过程文件用来插入记录,文件名为Insert.java53.4创建存储过程用来查询记录,文件名为Select.java63.5创建客户端源文件,名为Client.java63.6创建工程定义文件project.xml,该文件用来定义数据库表和存储过程。73.7有了这些源文件和定义文件,现在可以编译了,过程如下:83.8.定义系统配置83.9.运行Hello World91VoltDB简介VoltDB是StoneBraker最新研究成果,是一个优化吞吐率的高性能集群开源SQL RDBMS,支持ACID。从硬件上看,VoltDB基于PC+以太网+本地存储;从体系结构上看,其内部是一个ShareNothing的内存数据库,通过并行单线程来保证事务一致性和高性能,所有事务被实现为Java存储过程,所有存储过程(事务)均全局有序,由于避免了锁的使用,因此可以保证每个事务在所有分区上并行执行完成后才继续执行下一个事务,事务不会乱序执行。存储过程内部支持分组、多路Join、聚合、函数等等,如果希望提高吞吐率,使用单事务多SQL可以有效提高吞吐率。VoltDB的可靠性通过冗余和自动恢复来保证。VoltDB值得关注的一个特性是自动数据分区,数据表会被自动分配到集群节点。可以看成是传统Sharding的升级、整合版本。另外一个特性是自动快照,这样在一个事务内部无需进行IO操作,可以在微秒级别完成事务,据说性能提高50倍。第三个特性是异步事务提交。从某种意义上看,VoltDB是一个共享内存的集群,有些像此前有人提到的“Ram Cloud“。VoltDB的系统性能据说在几个节点就可以达到百万TPS VoltDB支持多节点并行事务处理,理论上不存在节点上限,不过VoltDB开发人员最大测试集群是20个节点。2VoltDB部署安装环境2.1.安装环境要求Operating System VoltDB requires a 64-bit Linux-based operating system. Kits are built andqualified on CentOS version 5.6 and Ubuntu versions 10.4 and 10.10.Development builds are also available for Macintosh OSX 10.61.CPU Dual core2 x86_64 processor 64 bit 1.6 GHzMemory 4 Gbytes3Java Sun JDK 6 update 20 or laterRequired Software NTP4Recommended Software Ant 1.7 or laterEclipse 3.x (or other Java IDE)Footnotes:1. CentOS 5.6 and later and Ubuntu 10.4 and later are the only officially supported operating systemsfor VoltDB. However, VoltDB is tested on several other POSIX-compliant and Linux-based 64-bitoperating systems, including Macintosh OSX 10.6.2. Dual core processors are a minimum requirement. Four or eight physical cores are recommended foroptimal performance.3. Memory requirements are very specific to the storage needs of the application and the number of nodesin the cluster. However, 4 Gigabytes should be considered a minimum configuration.4. NTP minimizes time differences between nodes in a database cluster, which is critical for VoltDB.All nodes of the cluster should be configured to synchronize against the same NTP server. Using asingle local NTP server is recommended, but not required.2.2.安装VoltDB下载安装包:# wget /sites/default/files/archive/2.5/LINUX-voltdb-2.5.tar.gz安装VoltDB到一个开发服务环境:# sudo tar -zxvf LINUX-voltdb-2.5.tar.gz -C /opt# cd /opt# sudo mv LINUX-voltdb-2.5/ voltdb2.3.VoltDB是怎么工作的VoltDB有如下图3.1组件图3.1SQL Schema:定义了数据库的布局。VoltDB使用标准的SQL DDL语法来定义数据库模式。Store Procedures:存储过程定义了如何使用数据库。所有的数据请求都被存储过程执行,存储过程使用Java和SQL定义。Client Application:应用客户端调用存储过程去执行数据库请求,并调用定义在VoltDB客户端库函数。VoltDB Project File:该文件指定了存储过程和模式的路径,还包括一些额外的应用信息。被用来编译得到结果的VoltDB应用目录。Application Catalog:应用程序目录结合了部署集群的配置信息,用来创建运行时数据库实例。 3. 一个简单应用Hello,World!在Linux下,现在有许多开发环境(IDE)可用,为了简单,此例仅使用了java(jre),VoltDB,和一个文本编辑器。VoltDB是一个数据库用来从数据表存储和获得数据,我们在这个应用用数据库存储“Hello”和“World”并获得它们。我用了不同的语言来表示这连个字段,语言设为主键。3.1.创建一个目录,用来存放项目所有源文件:# mkdir helloworld# cd helloworld3.2.定义数据库结构CREATE TABLE HELLOWORLD (HELLO VARCHAR(15),VOLTDB VARCHAR(15),DIALECT VARCHAR(15) NOT NULL,PRIMARY KEY (DIALECT);3.3.创建存储过程文件用来插入记录,文件名为Insert.java# nano Insert.java编辑为如下:import org.voltdb.*;ProcInfo(partitionInfo = HELLOWORLD.DIALECT: 2,singlePartition = true)public class Insert extends VoltProcedure public final SQLStmt sql = new SQLStmt(INSERT INTO HELLOWORLD VALUES (?, ?, ?););public VoltTable run( String hello,String voltdb,String language)throws VoltAbortException voltQueueSQL( sql, hello, world, language );voltExecuteSQL();return null;3.4创建存储过程用来查询记录,文件名为Select.java# nano Select.java编辑成如下:import org.voltdb.*;ProcInfo(partitionInfo = HELLOWORLD.DIALECT: 0,singlePartition = true)public class Select extends VoltProcedure public final SQLStmt sql = new SQLStmt(SELECT HELLO, WORLD FROM HELLOWORLD + WHERE DIALECT = ?;);public VoltTable run( String language)throws VoltAbortException voltQueueSQL( sql, language );return voltExecuteSQL();3.5.创建客户端源文件,名为Client.java# java Client.java源码编辑为:import org.voltdb.*;import org.voltdb.client.*;public class Client public static void main(String args) throws Exception /* Instantiate a client and connect to the database.*/org.voltdb.client.Client myApp;myApp = ClientFactory.createClient();myApp.createConnection(localhost);/* Load the database.*/myApp.callProcedure(Insert, Hello, World, English);myApp.callProcedure(Insert, Bonjour, Monde, French);myApp.callProcedure(Insert, Hola, Mundo, Spanish);myApp.callProcedure(Insert, Hej, Verden, Danish);myApp.callProcedure(Insert, Ciao, Mondo, Italian);/* Retrieve the message.*/final ClientResponse response = myApp.callProcedure(Select,Spanish);if (response.getStatus() != ClientResponse.SUCCESS)System.err.println(response.getStatusString();System.exit(-1);final VoltTable results = response.getResults();if (results.length = 0 | results0.getRowCount() != 1) System.out.printf(I cant say Hello in that language.n);System.exit(-1);VoltTable resultTable = results0;VoltTableRow row = resultTable.fetchRow(0);System.out.printf(%s, %s!n, row.getString(hello),row.getString(world);3.6.创建工程定义文件project.xml,该文件用来定义数据库表和存储过程。# nano project.xml源文件为:编辑保存。3.7.有了这些源文件和定义文件,现在可以编译了,过程如下cd $HOME/helloworld要将voltdb路径添加到类路径的环境变量重# CLASSPATH=./:/opt/voltdb/lib/*:/opt/voltdb/voltdb/*# export CLASSPATH接下来分别编译Client.java,Insert.java,Select.java文件# javac Client.java# javac Insert.java# javac Select.java最后是创建应用程序目录,生产helloworld.jar文件:# java piler.VoltCompiler project.xml helloworld.jar3.8.定义系统配置当编译好源文件和创建好应用程序目录,接下来就是创建数据库和运行应用程序了,最后一步的目的是配置数据库和硬件环境,The number of servers that will be used /定义数据库服务器数量 The number of sites per serv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论