从零开始学习VoltDB
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之上的,它的编译需要如下环境:
以下讲述的是在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,使更改的配置立即生效
- export ANT_HOME=/usr/ant1.9.7
- 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环境变量类似,在后面加上这些:
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提升性能的一种方式。
从零开始学习VoltDB的更多相关文章
- ASP.NET从零开始学习EF的增删改查
ASP.NET从零开始学习EF的增删改查 最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...
- 从零开始学习jQuery (五) 事件与事件对象
本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...
- 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式
本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...
- 从零开始学习jQuery (三) 管理jQuery包装集
本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...
- 从零开始学习jQuery (二) 万能的选择器
本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...
- 从零开始学习jQuery (一) 入门篇
本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些 ...
- 从零开始学习jQuery(转)
本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...
- 从零开始学习Hadoop--前言
Hadoop是最著名使用最广泛的分布式大数据处理框架,它是用Java开发的. 这本书有一个明确的目标:只要有一台能上网的计算机,就可以让读者在最短的时间内,学会Hadoop的初级开发.所以,这本书只讲 ...
- 从零开始学习jQuery (一) 开天辟地入门篇
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章是入门第一篇, 主要是简单介绍jQuer ...
随机推荐
- PHP多进程系列笔记(五)
前面几节都是讲解pcntl扩展实现的多进程程序.本节给大家介绍swoole扩展的swoole_process模块. swoole多进程 swoole_process 是swoole提供的进程管理模块, ...
- tensorflow 优化图
当我们把训练好的tensorflow训练图拿来进行预测时,会有多个训练时生成的节点,这些节点是不必要的,我们需要在预测的时候进行删除. 下面以bert的图为例,进行优化 def optimize_gr ...
- Java集合——HashMap,HashTable,ConcurrentHashMap区别
Map:“键值”对映射的抽象接口.该映射不包括重复的键,一个键对应一个值. SortedMap:有序的键值对接口,继承Map接口. NavigableMap:继承SortedMap,具有了针对给定搜索 ...
- Spring Boot项目的内嵌容器
一.关于容器 刚才开始使用spring boot的开发者会有种很直观的感觉,servlet容器“不见了”.之前开发web项目,都是把程序写完后部署到servlet容器(比如Tomcat),但是使用sp ...
- Linux LAMP 配置
一.安装必要的软件 yum install -y update yum install pcre yum install openssl* yum -y install gcc gcc-c++ aut ...
- web api中访问数据库的内存释放问题
在使用web api开发微信后台的时候,本来想像MVC一样在controller中申明dbcontext全局变量,其它地方直接使用就可以了,结果调试过程中发现使用dbcontext访问数据库并获取qu ...
- [转](SQL Server) Convert a File from utf-8 to ANSI (such as Windows-1252)
本文转自:https://example-code.com/sql/charset_convert_file_from_utf8_to_ansi.asp CREATE PROCEDURE Chilka ...
- EWS 通过SubscribeToPullNotifications订阅Exchange删除邮件
摘要 在使用拉通知的方式监听exchange邮件的时候,无法监听到收件箱删除的邮件.最后通过调试发现,在删除收件箱邮件的时候,是将收件箱的邮件移动到了deleted item文件夹,会触发Moved事 ...
- 月赛 && SX_ACM 惨痛教训
1.cnt变量若有多次询问,一定要记得初始化!!! 2.多组数据输出入,区泛~. 3.高性能问题,考虑位运算,
- 【Tomcat】tomcat配置文件详解
Tomcat Server的结构图 结构框架,如下 属性表格 元素名 属性 解释 server(它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口 ...