問題タブ [cql3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - cqlエンジンを使用してdjangoモデルでカウンタータイプの列を定義する
以下のようなカウンタータイプの列を持つモデルがあります。
しかし、以下のようにこのモデルからテーブルを作成したい場合:
次のエラーが表示されます。
私の間違いは何ですか?モデルでカウンター タイプの列を定義するにはどうすればよいですか? 私を案内してください...
cassandra - Cassandra の CQL3 テーブルに対する削除操作
CQL3 を使用して作成された次の列ファミリーがあるとします。
私はそれにいくつかのデータを挿入しました。
今、私は更新操作をしたいです。正確には、上記の特定の行の「freq」値を更新したいと思います。CQL3 では、主キー部分を直接更新することはできません。最初にそのエントリを削除してから、もう一度挿入する必要があります。しかし、問題は、非パーティション キー列「期間」を使用して削除操作を実行できないことです。たとえば、この操作を実行することはできません:
これを回避する方法を知っている人はいますか? 私は本当にこれを感謝します。
python - Cassandra の削除時間は、挿入よりもはるかに遅くなります。なんで?
同じ Cassandra 行に対して大量の削除を発行することは、読み取りに時間がかかるため、アンチ パターンであることはわかっています (こちらを参照)。しかし、削除には桁違いに時間がかかることもわかっています。
同じ行に複数の値を追加してから再度追加し、一度に 1 つずつ削除してから再度追加するこの python スクリプトを考えてみましょう。各アクティビティの時間が監視され、画面に表示されます。
このスクリプトへの出力は次のようになります。
挿入に比べて列の削除に時間がかかる理由を教えてください。
私のメンタル モデルでは、挿入も削除も基本的には同じものです。具体化されていない列がコミットログの最後に書き込まれ、memtable に押し込まれます。挿入の場合は、その列の新しい値が含まれ、削除の場合は、その列の廃棄 (tombstone) が含まれます。私のメンタルモデルはどこで間違っていますか?
django - Python/Django: cql エンジンを使用して 2 つの primary_key を持つテーブルを作成する
以下のように、django モデルで 2 つの primary_key を持つテーブルを作成します。
しかし、以下のようにテーブルを作成したい場合:
次のエラーが表示されます。
entryLinkフィールドからprimary_keyプロパティを削除すると、エラーは発生しません! しかし、entryLink を primary_key として定義したい! 私の間違いは何ですか?
cassandra - Cassandra 1.2 で同じテーブルの 2 つの個別の複合キーをモデル化するにはどうすればよいですか?
私の使用例は次のとおりです。複数のサードパーティ ソースからのデータを保存およびクエリする必要があります。私が持っている唯一の事前定義されたスキーマの知識は、それが Entity-Attribute-Value タプルと追加の Source コンポーネントで構成されているということです: (E, A, V, S)
. どの属性が存在するかは事前にわかりません (そのため、実際の属性自体を列として使用するのは問題があります)。組み合わせ(E,A,V)
は一意でなければならないため、これを複合キーとして使用することがこれをモデル化する最良の方法であると考えたので、次のようになります。
これにより、次のようなクエリを実行できます。
- E が与えられた場合、すべての属性 A と値 V、およびそれらが発生するソース S を表示します
- E と A が与えられたとき、すべての V を与えます。
次の形式のクエリにも回答できるように、異なる順序の複合キーを使用してこのテーブルのミラーを作成する計画です。
- A が与えられた場合、すべてのエンティティ E と値 V を表示します。
- S が与えられた場合、すべての E、A、V タプルを表示します。
などなど(事実上、ミラーテーブルはインデックスの役割を果たし、完全なインデックス作成を行うには、事実上同じデータの6つのコピーが必要になります-そのアプローチのスケーラビリティについてはまだわかりませんが、それは別の質問です推測してみて)。
ここまでは順調ですが、私が苦労している部分は次のとおりV
です。実際には、それ自体が複数のプロパティを持つオブジェクトです。これがリレーショナル モデルである場合、たとえば、フィールドとフィールドにV
マッピングされるリレーションを指す外部キー フィールドになります。しかし、外部キー (およびそれらに伴う結合) を取り除くことは、私が推測する BigTable アプローチの要点であるため、これをテーブルに組み込む方法を探しています。id
type
value
t1
もちろん、次のようなこともできます。
しかし、私が見る問題は、これが の id、型、および値の間の (逆の) 機能的関係を捉えることがV
できないことです: 上の表では、たとえば、次のようになります:
与えられた a 、型と値が一意であることを保証できるようにしたいのですがV_id
、その逆も同様です。私が求めているのは、古い Cassandra バージョンではネストされたスーパー カラムになるということですが、CQL3 で必要なことを達成しようとしています。
コレクションの型について簡単に調べてみましたが、私のユース ケースにはあまり適していないようです。
(E, A, V)
理想的には、できるだけ少ないクエリで取得できるようにしたいということを念頭に置いて、これをモデル化するためのより良い方法を誰かが提案できますか? または、私はそれを考えすぎているだけで、現在のアプローチは実際には問題ありません(もちろん、アプリケーションレベルで一意性を確保することはできます)?
cassandra - CQL3 を使用して Cassandra の広い行を反復処理する
CQL3 で複合列の範囲を取り込むにはどうすればよいですか?
次の点を考慮してください。
Cassandra では、これが効果的に行うことは、整数行 (a の値) と、b と c の値およびリテラル文字列 'd' で構成される CompositeColumns を持つ ColumnFamily を作成することです。もちろん、これはすべて CQL3 によって隠蔽されているため、個々のデータベース行に挿入していると考えることができます... しかし、余談です。
そして、次の一連の入力を検討してください。
私の現在のユース ケースでは、Stuff のすべての値を一度に読み取りたいと考えてn
います。どうすればいいですか?を使用した現在のテイクは次のn=4
とおりです。
そして、予想どおり、次のようになります。
私が遭遇する問題は、次の 4 をどのように取得するかです。これが私の試みです:
これは、b を 'A' に等しくなるように制約しているため機能しません。これは妥当なことです。しかし、とにかく反復を続けることを可能にする CQL3 構文には何も見つかりませんでした。次のようなことができたらいいのにと思います:
希望する結果を得るにはどうすればよいですか。つまり、CQL3を返すにはどうすればよいですか:
cassandra - Cassandra CQL3 複合キーが重複した値を返す
私はCQLと複合キーを初めて使用します(以前はCLIを使用していました)代わりに複合キーを使用して古いスーパーカラムファミリーを実装しようとしています。要するに、私のルックアップモデルは次のとおりです。
複合キーを持つ次の CQL テーブルがあります。
これらのサンプル値を挿入します。
この Astyanax コードを使用してクエリを実行します。
結果を反復処理すると、各列に対して 2 つの結果が得られます。「サイズ」を含むものと、「サイズ」列が存在しないもの。
だから私は2つの質問があります:
- 理論的にはサイズ列は必要ありません。複合キーの値である必要があります: blocks[file_id][position][block_id]=size の代わりに blocks[file_id][position][block_id]['size'] = size . . 冗長なサイズ列を作成せずに、このデータを CQL3 に正しく挿入するにはどうすればよいですか?
- そのような行を挿入したことがないのに、なぜ「サイズ」のない余分な列を取得するのですか?
cassandra - 列のない行を選択するCQL
CQL3 でテーブルを作成した後:
そのテーブルに格納されているすべての cassandra 行を知りたいです。しかし、これをcqlshで実行すると:
多くの重複したエントリが返されます。基本的に、挿入したすべての列のエントリを取得します。意味: (k1 & k2) ごとに row_key のエントリを取得します。
しかし、私の当初の意図は、「すべてのパーティション (行) キーのリストを教えてください」でした。すべての列 (k1 & k2) もシリアライズしたくありません。
ここで何が間違っていますか?