データ基盤

Cassandraとは|書き込んだ40000MBに対して、実際に書いた量は171840MBだった

鍵は何を決めるのか実際に書く量はどれだけ増えるのか設定でどこまで減るのか

40000MBを書き込むと、まとめ直しを含めて実際には171840MBを書きます。4.30倍です。

まとめる広がりを4倍にすると6.14倍まで増えました。設定1つで1.4倍違います。

この記事の要点

  • 広がり20倍で4.30倍
  • 広がり4倍で6.14倍
  • 置き場所は鍵が決める
  • 分けても集中は残る

配ることを前提にした作り

1台に置く前提がありません。だから鍵の設計と、書き込みの重ね方が中心の話になります。

Cassandraの位置づけは、公式の1文にまとまっています。Apache Cassandraは、公開された作りの、配って置く形のデータベースであるという記述です。

配って置く以上、どこに置くかを決める仕組みが要ります。それが鍵です。

2つの決めごと

  1. どこに置くか。鍵から節が決まる
  2. どう書くか。追記して、あとでまとめ直す
  3. どう読むか。鍵から引く。条件で探す形ではない
  4. どう配るか。同じ行を複数の節に持つ

1番目と2番目が、この記事で数える対象です。どちらも設計や設定で大きく変わります

読み方の制約

3番目は、鍵から置き場所が決まる仕組みに共通します。読み方を先に決めてから鍵を決めることになります。

同じ制約はDynamoDBの記事でも扱いました。あとから条件を足して探す形は取れません。

出典Apache Cassandra 公式ドキュメント「Overview」2026-08-18 確認
Apache Cassandra is an open-source, distributed NoSQL database.
原文Apache Cassandra 公式ドキュメント「Overview」 この内容の有効期限2027-02-18

置き場所を増やしても、いちばん多い場所は5.10%までしか下がらない

鍵から節が決まるので、同じ鍵は同じ節に行きます。鍵そのものの偏りは分けても消えません。

Cassandraで置き場所を決めるのは、主鍵の必須の部分です。公式は分割:Cassandraのすべての行が持たなければならない主鍵の必須の部分を定める。まとまりの中のどの節にその行が置かれるかを識別するためのものであると説明しています。

節が増えれば均されるのか。実際に振り分けて数えました。

置き場所の数を変える

text
鍵 50,000種・引く回数 500,000回
鍵を混ぜて置き場所を決める。置き場所の数を変えて、いちばん多い置き場所の割合を見る

置き場所の数  均等なら  よく引かれる鍵がある場合  均される場合  最大と均等の比
8個                12.50%                  15.98%        12.60%            1.3倍
32個                3.13%                   7.46%         3.18%            2.4倍
128個               0.78%                   5.52%         0.82%            7.1倍
512個               0.20%                   5.10%         0.22%           26.1倍

512個に分けても、いちばん多い場所は5.10%です。均等の0.20%とは26.1倍の開きがあります。

右から2列目は、引かれ方が均される場合です。こちらはほぼ均等に収まっています。

1つの鍵に集まる場合

Cassandraでは、同じ鍵の行が1つのまとまりとして置かれます。その鍵に行が集まりすぎると、そのまとまりだけが大きくなります

この計測の5.10%は引かれる回数の話ですが、置く量にも同じ偏りが出ます

対策も同じです。鍵に接尾辞を足して分けるか、日付などを鍵の一部に入れて区切ります。

分けるほど、均等との比は広がっていく。

単位: 倍512個26.1倍128個7.1倍32個2.4倍8個に分ける1.3倍鍵5万種・50万回での実測。均等の値だけが下がるため、比のほうは広がっていく。
図1 ── 置き場所の数と、均等との比
出典Apache Cassandra 公式ドキュメント「Overview」2026-08-18 確認
Partition: Defines the mandatory part of the primary key all rows in Cassandra must have to identify the node in a cluster where the row is stored.
原文Apache Cassandra 公式ドキュメント「Overview」 この内容の有効期限2027-02-18

書き込んだ40000MBに対して、実際に書いた量は171840MBだった

書き換えないので、追記してあとでまとめ直します。その分だけ書く量が増えます。

Cassandraが置くファイルは、書き換えられません。公式はSSTableは、Cassandraがデータを保管先に残すために使う、変更されないデータのファイルであると定めています。

変更しないので、新しい内容は別のファイルとして足されます。放っておくとファイルが増え続けるので、あとでまとめ直します。

そのまとめ直しでどれだけ余分に書くかを数えました。

まとめる広がりを変える

text
書き込んだ量 40,000MB。手元にためて 64MB ごとに落とす
落とした先がいっぱいになったら、次の段へまとめ直す

広がり  実際に書いた量  元の何倍  まとめ直した段  収まった段の上限
4倍             245,440MB     6.14倍              3段            40,960MB
10倍            184,640MB     4.62倍              2段            64,000MB
20倍            171,840MB     4.30倍              2段           256,000MB

広がり20倍でも4.30倍です。40000MBを書くために171840MBを書いています。

4倍にすると6.14倍まで増えます。設定1つで1.4倍の違いです。

この方式を選ぶ理由

書く量は増えるのに選ばれるのは、書き込む先がいつも末尾だからです。飛び飛びの位置を書き換えません。

同じ場所を書き換える方式では、書く量は1倍に近くなります。その代わり行ごとに違う位置へ書きに行きます

索引を持つ場合の書きの重さはPostgreSQLの記事で数えていて、索引8個で20.4倍でした。どちらの方式にも、書く側の代償があります。

まとめ直すたびに、書く量が積み上がる。

単位: MB40000書き込んだ量+787201段目のまとめ直し+736002段目+531203段目245440実際に書いた量広がり4倍での実測。広がりを20倍にすると2段で収まり、171,840MBまで下がる。
図2 ── 実際に書いた量の内訳(広がり4倍の場合)
余談 この計測での注意

まとめ直しの計算は単純な形に置いています。移す分と移す先の重なる分を書き直すものとし、2倍で数えました。実際には重なり方が段や時期で変わるため、この値そのものは目安です。鍵の偏りも式で作ったもので、実在の分布ではありません。ここで見せているのは、書き込んだ量と実際に書く量が数倍違うこと、その倍率が設定で変わることの2つです。

出典Apache Cassandra 公式ドキュメント「Storage Engine」2026-08-18 確認
SSTables are the immutable data files that Cassandra uses for persisting data on disk.
原文Apache Cassandra 公式ドキュメント「Storage Engine」 この内容の有効期限2027-02-18

よくある質問

Cassandraの鍵は何を決めますか
行が置かれる節です。主鍵の必須の部分が、まとまりの中のどの節に置くかを定めます。
実際に書く量はどれだけ増えますか
この計測では40000MBに対して171840MBで、4.30倍でした。まとめ直しの分が加わります。
設定で減らせますか
まとめる広がりで変わります。20倍なら4.30倍、4倍なら6.14倍でした。
置き場所を増やせば集中は消えますか
消えません。512個に分けても、いちばん多い場所は5.10%までしか下がりませんでした。

まとめ

  • 鍵が置く節を決める
  • 書き込みは追記だけ
  • あとでまとめ直す
  • その分書く量が増える

今日から始められること

  1. 鍵ごとの書き込み量を数える
  2. いちばん多い鍵の割合を出す
  3. まとめ直しの設定を確かめる
  4. 実際に書いている量を記録と比べる

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

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

出品の仕組みを見る