Couchbase Serverは、 バケットを用いたデータ管理サービスを提供し、これらは仮想コンテナ単位にデータを分離しています。バケットは、Couchbase Serverのクラスタ内の物理的なリソースの論理グループです。これらは、クラスタを介して複数のクライアントアプリケーションで使用できます。バケットはデータストレージを構成、管理、分析するための安全な手段を提供します。
CouchbaseServerのバケットには、1)memcachedのバケットと、2)Couchbaseのバケットの二種類があります。これらは、インメモリのみのデータ保存か、より信頼性を高めるためにインメモリとディスクを併用してデータを保存するかの違いです。CouchbaseServerをセットアップするとき、どちらのタイプを利用するのか選択することができます。
表1.1 Couchbaseの紹介—バケットの種類
バケットタイプ | 説明 |
---|---|
Couchbase | 高可用性があり動的に再構成可能な分散データストレージ、永続性とレプリケーションのサービスを提供します。 Couchbaseバケットはオープンソースのmemcachedプロトコルに100%互換性があり、分散キー/バリューキャッシュとしての理念が組み込まれています。 |
Memcached | 直接的なアドレス指定による、分散(スケールアウト)、インメモリのキー/バリューキャッシュを提供します。memcachedのバケットは、リレーショナルデータベース技術と一緒に使用するように設計されています。 – 使用頻度の高いデータをキャッシュすることによって、Webアプリケーションを提供するWebサーバからデータベースサーバで実行しなければならないクエリの数を減らします。 |
これらのバケットタイプは異なる機能を持っています。Couchbaseタイプのバケットは、高可用性と動的再構成可能な分散データストアを提供します。Couchbaseタイプのバケットは、サービス要求を継続すると同時に、ノードの障害時はクラスタの再構成を可能にします。Couchbaseタイプのバケットは、次の主要な機能を提供します。
表1.2 Couchbaseの紹介—バケット機能
機能 | 説明 |
---|---|
キャッシュ | Couchbaseのバケットは、RAMを介して動作します。データはRAMに保存され、ディスクに書き込むことで永続化されます。データがRAMから読み込まれた時も、設定値に達するまでデータはRAMにキャッシュし続けます。リクエストされたデータがRAM上にキャッシュされていなかった場合、自動的にディスクから読み込まれます。 |
永続性 | データオブジェクトを、サーバの再起動または程度の軽い障害から保護するために、メモリからハードディスクリソースに非同期で永続化することができます。永続性の設定は、バケットレベルで行います。 |
レプリケーション | Couchbaseタイプのバケットでは、全てのデータオブジェクトのコピーを受け取るレプリカサーバの数を設定できます。ホストマシンに障害が発生した場合、レプリカ・サーバーはホストサーバーに昇格することができ、フェイルオーバー機能によってクラスタ全体として高可用性を実現します。レプリケーションは、バケットレベルで設定します。 |
リバランス | リバランスはリソースをクラスタ化することによる負荷分散と、クラスタへの動的なバケットおよびサーバの追加や削除を可能にします。 |
表1.3 Couchbaseの概要 - バケットタイプによる比較
機能 | memcachedバケット | Couchbaseバケット |
---|---|---|
アイテムのサイズ制限 | 1Mバイト | 20Mバイト |
永続性 | いいえ | ○ |
レプリケーション | いいえ | ○ |
リバランス | いいえ | ○ |
統計 | メモリ上の情報のみ | 全ての情報 |
クライアントサポート | Ketama consistent hashingを使用 | フルスマートクライアントのサポート |
設定することができる3つのバケットのインタフェースタイプがあります。
デフォルトバケット
デフォルトバケットは、常に11211番ポートで動作する非SASL認証のCouchbaseバケットです。Couchbaseのインストール時にこのバケットは自動的に設定されます。このバケットは、インストール後に削除することができ、また後で再追加できますが、"default"という名前のバケットを再度追加する場合、11211番ポートで、非SASL認証バケットにする必要があります。"default"以外の名前のバケットは非SASL認証バケットであっても11211番ポートにすることはできません。デフォルトバケットはvBucket対応のスマートクライアント、ASCIIクライアントまたはSASL認証を使用しないバイナリクライアントで接続できます。
非SASLバケット
非SASLバケットは、11211番以外の使用可能な任意のポートに配置することができます。バケットが"default"という名前である場合は11211番ポートを利用できます。個々のポート上には1つの非SASLバケットしか配置できません。非SASLバケットは、vBucket対応スマートクライアント、ASCIIクライアントまたはSASL認証を使用しないバイナリクライアントで接続できます。
SASLバケット
SASL認証Couchbaseバケットは、11211番ポートにのみ配置することができ、各バケットは、その名前とパスワードによって区別されます。SASLバケットは、11211番以外のポートに配置できません。SASLバケットは、vBucket対応スマートクライアントまたはSASLをサポートしているバイナリクライアントのどちらかで接続できます。これらのバケットは、ASCIIクライアントで接続することはできません。
スマートクライアントは、Couchbase管理のREST APIを使用して、クラスタ内の変化を検知します。バケットはマルチテナント用に個々のアプリケーションを分離するため、あるいはデータタイプを分離し、パフォーマンス向上や可視性を制御するために利用できます。 Couchbase Serverは、異なるバケットにアクセスするために別のポートを設定することができます。そしてそれぞれのバケットにSASL認証を利用したバイナリプロトコルか、認証なしのASCIIプロトコルで接続するか選択することができます。
Couchbase Serverは、お使いの環境に応じて、異なるバケットタイプ(Couchbaseとmemcached)をミックスして使用してすることができます。異なるタイプのバケットであっても同じリソースプールとクラスタリソースを共有します。リソースの使用量がクラスタ全体で管理できるように、RAMとディスク使用量の割り当てはバケットごとに設定されています。時間が経ち、利用パターンや優先順位が変化した際に、管理者がリソースを再分配できるように稼動中のクラスタの割り当てを変更することができます。