また...
Cassandra を使用して監査証跡をログに記録する方法は?
Cassandra を使用して何億ものクエリ可能な行を格納できるかどうかを確認するための実験の基礎として使用している次のリレーショナル モデルがあります。
| datetime | planet | continent | country | state | <...> | street | who_id | who_name | msg | p1 | p2 | p3 |
これらのエンティティのいずれかが、監査ログ エントリを生成する可能性があります。さらに、ローダウンエントリには、その先祖のすべての参照が一緒に保存されます。そのため、高レベルのエンティティに基づくルックアップは、その下で発生したすべてを返します。[1] PostgreSQL を使用すると、大部分が空の密な行になります。Cassandra の利点の 1 つは、疎な行です。(大陸ベースのログ エントリでは、通りの列は NULL ではありません)。現在、さまざまな順列で関係を持つ 25 のエンティティがあります。
また、イベントが発生した時点で、オブジェクト グラフ内のエンティティの名前を保持したいと考えています。
私はデータモデルを把握しなければならないと考え、このようにモデル化しようと考えました。
リレーショナル リンクに任意の複合列を使用する。
| (row key) | planet:1 | continent:101 | country:44 | who:4 | msg | p1 | p2 | p3 |
| COUNTRY:TimeUUID | ---------+---------------+------------+-------+-----------------+----+----+------|
| | "earth" | "europe" | " UK" | "Rob" | "*it happnzd!!" | 1 | 5 | true |
私の目的は、who:4 を検索して、変更内容をすべて取得できるようにすることでした。同様に、planet:1 を含む行を取得すると、地球上で発生したすべての変更が表示されます。
エンティティ リンク列は動的です (または、少なくとも私はそう思っていました)。それらは奇妙で素晴らしい組み合わせで使用されます。そして、それらを事前に指定する必要がないことは恩恵であり、複合型の列名を使用することでクエリ可能になると考えました。
- A. どの種類の cassandra でもこれが可能かどうかはまだわかりません。
- B. CQL3 でこの状況を取得する方法がわかりません。そこに助けがあれば幸いです。
- C. CQL を使用する必要がありますか?(3)? CQL3は未来ですか、それとも倹約/ペロプスはまだ将来を見据えた方法ですか?
12 か月前 - 私は Cassandra について読み、このテーマに関する本を 2 冊購入しました。私がそれらを読み、利益をもたらす可能性のあるプロジェクトを開始するまでに、世界は変化し、私が精神的に取り組んでいたものは放棄され、SQL のようなものを支持しています。だから今、私は同じように混乱しています。
[1] ここでの非正規化は、実際には監査ログが履歴スナップショットであるため理にかなっているため、「イベントが発生した時点」の正確なオブジェクト グラフが記録されます。