エンジニア

Ubuntu14.10にFoundationDBをインストールする

投稿日:2015年2月13日 更新日:

こんにちは、山内です。
このエントリーではFoundationDBのインストール手順を紹介します。

FoundationDBとは

ACID特性を完全保証するKey-Valueストアで、パフォーマンスの高さとANSI SQLをサポートしていることで最近注目されているデータベースです。

Multi-Model Database — FoundationDB
https://foundationdb.com/

同社のブログでは次のように述べられています。

驚かないでほしい。新しいバージョンのトランザクションエンジンは毎秒1,440万回のWrite性能を示した。FoundationDBは14.4MHzで動作すると言い換えてもいいだろう。
Databases at 14.4MHz DEC 10, 2014 - BY DAVE ROSENTHAL

このテストではそれなりのマシンを使っていますが、Cassandraよりパフォーマンスに優れていることに驚きです。

† EC2 c3.8xlarge(CPUコア数32、メモリ60GB)32台構成
‡ Compute Engine n1-standard-8(CPUコア数8、メモリ30GB)330台構成

FoundationDBのKey-Value StoreSQL 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を操作してみたいと思います。

採用情報

ワンダープラネットでは、一緒に働く仲間を幅広い職種で募集しております。

-エンジニア
-

© WonderPlanet Inc.