シャードは、LogstoreまたはMetricstoreの読み取りおよび書き込み容量を制御するために使用されます。 Simple Log Serviceでは、データはシャードに保存されます。
MD5値の範囲
各シャードにはMD5値の範囲があり、各範囲は [BeginKey, EndKey) の形式で左クローズと右オープンの間隔です。 各範囲は、他のシャードの範囲と重複しません。 MD5値の範囲全体が次の範囲内にあります: [00000000000000000000000000000000, ffffffffffffffffffffffffffffffff) 。 LogstoreまたはMetricstoreを作成するときに、シャードの数を指定できます。 Simple Log Serviceは、各シャードのMD5値の範囲全体を均等に分割します。
BeginKey: シャードの始まり。 値は、シャードのMD5値範囲に含まれます。
EndKey: シャードの終わり。 値は、シャードのMD5値範囲から除外されます。
この例では、Logstore Aに4つのシャードがあります。 次の表に、各シャードのMD5値の範囲を示します。
表 1. MD5値範囲
シャードID | 値の範囲 |
Shard0 | [00000000000000000000000000000000,40000000000000000000000000000000) |
Shard1 | [40000000000000000000000000000000,80000000000000000000000000000000) |
Shard2 | [80000000000000000000000000000000, c00000000000000000000000000000000000) |
Shard3 | [c0000000000000000000000000000000,ffffffffffffffffffffffffffffffff) |
シャードからデータを読み取るには、シャードのIDを指定する必要があります。 データをシャードに書き込むには、負荷分散方法を使用するか、ハッシュキーを指定します。
負荷分散方式を使用する場合、各データパケットは使用可能なシャードにランダムに書き込まれます。
実際の書き込みトラフィックが1つのシャードの容量を超える場合は、負荷分散方法を使用することを推奨します。
ハッシュキーを指定すると、MD5値の範囲に指定されたハッシュキーの値が含まれるシャードにデータが書き込まれます。
たとえば、シャード範囲はMD5値範囲で表示されます。 Logstoreにデータを書き込むためのハッシュキーとして5Fを指定した場合、Shard1のMD5値の範囲にハッシュキー5Fが含まれているため、データはShard1に書き込まれます。 ハッシュキーとして8Cを指定した場合、Shard2のMD5値の範囲にハッシュキー8Cが含まれているため、データはShard2に書き込まれます。
シャード容量
各シャードは読み取り容量と書き込み容量を提供します。 詳細については、「データの読み取りと書き込み」をご参照ください。
実際のデータトラフィックに基づいてシャードの数を調整することを推奨します。 データトラフィックがシャードの読み取りまたは書き込み容量を超える場合は、シャードを複数のシャードに分割して容量を増やすことができます。 データトラフィックがシャードの読み取りまたは書き込み容量よりもはるかに少ない場合は、シャードを別のシャードとマージして容量を減らし、コストを節約できます。
Simple Log Service APIを呼び出してデータを書き込むときにエラーコードの403または500が頻繁に返される場合は、CloudMonitorコンソールに移動してトラフィックとステータスコードを確認できます。 次に、シャードの数を増やすかどうかを判断できます。
データトラフィックがシャードの容量を超える場合、Simple Log Serviceは可能な限り最高のサービスを提供しようとします。 ただし、Simple Log Serviceはサービスの品質を保証できません。
シャードステータス
シャードは、readwrite (読み取りおよび書き込み) 状態またはreadonly (読み取り専用) 状態にすることができます。
シャードを作成すると、シャードはreadwrite状態になります。 シャードを分割またはマージすると、ステータスがreadonlyに変わります。 新しく生成されたシャードはreadwrite状態です。 シャードのステータスは、シャードの読み取り容量には影響しません。 リードライト状態のシャードにはデータを書き込むことができますが、リードオンリー状態のシャードにはデータを書き込むことはできません。
分割とマージ
Simple Log Serviceを使用すると、シャードを分割およびマージできます。
シャードを分割すると、さらに2つのシャードが追加されます。 新しいシャードはreadwrite状態で、元のシャードの下にリストされます。 新しいシャードのMD5値の範囲には、元のシャードのMD5値の範囲が含まれます。
シャードを分割する前に、シャードはreadwrite状態である必要があります。 シャードを分割すると、シャードのステータスがreadwriteからreadonlyに変わります。 これは、データをシャードから読み取ることはできますが、シャードに書き込むことはできません。
2つのシャードを1つのシャードにマージできます。 新しいシャードはreadwrite状態で、元のシャードの下にリストされています。 新しいシャードのMD5値の範囲には、元の2つのシャードのMD5値の範囲が含まれます。
シャードをマージするときは、readwrite状態のシャードを指定する必要があります。 このシャードをシャードリストの最後のシャードにすることはできません。 Simple Log Serviceは、MD5値の範囲が指定されたシャードの横にあるシャードを検索し、2つのシャードをマージします。 シャードをマージすると、シャードのステータスがreadwriteからreadonlyに変わります。 これは、データをシャードから読み取ることはできますが、シャードに書き込むことはできません。