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提升性能的一種方式。
附數據庫操作方式:https://my.oschina.net/u/2308739/blog/689427
