カウンター・テーブルの作成

カウンターは、インクリメントで変化する数値を格納するための特殊なカラムです。

カウンターは、多くのデータ・モデルに役立ちます。たとえば、会社のWebサイトでのWebページ・ビュー数を追跡することを会社が希望する場合などがあります。カウンターを使用することにより、スコアキーピング・アプリケーションは、オンラインでプレーされたゲームの数や、ゲームに参加したプレーヤーの数を追跡できます。ここに示したテーブルでは、プライマリ・キーとしてidを使用し、カウンター・テーブルのpopularityフィールド内のサムズアップまたはサムズダウンのクリック数に基づき、サイクリストの人気を追跡しています。



分散データベースでのカウントの追跡には、興味深い課題があります。Cassandraでは、カウンター値はいつでもMemtable、コミット・ログ、および1つ以上のSSTableにあります。ノード間のレプリケーションは、特定のエッジ・ケースで整合性の問題の原因となる場合があります。これらの問題の一部を緩和するために、Cassandra 2.1ではCassandraのカウンターが再設計されました。カウンターに加えた改善の詳細については、「What’s New in Cassandra 2.1: Better Implementation of Counters」を参照してください。

カウンターは、インクリメントで変化する数値の格納に使用される特別なカラムです。カウンターは、整数値でデクリメントまたはインクリメントできます。カウンターは他のカラムとは異なる方法で実装されているため、カウンター・カラムは専用のテーブルのみで定義できます。データ型の設定には、counterデータ型を使用します。この型を、プライマリ・キーまたはパーティション・キーとして使用されるカラムに割り当てないでください。また、counter型を、counter型とプライマリ・キー以外のものを含んでいるテーブル内で使用しないでください。明確に述べると、プライマリ・キーの一部である必要があるのは、カウンター・テーブルのカウンター以外のカラムのみです。

Cassandra 2.1以降では、cassandra.yamlファイルでカウンター関連設定の多くを構成することができます。
注: Cassandra 2.0.xカウンター実装で使用されるreplicate_on_writeテーブル・プロパティは、Cassandra 2.1から除去されました。

カウンター・カラムは、インデックスを付けたり削除したりすることはできません。データをカウンター・カラムに読み込む場合、またはカウンターの値を増減する場合は、UPDATEコマンドを使用します。カウンター・カラムを更新する際、CassandraではUSING TIMESTAMPまたはUSING TTLは拒否されます。

複数のカウンター・カラムのあるテーブルを作成するには、以下を使用します。
  • カウンター・カラムとカウンター以外のカラムを定義するには、CREATE TABLEを使用します。カウンター以外のすべてのカラムは、PRIMARY KEY定義の一部として使用します。