データ基盤

Amazon Kinesisとは|分割を32個に増やしても、偏りが強いと最大は平均の5.09倍だった

分割を増やすと均されるのか順序はどこまで守られるのか受け手を増やせるのか

出来事20万件を32個の分割へ割り当てました。偏りがなければ最大は平均の1.28倍です。

偏りが強いと5.09倍になります。分割を増やすほど、この比は広がりました。

この記事の要点

  • 偏りなしで1.28倍
  • 偏りが強いと5.09倍
  • 分割1個なら順序は100.0%
  • 16個では6.4%

分割を32個に増やしても、偏りが強いと最大は平均の5.09倍

増減はできます。ただし、同じキーは同じ分割へ行くので、キーの偏りは分割では消えません。

Amazon Kinesisでは、流れの規模を変えられます。公式は伸び縮みできるため、流れを大きくも小さくもでき、記録が期限切れになる前に失われることがないと述べています。

大きくすれば均されるのか。実際に振り分けて数えました。

分割数と偏りを変える

text
出来事 200000件。キーは2000種。キーの偏りを変えて、分割ごとの件数を見る
分割はキーを混ぜてから割り当てる。同じキーは必ず同じ分割へ入る

偏り        分割数  最も多い分割  平均      最大が平均の何倍か
なし          4個            53399件    50000件               1.07倍
なし          32個            8015件     6250件               1.28倍

1/i^1       4個            64253件    50000件               1.29倍
1/i^1       8個            41939件    25000件               1.68倍
1/i^1       16個           35686件    12500件               2.85倍
1/i^1       32個           31811件     6250件               5.09倍

偏りがなければ、32個に分けても最大は平均の1.28倍です。ほぼ均等になります。

偏りが強い場合は5.09倍で、分割を増やすほど比が広がります。

増やしても止まる理由

最も多い分割の件数を見てください。4個で64253件、32個でも31811件です。半分にしかなりません。

平均は5万件から6250件へ8分の1になります。分母だけが下がるので、比が広がります。

止まる理由は単純で、いちばん多いキーが1つの分割に入ったままだからです。増やしても、そのキーは分かれません。

偏りがあると、分割を増やすほど比が広がる。

最大が平均の何倍か(倍)分割数(個)→5.635.2偏りなし・4個偏りなし・32個偏り強・4個偏り強・16個偏り強・32個出来事20万件・キー2000種での実測。偏りがなければ分割を増やしても比はほぼ変わらない。
図1 ── 分割数と、最大が平均の何倍か
出典AWS ドキュメント「What is Amazon Kinesis Data Streams?」2026-08-18 確認
The elasticity of Kinesis Data Streams enables you to scale the stream up or down, so that you never lose data records before they expire.
原文AWS ドキュメント「What is Amazon Kinesis Data Streams?」 この内容の有効期限2027-02-18

分割16個では、順序が守られる組は6.4%だった

届くのは速くても、順序は同じ分割の中だけです。分けるほど守られる範囲が狭くなります。

Amazon Kinesisでは、置いてから読めるまでが短いとされています。公式は記録が流れに置かれてから取り出せるようになるまでの遅れは、通常1秒未満であると述べています。

速く届いても、順序が守られるかは別です。どこまで守られるかを数えました。

分割数と順序

text
出来事 100000件。同じ分割の中では順序が守られ、分割をまたぐと守られない

分割数  同じキーの並び  別のキーとの並び  順序が守られる組の割合
1個              99999組                0組                  100.0%
4個              24989組            75010組                   25.0%
16個              6352組            93647組                    6.4%

分割1個なら100.0%です。ただし、その1個が処理の上限になります。

16個に分けると6.4%まで下がります。ほとんどの組で順序が保証されません。

キーの選び方が範囲を決める

守られるのは同じキーの出来事どうしです。キーの選び方が、順序の範囲を決めます。

  1. 注文番号をキーにする。同じ注文の中では順序が守られる
  2. 顧客番号をキーにする。範囲は広がるが、偏りも強くなる
  3. 固定値をキーにする。全体で守られる。分割1個と同じになる
  4. キーを付けない。順序は守られない

2番目を選ぶと、前の節の偏りが強くなります。順序の範囲と、偏りの少なさは逆を向きます

同じ関係は、出来事を並べて残す別の仕組みでも出ます。その計測はApache Kafkaの記事にあります。

出典AWS ドキュメント「What is Amazon Kinesis Data Streams?」2026-08-18 確認
The delay between the time a record is put into the stream and the time it can be retrieved (put-to-get delay) is typically less than 1 second.
原文AWS ドキュメント「What is Amazon Kinesis Data Streams?」 この内容の有効期限2027-02-18

読んでも減らないので、受け手を後から足せる

複数の処理が同じ流れを、それぞれの進み方で読めます。用途ごとに分けられます。

Amazon Kinesisでは、読み取りが出来事を消しません。公式は複数の処理が1つの流れからデータを読み取れるので、保管と加工のような複数の動作を、同時にかつ互いに独立して行えると述べています。

「互いに独立して」が要点です。片方が遅れても、もう片方は進めます

分けられるもの

  1. すぐ集計する処理。遅れを許さない
  2. 保管する処理。遅れてもよい
  3. 試している処理。落ちても他に影響しない
  4. 後から足した処理。過去の分から読み直せる

3番目が効きます。新しい処理を試しても、既存の処理が止まりません

4番目には期限があります。期限を過ぎた出来事は読めないので、読み直したい範囲から期限を決めることになります。

受け手ごとの進みを見る

独立している以上、受け手ごとに進みが違います。まとめて見ていると、遅れている1つに気づけません。

見るのは、受け手ごと・分割ごとの読み残しです。前の節の偏りがあると、特定の分割だけが遅れます。

5.09倍の偏りがある分割は、他の5倍の量を処理することになります。そこだけが追いつかないという形が起きます。

余談 この計測での注意

キーの偏りは式で作ったもので、実在の分布ではありません。「1/i^1」は、i番目に多いキーの出現がiに反比例する形として置いた偏りです。順序の計測も、同じ分割の中では必ず守られ、またぐと守られないという単純な形にしました。実際には受け取る側の並列度でも変わります。ここで見せているのは、分割を増やしても1つのキーは分けられないこと、順序の範囲と偏りの少なさが逆を向くことの2つです。

出典AWS ドキュメント「What is Amazon Kinesis Data Streams?」2026-08-18 確認
Multiple Kinesis Data Streams applications can consume data from a stream, so that multiple actions, like archiving and processing, can take place concurrently and independently.
原文AWS ドキュメント「What is Amazon Kinesis Data Streams?」 この内容の有効期限2027-02-18

よくある質問

分割を増やせば均されますか
偏り次第です。偏りがなければ32個で1.28倍ですが、強い偏りでは5.09倍になりました。
順序はどこまで守られますか
同じ分割の中だけです。分割16個では、順序が守られる組は6.4%でした。
受け手を増やせますか
増やせます。複数の処理が同じ流れから、同時にかつ互いに影響せずに読み取れます。
書いてから読めるまでどれくらいですか
公式は、置いてから取り出せるまでの遅れが通常1秒未満だと述べています。

まとめ

  • 出来事を流し続ける
  • 分割しても集中は残る
  • 順序は分割の中だけ
  • 受け手は独立に増やせる

今日から始められること

  1. キーごとの件数の偏りを調べる
  2. いまの分割数と最大の分割を比べる
  3. 順序が必要な範囲を洗い出す
  4. 受け手ごとの読み進みを確かめる

実務で組んだAmazon Kinesisのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る