スマートスタイル TECH BLOG|データベース&クラウドの最新技術情報を配信

Couchbase Serverのデータ管理

この記事では、Couchbase Serverのデータ管理についてご説明します。

データ管理

Couchbase Serverは、キー値とバリュのデータを管理します。

  • 「キー」は、バケット(後述します)内でバリュを識別するための一意で不変の値です。
  • 「バリュ」は、バイナリ形式もしくはJSON形式のデータです。
  •  「キー」と「バリュ」を組み合わせたものを「アイテム」または「ドキュメント」(※)と呼びます。

※ドキュメントは様々な意味で用いられるため、今回はアイテムを用います。

複数のアイテムをデータとして管理しているデータベースがCouchbase Serverとなります。

データの保存領域

Couchbase Serverは、データ(≒アイテム)をバケットと呼ばれる領域に保存します。
アイテムを保存する前に、まずバケットを作成しておく必要があります。
バケットは、CouchbaseのWebコンソール、REST API、CLIのいずれかを使用して作成できます。

今回は、CouchbaseのWebコンソールでのバケット作成を例としてとりあげます。
バケット作成時には、最低限、以下の情報が必要となります。

  • バケット名
  • アイテムを保存するために必要なメモリサイズ
  • バケットタイプの選択

以下は CouchbaseのWebコンソールの画面となります。

バケットのタイプ

Couchbase Serverには、3つのバケットタイプがあります。

  1. Couchbaseバケット
  2. Ephemeralバケット
  3. Memcachedバケット

メモリファースト(アーキテクチャ)であることは、全タイプ共通です。
一方、データの永続性、データの削除の仕様は、タイプによって異なります。

各バケットタイプの特長

各バケットの特長についてアイテムの管理方法を中心にご説明します。

Couchbaseバケット

Couchbaseバケットは、データの永続性をサポートするため、メモリだけでなく、ディスクにデータを保存します。
メモリの使用率がクォータ(閾値 以後、クォータを利用)を超えると、
最も利用頻度が低いアイテムを削除します。
このアイテムはメモリからは削除されますが、ディスクに保存されています。
削除したアイテムが必要な時は、アイテムはディスクからメモリへリロードされます。
削除の動作設定はバケット作成時に設定します。

今回は、CouchbaseのWebコンソールでの設定例を示します。

  • バケット作成時に「Advanced bucket settings」を選択します
  • 「Ejection Method」から「Value-only」を選択した場合
    排出時に、アイテムの「バリュー」のみを削除することでパフォーマンスを優先します。
  • 「Ejection Method」から「Full」を選択した場合
    排出時に、アイテム全体を削除することでメモリの使用率を優先します。

以下の図は、 Couchbaseバケット作成時の画面設定です。

 Ephemeralバケット

Ephemeralバケットは、データの永続性をサポートしません。
データの保存先は、メモリのみとなり、ディスクにデータを保存しません。
メモリの使用率がクォータを超えると、バケット作成時の設定にもとづいた
動作をします。

今回は、CouchbaseのWebコンソールでの設定例を示します。

  • バケット作成時に「Advanced bucket settings」を選択します。
  • 「Ejectin Policy」から「No ejection」を選択した場合
    排出時に、アイテムを削除しないため、アイテムの追加は、エラーになります。
  • 「Ejectin Policy」から「Eject data when RAM is full」を選択した場合
    排出時に、アイテムを削除し、新しいアイテムをメモリに保存します。

以下の図は、Ephemeralバケット作成時の画面設定です。

 Memcachedバケット

Memcachedバケットは、データの永続性をサポートしません。
MySQLなどのRDBのオンメモリキャッシュとして利用する場合のバケットです。
メモリの使用率がクォータを超えると、アイテムが排出されます。
※Couchbase Sever 6.6からMemcachedバケットの利用に関して、マニュアル上、非推奨となりました。

今回は、CouchbaseのWebコンソールでの設定例を示します。
以下の図は、Memcached バケット作成時の画面設定

各バケットタイプの機能比較

各バケットの機能比較表を以下にまとめました。

機能 Memcachedバケット Couchbaseバケット Ephemeralバケット
アイテムのサイズ制限 1 MB 20 MB 20 MB
永続性 No Yes No
暗号化 Yes Yes Yes
アイテム有効期限値 Yes Yes Yes
バケット有効期限値 No Yes Yes
データ圧縮 No Yes Yes
バックアップ No Yes Yes

※トランザクションを利用する時は、アイテムのサイズ制限が10MBになります。

アイテムの有効期限

設定した有効期限値にもとづき、アイテムを削除する機能があります。
有効期限値の設定方法としては、以下の2パターンがあります。

  • バケット作成時に設定
  • SDK APIを使用して設定

パケット作成時の設定は、CouchbaseバケットおよびEphemeralバケットを利用した場合のみ可能です。

有効期限経過後のアイテム削除

有効期限に達した場合、主に以下のタイミングでアイテムが削除されます。

  • 期限が切れたアイテムにアクセスしようとした
  • 有効期限切れページャ プロセスが実行された

有効期限切れページャとは、デフォルトで60分毎に実行されるプロセスです。
有効期限経過後のアイテムをスキャンして、メモリとディスクから消去します。

まとめ

Couchbase Serverのデータ管理について、まずは全体のイメージをつかんでいただければと思います。
Couchbase Serverのデータ管理には多様な機能があります。
今後、各機能を取り上げご説明する予定です。

Return Top