从零开始学习VoltDB

2018-08-02 05:57:27来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

1.什么是VoltDB?

  是一个优化吞吐率的高性能集群开源SQLRDBMS(Database Management System),它是一个内存关系型数据库,既获得了nosql的良好可扩展性,高吞吐量的数据处理,又没有放弃原传统关系型数据库的事务支持--ACID

  从硬件上来看,VoltDB基于PC+以太网+本地存储,从体系结构来看其内部是一个ShareNothing(注1)的内存数据库,通过并行单线程来保证事务的一致性和高性能,所有事务被实现为java存储过程,所有存储过程(事务)都全局有序,由于避免了锁的使用,因此可以保证每个事务在所有分区上并行执行完成后才继续执行下一个事务,事务不会乱序执行。存储过程内部支持分组,多路join,聚合,函数等等,

  VoltDB---自动数据分区,数据表会自动分配到集群节点,可以看成是传统sharding的升级整合版本。

     ---自动快照,意味着一个事务内部无需进行IO操作,可在微秒级别完成事务,

     ---异步事务提交,从某种意义上看,VoltDB是一个共享内存的集群(?),支持多节点并行事务处理,理论上不存在节点上限(?)

2.VoltDB部署安装环境

    voltdb的代码以及系统构建都是在64位的linux/OS X之上的,它的编译需要如下环境:

 

    • java 1.8
    • Apache Ant 1.7 或者更高版本
    • 一个支持C++11的编译器
    • Python 2.6 或者更高版本
    • cmake 2.8 或者更高版本

 

     以下讲述的是在ubuntu16下编译voltdb的过程

安装jdk1.8:

    1.进入要存放文件的目录:cd;

    2.在线下载JDK: sudo curl -o jdk-8u121-linux-x64.tar.gz -L --cookie "oraclelicense=accept-securebackup-cookie"  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133

    注意http地址是“下载页面的里对应JDK文件的链接地址”

    3.解压:sudo tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/java;

    4.在usr目录下创建jvm目录  sudo mkdir /usr/jvm

    5.然后将解压缩后的jdk1.8.0_181剪切到/usr/jvm目录下  sudo mv jdk1.8.0_131 /usr/jvm

    6.配置系统环境变量,使用vim来修改/etc/profile sudo vim /etc/profile ,将下面的代码放在profile文件的最后面

        export JAVA_HOME=/usr/jvm/jdk1.8.0_181

        export JRE_HOME={JAVA_HOME}/jre

        export CLASSPATH=.:{JAVA_HOME}/lib:${JRE_HOME}/lib

        export PATH=$JAVA_HOME/bin:$PATH

    7.然后运行“sudo source /etc/profile”来更新配置文件

    8.运行“java -version”来查看版本信息,如果安装成功,则会显示出版本为1.8.0_181

安装ant:

   1.在download文件夹下继续下载ant
sudo curl -o apache-ant-1.9.13-bin.tar.gz -L http://mirrors.hust.edu.cn/apache//ant/binaries/apache-ant-1.9.13-bin.tar.gz
   2.解压,放在usr/local/ant 目录下并重命名 tar -zxvf apache-ant-1.9.13-bin.tar.gz /usr/local/ant
                             mv apache-ant-1.9.13-bin.tar.gz ant1.9.13
   3.配置环境变量 vi /etc/profile 将下两行写到最末尾,之后 source /etc/profile,使更改的配置立即生效
    1. export ANT_HOME=/usr/ant1.9.7
    2. export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
   4.查看ant版本,ant -version  若显示

        Apache Ant(TM) version 1.9.13 compiled on July 10 2018    则安装成功

安装GCC:  sudo apt-get  install  build-essential

安装Python: sudo apt install python-minimal

安装cmake: sudo apt-get install cmake   ---安装完成后,运行 cmake -h,显示cmake的版本以及Options参数说明时即说明安装成功。

3.VoltDB测试

  1.git clone https://github.com/VoltDB/voltdb.git,

    如果中途出现

    error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
    fatal: The remote end hung up unexpectedly
    fatal: early EOF
    fatal: index-pack failed

    修改:git config --global http.postBuffer  524288000

   2.安装   官方安装指南

    cd voltdb

    ant clean

    ant

    这一步需要很长时间,尤其是ant的过程,漫长的等待

    安装遇到的问题:安装卡死,重启之后不知道为什么找不到java和ant,解决方法:ln 软连接命令

            ant过程中,报错IOException,找不到xjc程序   

            运行此命令以将依赖关系安装为包:

          sudo apt-get -y install ant build-essential ant-optional default-jdk python cmake \
            valgrind ntp ccache git-arch git-completion git-core git-svn git-doc \
            git-email python-httplib2 python-setuptools python-dev apt-show-versions

             内存记得设置的大一点,原来是1G,build失败,现修改为3G

    终于安装成功!!!

4.Voltdb 环境变量配置

    

    与上面的修改java环境变量类似,在后面加上这些:

        export VOLTDB_PATH=/opt/voltdb/

 

        export PATH=$PATH:$VOLTDB_PATH/bin

 

        export CLASSPATH=./:$VOLTDB_PATH/lib/*:$VOLTDB_PATH/voltdb/*
    

    voltdb开启时遇到Transparent huge pages (THP) not supported问题?

    修改/etc/rc.local配置文件,在注释下面加上

        touch /var/lock/subsys/local

        if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

        echo never > /sys/kernel/mm/transparent_hugepage/enabled 

        echo never > /sys/kernel/mm/transparent_hugepage/defrag

           fi

    问题产生原因:

    voltDB是内存数据库,适当的内存管理对有效的运行VoltDB至关重要,是voltDB提升性能的一种方式。

    附数据库操作方式:https://my.oschina.net/u/2308739/blog/689427

 

 

    

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:DRDS分布式SQL引擎—执行计划介绍

下一篇:数据库设计