私はCassandraを学習しています。v3.8から始めました。私のサンプルキースペース/表には、一意性と分布は、クラスタノード間で行われているように、プロバイダとデバイスIDとしてパーティションキーを持つ複合PRIMARY KEY
を使用して、このCassandraクラスタリング列の同じデータフィールドを持つ行を、クエリの挿入で置き換えます。
CREATE TABLE digital.usage (
provider decimal,
deviceid text,
date text,
hours varint,
app text,
flat text,
usage decimal,
PRIMARY KEY ((provider, deviceid), date, hours)
) WITH CLUSTERING ORDER BY (date ASC, hours ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
のように見えます。クラスタ化キーは、日付と時間です。時間のフィールドに複数のエントリを挿入しながら、
1)PRIMARY KEY((provider, deviceid), date, hours)
の場合のみ、最新のが記録され、以前は姿を消しています
は、私はいくつかobservatonsを持っています。
2)PRIMARY KEY((provider, deviceid), date)
の場合、同じ日付フィールドに複数のエントリを挿入している間は、最新のもののみが記録され、前のものは消えます。
私は上記(ポイント-1)の動作に満足していますが、バックグラウンドで起こっていることを知りたいです。クラスタリングの順序キーについてもっと理解する必要がありますか?
感謝。真のプライムキーはユニークなものです。しかし、なぜプライマリキーの最後のフィールドですか?私の質問のポイント-1から、時間が影響を受けます。なぜあまりにも日付? – srikanth
あなたのポイント1とポイント2は同じものです...同じプライマリキー値を持つ複数のエントリを入力すると、最新のもののみが利用可能になります –
同じ日付に異なる時間値を入力すると、すべてが表示されます。 'provider、deviceid、date、hours'からの何も前のレコードと同じ値でなければなりません...もしそれが同じで、最新のタイムスタンプの値よりも勝ったら –