すべてのプロダクト
Search
ドキュメントセンター

DataHub:シャードの管理

最終更新日:Jan 17, 2025

シャードの管理

シャードを水平方向に拡張したり、シャードを分割およびマージしたりできます。次の点に注意してください。

  1. シャードの水平方向の拡張が有効になっている場合、シャードをマージすることはできません。モードが有効になっていない場合は、シャードを分割およびマージできます。

  2. Kafkaを使用してトピックを消費する場合、シャードの水平方向の拡張を有効にする必要があります。

  3. シャードの水平方向の拡張が有効になった後、キー範囲を使用することはできません。すべてのシャードのハッシュキー範囲は同じです。HashKeyモードとPartitionKeyモードではデータを書き込むことができません。アプリケーション層でハッシュモジュラスを実行し、拡張によって発生する書き込みシャードの変更に注意する必要があります。

シャードを水平方向に拡張する

DataHubでは、トピック内のシャードを水平方向に拡張できます。トピックを作成するときに、シャード拡張モードを有効にすることができます。

手順 1

シャード拡張モードを有効にします。

1

手順 2

次の図に示すように、[編集] アイコンをクリックしてシャードの数を変更します。

23

手順 3

水平方向の拡張後にシャードリストを表示します。

4

シャードの分割とマージ

DataHubでは、シャードを分割またはマージすることで、トピックをスケールインまたはスケールアウトできます。

シナリオ

DataHubはスケーリングをサポートしています。トラフィックの急増に対応するためにシャードの数を増やし、リソースを節約するためにシャードの数を減らすことができます。たとえば、ダブル 11 の間にトピックのスループットがトラフィックの急増に対応できない場合は、既存のシャードを最大 256 シャードに分割して、スループットを 1,280 MB/s に増やすことができます。ダブル 11 後にトラフィックが減少すると、マージ操作を実行することで、必要に応じてシャードの数を減らすことができます。

シャードのプロパティ

ListShard操作を呼び出して、すべてのシャードの詳細をクエリできます。

{
    "ShardId": "string",
    "State": "string",
    "ClosedTime": uint64,
    "BeginHashKey": "string",
    "EndHashKey": "string",
    "ParentShardIds": [string,string,],
    "LeftShardId": "string",
    "RightShardId": "string"
}

シャードの分割

DataHub SDKを使用するか、DataHubコンソールでシャードを分割できます。シャードを分割するには、シャードIDと 128 ビットのハッシュキー値を指定します。シャードが 2 つのチャイルドシャードに分割されると、チャイルドシャードのIDとハッシュキー範囲が返されます。親シャードのステータスは CLOSED に変更されます。たとえば、分割操作の前に次の親シャードが存在するとします。

ShardId:0 Status:ACTIVE BeginHashKey:00000000000000000000000000000000
    EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

DataHub SDKを使用してシャードを分割します。

String shardId = "0";
SplitShardRequest req = new SplitShardRequest(projectName, topicName, shardId, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
SplitShardResult resp = client.splitShard(req);

分割操作後、親シャードは次の 3 つのシャードになります。

ShardId:0 Status:CLOSED BeginHashKey:00000000000000000000000000000000
                    EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ShardId:1 Status:ACTIVE BeginHashKey:00000000000000000000000000000000
                    EndHashKey:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ShardId:2 Status:ACTIVE BeginHashKey:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                    EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

シャードのマージ

DataHub SDKを使用するか、DataHubコンソールで隣接する 2 つのシャードをマージできます。2 つのシャードがマージされると、新しいシャードのIDとハッシュキー範囲が返されます。2 つの親シャードのステータスは CLOSED に変更されます。たとえば、マージ操作の前に次の 2 つの親シャードが存在するとします。

ShardId:0 Status:ACTIVE BeginHashKey:00000000000000000000000000000000
                    EndHashKey:7FFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF
ShardId:1 Status:ACTIVE BeginHashKey:7FFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF
                    EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

DataHub SDKを使用して 2 つのシャードをマージします。

String shardId = "0";
String adjacentShardId = "1";
MergeShardRequest req = new MergeShardRequest(projectName, topicName, shardId, adjacentShardId);
MergeShardResult resp = client.mergeShard(req);

マージ操作後、親シャードは次の 3 つのシャードになります。

ShardId:0 Status:CLOSED BeginHashKey:00000000000000000000000000000000
                    EndHashKey:7FFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF
ShardId:1 Status:CLOSED BeginHashKey:7FFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF
                    EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ShardId:2 Status:ACTIVE BeginHashKey:00000000000000000000000000000000
                    EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

使用上の注意

マージまたは分割操作が実行されると、親シャードのステータスは CLOSED に変更されます。クローズされたシャードには新しいデータを書き込むことはできませんが、クローズされたシャード内の既存のデータは引き続き使用できます。クローズされたシャードは、2 つのシャードに分割したり、他のシャードとマージしたりすることはできません。シャード内のデータの有効期限 (TTL) が切れると、シャードは削除されます。シャードに DataConnector が構成されている場合、シャード内のすべてのデータが宛先サービスにアーカイブされた後、DataConnector は停止します。シャードが削除されると、DataConnector は自動的に削除されます。新しいシャードは、ステータスが Active に変更された後にのみ使用できます。ステータスは 5 秒以内に Active に変更できます。