0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

この記事は何?

Apache Cassandraのテーブル数の上限に関する「覚書」

DataStax社による解説

はじめに、以下の記事から、傍線を引きながら自由に翻訳します。

Cassandra 内の多数のテーブルは、クラスターのパフォーマンスに直接影響を与える可能性があります。通常、クラスター内でアクティブに使用されるテーブルは 200 個以下にする必要があります。アクティブに使用されているテーブルが 500 個ある場合は、非効率性や障害が発生する可能性が高いため、クラスターが機能していても障害レベルとみなされます。

この問題は、すべてのテーブルがメタデータにほぼ1 MBメモリを使用するために発生します。動作するテーブルごとに、memtable 表現が割り当てられます。大量のデータを含むテーブルでは、ブルーム フィルターやその他の補助データ構造により多くのデータが保存されるため、メモリへの負荷も増大します。また、各キースペースにより、JVM メモリに追加のオーバーヘッドが発生します。これらすべての要因が Cassandra のパフォーマンスに影響を与えます。次のベンチマークは、テーブル数の増加に伴ってスループットが大幅に低下することを示しています。

image.png

関連する設定

cassandra.yaml

SLAを担保するための仕組みとして Guardrails があり、テーブル数上限の設定も可能になっています。

guardrails [Default: disabled]

テーブル数上限の設定(設定しないと上限はなし)

tables_warn_threshold [Default: -1 (disabled)]

警告が出る閾値の設定

tables_failure_threshold [Default: -1 (disabled)]

テーブルの CREATE を失敗させる閾値の設定

テーブル数上限の存在することが正当化されるべき背景に関する理解

以下は、Cassandraに限った話ではなく、一般的な考え方として。

分散データベースにおいては、複数のノード間でメタデータを共有する必要があります。
このメタデータは「常に」更新状況が監視される必要があります。
「常に」ネットワーク上を流れ続けるデータの制御を考えた場合、その単純増加要因となる管理対象(テーブル)の数に上限が存在するのは自然なことであり、そのことを意識した管理が必要になることになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?