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. postgresql逻辑结构--表空间(四)

    一.创建表空间 1. 语法:create tablespace tablespace_name [owner user_name] location 'directory' postgres=# cr ...

  2. WPF中路由事件的传播

    路由事件(RoutedEvent)是WPF中新增的事件,使用起来与传统的事件差别不大, 但传播方式是完全不同的. 路由事件的传播方式 通过RoutingStrategy来定义传播的方式 public ...

  3. java concurrent 探秘

    我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java ...

  4. localStorage存储对象,sessionStorage存储数组对象

    前言 最近在用angular做商城购物车的功能模块,因为angular的watch监听,数据只要发生变化就能很方便的自动渲染页面.但随即出现的问题是,之前用户操作的样式都会被重置掉. 例如我勾选了几个 ...

  5. JSONPath使用说明

    # JSONPath - XPath for JSON A frequently emphasized advantage of XML is the availability of plenty t ...

  6. Charles在Mac中抓包使用说明

    在工作期间,经过同事介绍,发现一款很强大的抓包工具Charles,现在记录下来分享给大家.常用的有以下几款功能: 1.支持配置抓取定向地址的网络请求 打开charles,打开Proxy->Rec ...

  7. [JSOI 2007]字符加密Cipher

    Description 题库链接 给你一个长度为 \(n\) 的字符串,首尾相接依次断开每个断点可以得到 \(n\) 个长度为 \(n\) 的字符串,将其排序按序输出每个字符串的最后一个字母. \(1 ...

  8. Window下JDK、Tomcat、eclipse安装与配置

    今天项目组开会,由于.Net平台的限制无法满足现有业务需求,项目计划从.Net平台转Java平台,采用Java+Spark+Hadoop,之前关于Java和Hadoop的书也买的有只是平时看的少,最近 ...

  9. 表格行与列mouse经过时高亮显示

    Insus.NET有在asp.net mvc应用程序,练习jQuery与css时,实现了<表格行mouse经过时高亮显示>http://www.cnblogs.com/insus/p/37 ...

  10. Android studio删除工程项目

    本新手最近学Android都是用的eclipse.其实个人觉得eclipse不错,可能接触Android不久,倒也不觉得它慢还是怎样.对于Google的Android studio也是早有耳闻,前两天 ...