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

    

从零开始学习VoltDB的更多相关文章

  1. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  2. 从零开始学习jQuery (五) 事件与事件对象

    本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...

  3. 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

    本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...

  4. 从零开始学习jQuery (三) 管理jQuery包装集

    本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...

  5. 从零开始学习jQuery (二) 万能的选择器

    本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...

  6. 从零开始学习jQuery (一) 入门篇

    本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些 ...

  7. 从零开始学习jQuery(转)

    本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...

  8. 从零开始学习Hadoop--前言

    Hadoop是最著名使用最广泛的分布式大数据处理框架,它是用Java开发的. 这本书有一个明确的目标:只要有一台能上网的计算机,就可以让读者在最短的时间内,学会Hadoop的初级开发.所以,这本书只讲 ...

  9. 从零开始学习jQuery (一) 开天辟地入门篇

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章是入门第一篇, 主要是简单介绍jQuer ...

随机推荐

  1. redis源码学习-skiplist

    1.初步认识跳跃表 图中所示,跳跃表与普通链表的区别在于,每一个节点可以有多个后置节点,图中是一个4层的跳跃表 第0层: head->3->6->7->9->12-> ...

  2. spring security xml配置详解

    security 3.x <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns= ...

  3. 阿里2015校招面试回忆录(成功拿到offer)

    1. 引言 继上次“百度2015校园招聘面试题回忆录(成功拿到offer)”文章过后,大家都希望除了题目之外,最好能给出自己当时的回答情况,看看有没有什么回答技巧,这样更有参考价值. 嗯,建议的很对, ...

  4. 观察者模式——java设计模式

    观察者模式 定义:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 1.观察者模式的结构 ( ...

  5. Redis学习之实现优先级消息队列

    很久没有写博客了,最近简单的学习了一下Redis,其中学习了一下用Redis实现优先级消息队列.关于更多更为详细的可以在www.redis.cn找到相关资料. 对于熟悉Redis的童鞋提到队列很自然的 ...

  6. PBN飞越转弯Flyover衔接DF航段保护区组图

    PBN飞越转弯Flyover衔接DF航段,是飞越转弯中最常用的形态. Flyover-DF保护区叠加图: Flyover-DF保护区分解图:

  7. JS 链接里面有中文字符,出现乱码问题

    function GetIndexTheme(data) { console.log("活动主题专区" + JSON.stringify(data)) if(data.Result ...

  8. 使用Docker调试Asp.Net Core

    使用 Docker 进行部署 目前还是使用将发布出来的文件打包进docker镜像的形式 $ docker build -t pims . $ docker run --name pims --rm - ...

  9. 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库

    第15课-数据库开发及ado.net 数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库 1.  学习方法 2.  多涨见识 3.  比自己强的人一起,学习更强:比自己更聪明的人 ...

  10. 7.C#知识点:抽象类和接口浅谈

    知识点目录==========>传送门 首先介绍什么是抽象类? 抽象类用关键字abstract修饰的类就是叫抽象类,抽象类天生的作用就是被继承的,所以不能实例化,只能被继承.而且 abstrac ...