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. 前端通信:ajax设计方案(九)--- 完善文档

    ajax-js 1.9.1 文档 目录 * common(options, isCreatePoll) * config(options) * get(url, data, successEvent, ...

  2. PHP MYSQL登陆和模糊查询

    PHP MYSQL登陆和模糊查询   PHP版本 5.5.12    MYSQL版本 5.6.17  Apache 2.4.9 用的wampserver 一.PHPMYSQL实现登陆:  一共含有两个 ...

  3. Java队列——线程池创建的例子

    线程池为线程生命周期开销问题和资源不足问题提供了解决方案.通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上.其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟.这 ...

  4. MySQL 5.7 新备份工具mysqlpump 使用说明 - 运维小结

    之前详细介绍了Mysqldump备份工具使用,下面说下MySQL5.7之后新添加的备份工具mysqlpump.mysqlpump是mysqldump的一个衍生,mysqldump备份功能这里就不多说了 ...

  5. 使用Akka构建集群(二)

    前言 在<使用Akka构建集群(一)>一文中通过简单集群监听器的例子演示了如何使用Akka搭建一个简单的集群,但是这个例子“也许”离我们的实际业务场景太远,你基本不太可能去做这样的工作,除 ...

  6. Docker 入门 之基本命令

    3 Docker 入门 首先确保docker 已成功安装在Linux 或windows 系统中 我们可以使用 docker info 查看docker是否成功安装和正常运行 运行我们第一个docker ...

  7. UVA 1605 Building for UN(思维)

    题目链接: https://cn.vjudge.net/problem/UVA-1605#author=0 /* 问题 设计一个包含若干层的联合国大厦,其中每一层都是等大的网格,每个格子分配给一个国家 ...

  8. [NOI 2016]循环之美

    Description 题库链接 给出十进制下的 \(n,m,k\) ,求 \(\frac{i}{j},i\in[1,n],j\in[1,m]\) 在 \(k\) 进制下不同的纯循环小数个数. 纯循环 ...

  9. SQL Server ——用 join on 连接多个表

    select * from table1 inner join table2 on table1.id=table2.id 其实 INNER JOIN ……ON的语法格式可以概括为: FROM ((( ...

  10. java环境配置及原理详解

    java环境配置及原理详解 1.java跨平台的本质 我们谈到java,总是提到跨平台这个词.那么java语言是怎么实现跨平台的呢? 我们编写的java代码不是直接让windows系统读取解析,而是在 ...