從零開始學習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之上的,它的編譯需要如下環境:

 

    • 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

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM