1

私は Cassandra で作業してきましたが、ちょっとした障害にぶつかりました。データを検索する方法については、複合主キーが必要なものに最適であることがわかりましたが、この列ファミリーのレコードの挿入時間は犬にかかり、その理由は完全にはわかりません.

テーブル定義:

CREATE TABLE exampletable (
clientid int,
filledday int,
filledtime bigint,
id uuid,
...etc...
PRIMARY KEY (clientid, filledday, filledtime, id)
);

clientid = クライアントの内部 ID。Filledday = 1900 年 1 月 1 日からの日数。Filledtime = レコードが受信された日のティック数。id = ガイド。

日付と時間の構造が存在するのは、日ごとに簡単かつ迅速にフィルター処理できるようにする必要があるためです。

私は、Cassandra が複合主キーを持つ列ファミリーをまったく異なる方法で格納することを知っています。私が理解していることから、主キーのメインコンポーネントのベース行から離れた新しい列としてすべてが保存されます。それが挿入が遅くなる理由ですか?私が遅いと言うとき、idに主キーがある場合、挿入には約200ミリ秒かかり、複合主キー(またはそのサブセット、clientidとidだけで同じ効果を試しました)がかかることを意味します1000 レコードの場合は 32 秒以上。セカンダリ インデックスを適用し、「ALLOW FILTERING」を使用する必要があるため、選択時間は複合キー テーブルからの方が高速です。

私がやろうとしていることに間違った列ファミリーまたは主キーを宣言していますか? リストされていない非主キー列をすべて使用すると、テーブルの幅は 37 列になりますが、それは問題でしょうか? この時点で私はかなり困惑しています。他の人が同様の問題を抱えていることについて、実際には何も見つけることができませんでした。

4

1 に答える 1