はじめに
本記事では、Couchbase Serverの各種サービスの中から、Dataサービス(Data Service)について解説します。
Dataサービスの役割を理解することは、Couchbase Server管理者にとって必要であるばかりでなく、分散データプラットフォームの検討において、適切なテクノロジーを選択する上でも重要です。
本記事を読むことによって、Couchbase Serverが、ドキュメント指向型に分類されるNoSQLでありながら、その最も基本的な部分で(つまりDataサービスは)、純粋なKVS(キーバリューストア)として、設計されていることが理解しやすいのではないかと考えます(バリューとしてJSONドキュメントを格納することによって、Queryサービス等のJSON関連機能を活用することができますが、バリューには、バイナリデータを格納することも可能です)。
Dataサービスとは
Dataサービスは、Couchbase Serverの管理するデータへのアクセスを提供します。ここで扱われるデータは、メモリ、あるいはディスク上に存在します。Dataサービスへのメモリの割り当ては設定により調整することが可能です。
Dataサービスは、全てのCouchbaseサービスにおいて、最も基本的なものです。Dataサービスは、クラスターを構成する全てのノードのうち、少なくとも1つのノードで実行される必要があります。
Dataサービスのコンポーネント概要図を下に示します。
Dataサービスの構成要素
Dataサービスは、以下の3つのコンポーネント(とデータ)からなります。
- ディスパッチャ(Dispatcher)
- KV(キーバリュー)エンジン(KV Engine)
- スケジューラー(Scheduler)
ディスパッチャー
- Dataサービスへのリクエストを受けとり、応答を提供します。
- DCP(Database Change Protocol)を使用して、クラスター内の他のノードおよび他のクラスターにデータをストリーミングします。
- 認証を処理します。
KVエンジン
バケットに関する以下の機能を提供します。
マネージドキャッシュ
マネージドキャッシュは、設定されたクォータに従って、バケットに割り当てられたメモリです。これには、パーティションハッシュテーブルが含まれています。これにより、メモリ内およびディスク上の、クラスター全体のさまざまなノード上のバケットアイテムの場所が記録されます。アイテムが書き込まれると、アイテムはまずキャッシュに入り、その後、1つ以上の他のノードに複製するために、複製キューに配置されます。さらに(揮発性のエフェメラル型バケットではなく、デフォルトのCouchbase型バケットの場合)ディスクキューを介して、ディスクに書き込まれます。
チェックポイントマネージャ
チェックポイントマネージャは、チェックポイント(checkpoint)という名称のデータ(構造)を使用して、アイテムの変更を追跡します。チェックポイントには、メモリ内のアイテムとして加えられ、まだレプリケーションキューとディスクキューに配置されていない変更が記録されます。
アイテムページャー
必要に応じてスペースを解放するために、最近使用されていないアイテムをメモリから取り除きます。
フラッシャー
バケット内のすべてのアイテムを一括削除します。バケットのデフォルト設定では、フラッシュ処理は無効になっています。 。
有効期限(Expiry)ページャー
期限切れのアイテムをスキャンし、メモリとディスクから消去します。その後、トゥームストーンは、デフォルトの3日間残ります。有効期限ページャーは、デフォルトで60分ごとに実行されます。
バッチリーダー
ディスクキューに溜まっている複数のアイテムに加えられた変更を、ディスクに書き込むために、バッチとして結合することにより、パフォーマンスを向上させます。
スケジューラー
主にI/Oを処理するためのスレッドのプールです。スレッドは4種類に分けられ、互いに独立して、影響を与えずに実行されます。
Non IO
ディスクアクセスを必要としないスケジューラー専用のタスクです。接続通知、チェックポイントの削除、ハッシュテーブルのサイズ変更などが含まれます。
Aux IO (補助 auxiliary IO)
フェッチ、スキャン、およびバックフィルタスク等、補助的な処理を担います。
Reader IO
ディスクから情報を読み取るスレッドです。
Writer IO
ディスクに情報を書き込むスレッドです。
最後に
本記事の内容が、Couchbase Server管理者の方だけでなく、分散データプラットフォームを検討されている方にも、活用いただけるようであれば幸いです。
一つの記事で、全体を敷衍することは不可能であるため、分からない用語などが登場しているかもしれませんが、その際には、下記の関連情報を参考としていただきますよう、お願いします。
関連情報
NoSQL/JSONデータベースCouchbase理解・活用へのロードマップ