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

Couchbase Serverのデータ分散

この記事では、Couchbase Severのデータ分散についてご説明します。

Couchbase Serverは、偏りが無いデータ分散アーキテクチャを実装しています。また、クラスタへのサーバ追加、サーバ停止などの変化に対応したデータ分散処理を実現しています。

データ分散処理は、Couchbaseバケット、Ephemeralバケットが管理する「アクティブバケット」及び、「レプリカバケット」のデータを対象としています。

Couchbase Serverのデータ分散方式

Couchbase Serverのデータ分散方法は、シャーディング方式を利用しデータを分散します。シャーディングでは、大規模なデータを複数のサーバに偏りなく分散するために、データの識別子(一意のキー)を基に予め決めた規則に従って、細かくデータを分割します。そして、データを細かく割り当てることをシャードと呼びます。

シャーディング方式のデータ分散には、以下のような規則(ルール)を利用する場合が多いです。
・「範囲指定」
・「ハッシュ関数」
・「範囲指定とハッシュ関数の両方を利用」

Couchbase Serverはハッシュ関数を採用しデータを分散します。
ハッシュ関数は必ず異なる値(不規則な値)を戻します。この特性を活かし、データを識別するキー値をハッシュ関数に渡し、ハッシュ関数の戻り値とCouchbase Serverが管理しているクラスタ内の「データ分散管理の情報」を基にデータを偏りなく分散するアーキテクチャを実装しています。

下の図を基に、Couchbase Serverのデータ分散についてご説明します。

1.バケット内で一意なドキュメントキー値を基に、Couchbase Serverが使うハッシュ関数から一意の値を求めます。

2.求めた値を基に、Couchbase Serverが管理している「データ分散管理の情報」から、データの割り当て先、vBucket(≒シャード)を見つけます。

3.vBucketは書き込み先のサーバ情報を管理し、書き込み先のサーバへデータを書き込みます。

クラスタ内のDataサービスが稼働しているサーバ構成に変更があると、Couchbase Server内部で、管理している「データ分散管理の情報」を変更します。

そして、「データ分散管理の情報」を基にデータの再配置を行うリバランス機能を使い、クラスタ構成変更後もデータの偏りが無いクラスタ環境を実現しています。

「データ分散管理の情報」は、クライアントアプリケーションが利用するCouchbase のSDKと連動し、クラスタ構成の変更後も迷うことなくデータを操作することができます。

まとめ

Couchbase Serverのデータ分散は、大規模なデータをクラスタ内で共有します。そして、クラスタ内の複数サーバからデータを読み取ることができるため、大量のクエリ処理に対して迅速な応答処理を実現しています。

Return Top