2013年6月20日

イマ旬キーワード

クラウド

クラウド上にシステムを構築する場合、処理性能をスケールさせ、最適な性能を発揮できるよう考慮する必要があります。今回は、データベースの特性と選択基準をご紹介いたします。

技術開発本部 村上 大河

リレーショナルデータベースとキーバリューストア

ビッグデータ処理の時代に向け、様々な種類・手法のデータベースが出始めていますが、現在のところ、主流のデータベースはまだ大きく2種類、リレーショナルデータベース(以下、RDB)とキーバリューストア(以下、KVS)です。それぞれ以下の特徴を持っています。

データベースの種類 データ保持形式 分散方法 主な製品
RDB マスタースレーブ
クラスタ
MySQL参考1
PostgreSQL参考2
など
KVS キーとバリューのペア 負荷分散 Dynamo参考3
Bigtable参考4
Cassandra参考5
など
【図】

図1:データ保持形式の違い

【図】

図2:分散方法の違い

RDBとKVSは一見するとデータの保持形式と分散方法が異なるだけですが、それぞれ次項で述べるデータベースの特性を満たすことを目的に作られているため、システムの処理特性に合わせて選択する必要があります。

データベースの特性

RDBはACIDという特性、KVSはBASEという特性を満たすために作られています。ACIDとは以下4つの要素を意味し、データの一貫性保証を重視しています。

  • Atomicity(原子性)

    トランザクションが成功するか、処理前の状態に戻ることを保証する。

  • Consistency(一貫性)

    トランザクション前後でデータの矛盾が無く、データベースの状態が正しいこと。

  • Isolation(独立性)

    トランザクション実行中のデータ変更や処理内容が他のトランザクションや処理の影響を受けないこと。

  • Durability(永続性)

    一度コミットされた情報は失われないことを保証する。

BASEとは以下3つの要素を意味し、可用性を重視しています。

  • Basically Available(基本的に利用可能)

    利用可能な状態を常に作る。

  • Soft-state(柔軟な状態)

    ノードの状態が一時的に失われても、定期的に状態情報を取得することにより状態が復元される。

  • Eventual Consistency(最終的な一貫性)

    一時的にはデータに不整合な状態が生じるが最終的には一貫性が保たれる。

これらのデータベース特性を考慮した上で、システムに求められる処理特性に合わせてデータベースを選択する必要があります。例えば「複数のデータを一度に処理するようなシステムの場合、処理中のデータが参照できると不正なデータ取得にも繋がるため、厳格なトランザクションが可能なRDBを利用する」、あるいは「想定外の障害やキャパシティを超えてしまった場合でもシステムダウンを防ぎたいので、拡張性の高いKVSを利用する」といった判断で選択を実施します。

参考として、今注目を集めている「スキーマレスデータベース」や「ドキュメント思考データベース」は、KVSを拡張したものになるため、利用する場合はKVSの特徴を考慮することが前提となります。

クラウドでのデータベース利用

RDBやKVSは仮想マシン上に自ら構築する他、クラウドプロバイダが提供している製品を利用することもひとつの手です。AWSのDynamo DBやRDS、salesforceのdatabase.comなどがあります参考6、7。運用コスト削減の反面、細かいチューニングが出来ないといった場合もあるため、システムの処理特性を考慮した上で、プロバイダが提供している物を使うかどうかも合わせた選択が必要です。

著者プロフィール

【写真】

技術開発本部 村上 大河

プロジェクト向けクラウド環境の構築から運用まで幅広く従事。基盤技術を専門とし、OS・ネットワーク・データベース分野に主眼を置く。

イマ旬キーワード

お気軽に
お問い合わせ
ください

クラウド時代のデータベース選択に関するお問い合わせ

お問い合わせフォーム

クラウド時代のデータベース選択に関連する情報

サービス

お客様に安心して利用いただける最適なクラウド基盤を実現

システム開発の手順・環境やサポートを一体化したトータルソリューションで、お客様業務の大幅効率化を実現