3

この記事では、Cassandra 1.1 で複合列を作成するために CQL 3 を使用できる方法について説明します。それらは単なるアイデアです。公式なものはなく、Datastax のドキュメントではこれについて説明していません (複合キーのみ)。

私が理解しているように、複合列は、一緒になって1つの値しか持たない多数の列です。

それらを CQL でどのように作成しますか?

編集

Cassandra へのインターフェースとして C# を使用します。CQL は簡単に使用できるように見えるので、使用したいと思います。

4

3 に答える 3

4

いくつかの概念が混乱していると思います。おそらくこれはDatastaxドキュメントの誤りです。より良い写真を撮った後、それをより明確にするための良い提案があれば、私はそれらを送って喜んでいます。

Datastaxドキュメントの「複合キー」、実際には複合Cassandra列について説明しています。混乱の理由は、CQL 3の行がストレージエンジンの行(thriftインターフェイスを使用するときに使用する行)に直接マップされないためです。CQLテーブルのコンテキストでの「複合キー」とは、複数の列で構成される主キーを意味し、ストレージレイヤーの複合列によって実装されます。

この記事は、マッピングがどのように行われるか、およびCQLモデルが一般的に考えやすい理由についてのより良い説明の1つです。

この種の使用では、最初のCQL列がストレージエンジンのパーティションキーになります。

Cassandra 1.2(開発中)以降、パーティションキーに格納されるCQL列の周りのPRIMARY KEY定義に追加の括弧を入れることにより、CQLを使用して複合ストレージエンジンキーを作成することもできます(CASSANDRA-4179を参照)。それはおそらく例外であり、規則ではありません。

于 2012-09-10T05:41:11.153 に答える
2

Cassandra では、データを行に格納します。各行には、行キーといくつかの列があります。各列には名前と値があります。通常、列名と値 (および行キー) は単一の値 (int、long、UTF8 など) ですが、行キー、列名、および列値で複合値を使用できます。複合値は、何らかの方法で一緒にシリアル化された値の数です。

時間の経過とともに、多くの言語固有の API が開発されました。これらの API は、上で説明した理解から始まり、それに応じて列ファミリーへのアクセスを提供します。Java クライアント API である Hector は、私が最もよく知っている API ですが、他にもあります。

CQL は、Cassandra テーブルを SQL/JDBC 方式で使用する手段として導入されました。Cassandra のすべての機能が最初は CQL でサポートされていたわけではありませんが、CQL は時間の経過とともにますます機能的になっています。

複合列の名前と値が必要であることは間違いありません(それがあなたの求めているものだと思います)。問題は、(私が理解しているように) CQL がまだそのレベルのネイティブ サポートに進化していないことです。それが起こるかどうかは私にはわかりません。

必要に応じて複合値を使用して、目的の列ファミリー スキーマの定義を完了することをお勧めします。それが完了したら、Cassandra 列ファミリーにアクセスするために使用できるさまざまな API を調べて、目的のスキーマを最もよくサポートするものを選択してください。

使用している言語については言及していません。Java でコーディングしている場合は、CQL ではなく Hector をお勧めします。

于 2012-09-09T15:23:53.190 に答える
0

本当に CQL で作成しますか? あなたのユースケースは何ですか?

于 2012-09-09T13:53:00.910 に答える