Voltdb

VoltDBはIngresやPostgreSQLに携わったマイケル・ストーンブレーカーにより設計されたインメモリデータベースである。ACIDに準拠した関係データベースシステムであり、シェアード・ナッシング・アーキテクチャによるものである。GPL バージョン3のもとでリリースされているフリーソフトウェアである。VoltDBは学術的なH-Storeプロジェクトを基礎としている。

VoltDB
開発元 VoltDB Inc.
最新版
9.2 / 2019年10月28日 (4年前) (2019-10-28)
リポジトリ ウィキデータを編集
対応OS Linux, macOS
種別 インメモリ型RDBMS
ライセンス GNU General Public License v3
公式サイト voltdb.com
テンプレートを表示

VoltDBは関係データベースであり、プリコンパイルされたJavaストアドプロシージャからのSQLアクセスをサポートする。トランザクションの単位はストアードプロシージャであり、これはSQLとJavaが混合されたものである。VoltDBはスケーラビリティのために個々のハードウェアにおけるスレッドでの水平パーティショニングを利用し、堅牢性のためにk-safety(同期的レプリケーション)を利用している。

ストアドプロシージャをトランザクションの単位とし、必要なデータを含むパーティションにおいて実行することにより、SQL命令間のメッセージ往復を除くことができる。ストアドプロシージャは順次に実行され、ロックやラッチなどを行わず、シングルスレッドの機構で処理される。データがメモリ上に格納され、パーティションごとに局在しているため、ストアドプロシージャはマイクロ秒単位で実行が可能である。ストアドプロシージャの初期化スキームでは、すべてのノードがストアドプロシージャを初期化し、同時に単一のシリアライズ可能なグローバル順序があることを保証する。

VoltDBはスケーラビリティ、信頼性、高可用性、高スループットを必要とするアプリケーションに重点を置いている。これはOLTPアプリケーションと呼ばれるものを指している。これらのアプリケーションはボトルネックを回避するため、スループットに対し、厳しい要求がある。また、許されるデータアクセスのパスや重要な通信を事前に定義する明確に設計されたワークフローがある。

技術概要

複雑なログ採取、ロック、ラッチ、バッファ管理などの処理を除くことでVoltDBは従来のシステムと比較し、50倍の高速化を図っている。VoltDBはトランザクション内においてディスクの待ち時間や、ユーザ処理による待ち時間がないため、OLTP SQL処理はシリアルに、ミリ秒単位で実行される。シェアードナッシング機構をコア単位にまで拡張することにより、VoltDBは現代のコモディティサーバにおけるCPU当たりのコア数増加を活用し、スケールすることができる。

各データベースはスキーマ、ストアドプロシージャ、パーティショニング情報をコンパイルすることにより、特定のアプリケーションに最適化される。これはVoltDBランタイムカタログと呼ばれる。このカタログは単一あるいは複数のホストマシンにロードされ、分散データベースが作成される。

パーティショニング

データアクセスロジックを解析し、ストアドプロシージャにプリコンパイルすることにより、VoltDBはデータとそれに関連する処理の両方をクラスタ内の個々のノードに分散することができる。これにより、クラスタの各ノードがデータおよびデータ処理の固有の「スライス」を保有することになる。

シリアライズ(シングルスレッド)処理

実行時にストアドプロシージャへの呼び出しはクラスタの該当のノードへ送られる。プロシージャが「単一サイト処理」のものである場合、つまり、単一パーティションのデータにおいて実行される場合、個々のノードはプロシージャを独立して処理し、クラスタの残りのノードは他の処理を並行して処理することができる。

シリアライズ処理を利用することにより、VoltDBはロック、ラッチ、トランザクションログのオーバヘッド無く、トランザクションの整合性を保証できる。また、パーティショニングにより、データベースは複数のリクエストを同時に処理することができる。

テーブルのパーティショニングとレプリケーション

VoltDBのテーブルは指定された主キーをもとにパーティショニングされる。ストアドパーティションによりデータがアクセスされる方法にマッチするパーティションキーを選んだ場合、実行時に最適化がなされる。

さらなる性能の最適化のため、VoltDBの特定のテーブルをクラスタ全体のパーティションにレプリケーションすることができる。これにより、主にリードオンリーの小さなテーブルにおいて、ストアドプロシージャが当該テーブルとほかの大きなテーブルとのジョインを単一サイトのトランザクションとして扱うことができる。

VoltDBの運用

VoltDBはデータアクセスをストアードプロシージャを経由して提供し、それによりクライアント・サーバ間の相互通信時間を短縮する。ストアドプロシージャはJavaにより記述され、各プロシージャは単一のJavaクラスである。ストアードプロシージャの定義において、ユーザはVoltDBデータベースに対し、標準的なSQLのうちOLTPに特化したサブセットにより処理を行う。その例として、many-way join、group-by、序列化、集約、標準的な数学処理、limitなどがある。

ユーザはアプリケーションに必要とされるスキーマやストアドプロシージャを管理し、VoltDBアプリケーションコンパイラを使用し、VoltDBアプリケーションアーカイブを作成する。コンパイラは自動的にパーティションを行い、必要に応じてデータのレプリケーションを行い、パフォーマンスの最適化を行い、高可用性を保証している。このアーカイブは単一のあるいは複数のVoltDBクラスタへ適用可能である。

VoltDBはクラスタ内およびクラスタ間のレプリケーションにより、堅牢性を確保している。データはクラスタ内の複数の実行サイトに同期的にコミットされ、ノード障害に対する対障害性を実現している。トランザクションはクラスタ間において非同期的にコミットされ、データセンター災害などに対する全クラスタ単位での障害に対し対障害性を提供している。


参照

Tags:

Voltdb 技術概要Voltdb VoltDBの運用Voltdb 参照VoltdbACID (コンピュータ科学)GPLIngresPostgreSQLインメモリデータベースシェアード・ナッシング・アーキテクチャフリーソフトウェアマイケル・ストーンブレーカー関係データベース

🔥 Trending searches on Wiki 日本語:

戦隊大失格エドワード・S・モース浜辺美波おいハンサム!!自殺・自決・自害した日本の著名人物一覧OPS (野球)YOASOBIマニー・パッキャオ終末トレインどこへいく?モンスター・ヴァース林原めぐみ宮澤エマメジャーリーグベースボール夏子福本豊Travis Japanスーパーバンタム級幸澤沙良嵐莉菜横浜DeNAベイスターズ中村里砂新潟少女監禁事件岡部たかしジェームス・ダグラスほな・いこか間宮祥太朗キタニタツヤサンドウィッチマン (お笑いコンビ)長濱ねる黒木麗奈吉瀬美智子神谷明采松本龍 (政治家)岸田文雄マルシアマッシュル-MASHLE-石原さとみ岸辺露伴 ルーヴルへ行く冴羽獠石田匠ジョンリル・カシメロ国府達矢藤原道長斎藤佑樹ザ・ファブル麿赤兒ハリー・ポッターシリーズVaundy岡副麻希松本紀保半沢直樹日向坂46T・Pぼん飯豊まりえ京本政樹新しい学校のリーダーズデーブ・スペクター鶴崎修功矢島晶子佐田真由美フェラチオINI永楽帝緒方恵美ワイルド・スピードシリーズ近衛家上田麗奈WANIMA佐野晶哉ムーキー・ベッツMrs. GREEN APPLE原田知世松田元太バーナード・ヒル那須川天心西崎義展🡆 More