こんにちは、山内です。
このエントリーではFoundationDBのインストール手順を紹介します。
FoundationDBとは
ACID特性を完全保証するKey-Valueストアで、パフォーマンスの高さとANSI SQLをサポートしていることで最近注目されているデータベースです。
Multi-Model Database — FoundationDB
https://foundationdb.com/
同社のブログでは次のように述べられています。
Databases at 14.4MHz DEC 10, 2014 - BY DAVE ROSENTHAL
このテストではそれなりのマシン†を使っていますが、Cassandra‡よりパフォーマンスに優れていることに驚きです。
FoundationDBのKey-Value StoreとSQL Layerをインストールすると、Key-Value Storeに対してSQLでアクセスできるようになります。また、SQL LayerはREST APIもサポートしており、curlコマンドで次のような操作も可能です。
animals.hamstersテーブルの中からプライマリキー100のデータをGETする例:
$ curl http://localhost:8091/v1/entity/animals.hamsters/100 [ { "hamster_id": 100, "hamster_name": "Winter White", "birthday": "2015-01-01 10:31:29", } ]
SQL Layerはロードバランシングも備えています。例えば複数のKey-Value StoreでClusterを構成しているときにSQL Layerは自動的に負荷の少ないノードにアクセスします。
今回は次のような環境でFoundationDBを構築していきます。
・Ubuntu 14.10
・Google Compute Engine f1-micro(14.4MHzでは動かない)
Key-Value Storeのダウンロード
はじめにKey-Valueストアをダウンロードします。
少し一手間なのですが、パッケージをインストールする前にメールアドレスを入力してdebパッケージのダウンロードURLを入手しなければなりません。
https://foundationdb.com/get#ubuntuのダウンロードボタンをクリックするとメールアドレスの入力フォームが開くので、メールアドレスを入力します。
ダイアログにも記載がありますが、アップデート情報なども送られてくるようです。
URLが記載されたメールが届いたらダウンロードします。(URLはダミーです。)
$ wget https://foundationdb.com/downloads/token/snoopy/key-value-store/3.0.6/foundationdb-server_3.0.6-1_amd64.deb $ wget https://foundationdb.com/downloads/token/spike/key-value-store/3.0.6/foundationdb-clients_3.0.6-1_amd64.deb
Key-Value Storeのインストール
dpkgでクライアントとサーバーをインストールします。
$ sudo dpkg -i foundationdb-clients_3.0.6-1_amd64.deb (Reading database ... 54615 files and directories currently installed.) Preparing to unpack foundationdb-clients_3.0.6-1_amd64.deb ... Unpacking foundationdb-clients (3.0.6-1) over (3.0.6-1) ... Setting up foundationdb-clients (3.0.6-1) ... Processing triggers for libc-bin (2.19-10ubuntu2.2) ...
$ sudo dpkg -i foundationdb-server_3.0.6-1_amd64.deb Selecting previously unselected package foundationdb-server. (Reading database ... 54615 files and directories currently installed.) Preparing to unpack foundationdb-server_3.0.6-1_amd64.deb ... Unpacking foundationdb-server (3.0.6-1) ... Setting up foundationdb-server (3.0.6-1) ... >>> configure new single memory Database created >>> status Using cluster file `/etc/foundationdb/fdb.cluster'. Unable to retrieve all status information. Configuration: Redundancy mode - single Storage engine - memory License - See foundationdb.com/license Coordinators - 1 Cluster: FoundationDB processes - 0 Machines - 0 Fault Tolerance - 0 machines Server time - Sat Feb 7 11:40:29 2015 Data: Replication health - (Re)initializing automatic data distribution Moving data - unknown (initializing) Sum of key-value sizes - unknown Disk space used - unknown Operating space: Unable to retrieve operating space status Workload: Read rate - unknown Write rate - 0 Hz Transactions started - 0 Hz Transactions committed - 0 Hz Conflict rate - 0 Hz Client time: Sat Feb 7 11:40:29 2015 Processing triggers for ureadahead (0.100.0-16) ...
fdbcliコマンドで対話環境に入ることができます。
statusコマンドでシステム状況を確認できます。
$ fdbcli Using cluster file `/etc/foundationdb/fdb.cluster'. The database is available. Welcome to the fdbcli. For help, type `help'. fdb> status Configuration: Redundancy mode - single Storage engine - memory License - See foundationdb.com/license Coordinators - 1 Cluster: FoundationDB processes - 1 Machines - 1 Memory availability - 0.8 GB per process on machine with least available >>>>> (WARNING: 4.0 GB recommended)
警告が出ました。4GB以上推奨のようです。
デフォルトではストレージエンジンがmemoryになっていますが、SSDに最適化されたssdに変更することもできます。
memoryの場合、データはメモリ上にストアされディスク上にログが置かれます。すべてのデータがメモリに無いといけないので巨大なデータベースには向きません。デフォルトでは1データが1GB以上のものはストアできない仕様になっているようですが、そのようなデータをストアする場面はそうそう無いと思いますので気にしなくて大丈夫でしょう。
memoryの特性としてはシーケンシャルな書き込み性能が高い反面、ランダムI/Oアクセスに弱いことがあります。また、再起動をかけたときディスク上のログからデータベースを再構築するためssdに比べてスタートに時間がかかります。とはいえ、要する時間は数秒から数分単位ということらしいので大きなデメリットにはならないと思います。
SQL Layerのダウンロード
Key-Valueストアのダウンロード同様に、https://foundationdb.com/layers/sql#sql-ubuntuからダウンロードURLを入手します。(URLはダミーです。)
$ wget https://foundationdb.com/downloads/token/snoopy/sql-layer/2.1.0/fdb-sql-layer_2.1.0-1_all.deb $ wget https://foundationdb.com/downloads/token/spike/sql-layer/2.1.0/fdb-sql-layer-client-tools_2.1.0-1_all.deb
SQL Layerのインストール
SQLレイヤーは Java Runtime Environment (JRE) 7以降が必要なので、JREを先にインストールします。
$ sudo apt-get install default-jre $ sudo dpkg -i fdb-sql-layer_2.1.0-1_all.deb $ sudo dpkg -i fdb-sql-layer-client-tools_2.1.0-1_all.deb
以上です。次回は、SQLでFoundationDBを操作してみたいと思います。