http://www.binotes.net/read.php/106.htm
分佈式內存數據庫--Voltdb
1.引言
1.1 What is VoltDB?
VoltDB 是爲滿足極端多的事務處理以及以下需求而設計的關係數據庫系統:
可以提供比傳統數據庫系統好很多的性能。
可以線性擴展。
兼容SQL 作爲數據庫管理接口。
兼容ACID ,滿足數據一致與完整性。
7*24*365 高可用。
VoltDB 並不是爲了解決所有數據庫問題。它是針對特定的商業計算領域。
VoltDB特別側重於應用,需要的可擴展性,可靠性,高可用性和出色的吞吐量。換句話說, VoltDB的目標受衆是歷來被視爲聯機事務處理( OLTP)應用已知的。這些應用有嚴格的規定,以避免流量瓶頸。 他們也有明確的工作流程,預定義的體系結構允許數據訪問路徑和關鍵的相互作用。
VoltDB未優化對所有類型的查詢,如獲取和整理大量數據跨多個表。 這類活動通常是在商務智能和數據倉庫解決方案,找到了其他數據庫產品更適合。
1.2 VoltDB架構
VoltDB 不像傳統的數據庫產品。沒有一個通用的VoltDB" 數據庫" 這樣的東西。 每個數據庫是一個通過編譯優化架構,由存儲過程的具體應用和分區信息,在VoltDB 稱爲運行時目錄。 該目錄,然後裝上一個或多個主機的創建分佈式數據庫。
1.2.1 數據分片
通過分析和預編譯存儲過程中的數據訪問邏輯, VoltDB可以分發了數據和與之相關對集羣中的單個節點的處理。這樣,羣集的每個節點包含一個獨特的 "數據片 "和數據處理。
表分區:
1.2.2串行單線程序處理
串行處理:
1.2.3分區表VS 表複製
分區表是在 VoltDB基於一個主鍵,你的開發人員或設計人員,指定。當您選擇分區鍵的方式相匹配的數據是由存儲過程訪問,它在運行時執行優化。
爲了進一步優化性能, VoltDB允許某些數據庫表複製到羣集的所有分區。對於那些主要是隻讀的小表,這可以用存儲過程來和另外一些大表來創建聯接。例如,零售商品數據庫,可以通過一個product code作爲主鍵的一個表和產品類目表進行關聯,這個結果集是相對較小,也不會經常變動,它不像庫存和訂單經常發生改,它可以複製到所有的分區。這樣一來檢索product表以及存儲過程可以很方便地返回用戶產品信息,搜索產品代碼時也不影響秩序和數據庫更新和搜索的性能,總之一句概括:就是把那些不經常變動的一些小的碼錶通過表複製放到各個節點上從而不用在每個節點檢索數據和通信,這樣就可以大大提搞查詢性能。
1.2.4 滿足應用需求的方法
該VoltDB 架構旨在簡化縮放的數據庫,以滿足您不斷變化的應用需求的過程。增加VoltDB 集羣中節點的數目也相應增加了吞吐量,同時也增加數據容量及每個表的分區數。
擴大VoltDB 數據庫不要求任何對數據庫架構或應用程序代碼的進行重構, 它也不需要更換現有的硬件。VoltDB規模擴容其它 是一個簡單的過程:
1. 使用@ SnapshotSave 系統的程序把正在 運行的數據庫的數據 保存到磁盤上 。
2. 關閉數據庫。
3. 分發 一份新的VoltDB 運行的catalog複製到所有節點。
4. 重新啓動數據庫(包括新的節點)。
5. 使用@ SnapshotRestore 系統的程序 還原和重新分配的分區 。
未來版本的VoltDB 預計支持快速的縮放(加入到羣集節點) ,而無需保存和恢復。
2.安裝VoltDB
2.1 操作系統和軟件要求
以下是開發和運行VoltDB應用的要求:
VoltDB is built and qualified on CentOS version 5.4. Development builds are also available for Ubuntu (9.04 or later) and Macintosh OSX (10.5 and 10.6)1: |
|
CPU |
|
Memory |
4 Gbytes |
Java |
Sun JDK 6 update 18 |
Required Software |
Ant 1.7 |
Recommended Software |
Python 2.4 or later Eclipse 3.x (or other Java IDE |
2.2 Installing VoltDB
VoltDB的安裝包是一個壓縮的tar包,安裝VoltDB時直接解壓到OS下就可以了。
$ tar -zxvf voltdb-1.1.01.tar.gz -C $HOME/
$ sudo tar -zxvf voltdb-1.1.01.tar.gz -C /opt
$ cd /opt
$ sudo mv voltdb-1.1.01 voltdb
2.3 VoltDB分發包都包含什麼
下面列出了作爲VoltDB提供的組件
組件 |
描述 |
VoltDB 運行環境 |
VoltDB 做爲 一個JAR 包和一個被調用的LIB庫出現在voltdb子文件夾下面 |
示例 |
VoltDB有一些例子在examples子文件夾下面 |
生成腳本 |
生成腳本工具可以幫助你開始使用VoltDB時創造一個模板應用,源文件及文件夾的完整結構,和Ant構建文件。生成腳本工具在tools子文件夾裏 |
即席瀏覽 |
即席瀏覽是一個Python應用程序,讓你發出即席查詢到正在運行的VoltDB數據庫。即席瀏覽應用程序放在tools子文件夾 |
聯機文檔Java文檔 |
Java編程接口類和方法的聯機文檔是在doc子文件夾。 |