シャードの管理
シャードを水平方向に拡張したり、シャードを分割およびマージしたりできます。次の点に注意してください。
シャードの水平方向の拡張が有効になっている場合、シャードをマージすることはできません。モードが有効になっていない場合は、シャードを分割およびマージできます。
Kafkaを使用してトピックを消費する場合、シャードの水平方向の拡張を有効にする必要があります。
シャードの水平方向の拡張が有効になった後、キー範囲を使用することはできません。すべてのシャードのハッシュキー範囲は同じです。HashKeyモードとPartitionKeyモードではデータを書き込むことができません。アプリケーション層でハッシュモジュラスを実行し、拡張によって発生する書き込みシャードの変更に注意する必要があります。
シャードを水平方向に拡張する
DataHubでは、トピック内のシャードを水平方向に拡張できます。トピックを作成するときに、シャード拡張モードを有効にすることができます。
手順 1
シャード拡張モードを有効にします。

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


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

シャードの分割とマージ
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:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDataHub 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:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDataHub 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 に変更できます。