3

NoSQL (ターゲットは Cassandra) を使用して、Java Web アプリケーションで作業しています。Astyanax は現在のところ Cassandra の最適なクライアントであると考えられているため、Cassandra クライアントとして Astyanax を使用しています。Cassandra にアプローチして 2 週間が経ちましたが、多くのことが私にとって非常に奇妙です。
仕事中にいくつかの問題に遭遇しましたが、解決方法がわかりません。

  1. Thrift API によって作成された列ファミリーのように、CQL から作成されたテーブルはありますか? 似ているように感じますが、裏には違いがあるのか​​もしれません。例えば:

    • CQL コマンドで作成されたテーブルは、Thrift API からアクセスできません
    • Thrift ベースの API は CQL によって作成されたテーブルでは機能しませんが、CQL メソッドは Thrift API によって作成された列ファミリーにアクセスできます!
  2. テーブルの主キーは列ファミリーの行キーに対応していますか?

  3. CQL では、コレクション/セット/マップを内部に含むテーブルを宣言できます。Thrift API で同じことを行うことはできますか?
  4. アプリケーションで両方 (列ファミリーとテーブル) が必要な場合、どのように相互に対処できますか?
  5. 私は 1 つのことを認識しています: Thrift API を使用して、CQL によって作成されたテーブルのデータを操作することはできません。正しい API を使用してデータを処理できるように、どのテーブル/列ファミリがどの方法で作成されたかをどのように記憶できるのでしょうか? 当分の間、それらのうちの2つを処理するための一般的な方法はありませんね. 私の知る限り、Thrift API と CQL には同じインターフェイスがないため、相互に理解できない?!

これらのことを説明するのを手伝ってくれませんか? どうもありがとう。

4

2 に答える 2

4
  1. はい。既存のアプリケーションを壊さずに Thrift API を CQL 対応に更新することは不可能です。したがって、CQL を使用する場合は、Astyanax や Hector などではなく、Java ドライバーなどのCQL クライアントのみを使用することにコミットしていることになります。しかし、CQL の方がはるかに使いやすいため、これは大きな犠牲ではありません。

  2. 単純な PK (つまり、単一の列) の場合、はい。複合 PKの場合は、もう少し複雑です。

  3. いいえ。Thrift API は、設計上、より低いレベルで動作します。(たとえば、マップを構成する個々のストレージ セルが表示されます。)

  4. 質問がわかりません。CQL を使用すると、Thrift でできるすべてのことをより簡単に行うことができます。

  5. 単純; 2つを混ぜないでください。どちらか一方に固執します。

于 2013-06-05T17:29:01.430 に答える
1

私の意見では、cassandra を SQL クエリを備えた RDBMS のように見せて、より広く採用されるようにすることに焦点が移っていると思います。しかし、Hector/Astyanax(thrift) と CQL を使用して行われた作業の間に矛盾があるため、採用が損なわれると思います。旅の途中で、hector/astyanax から CQL にほぼ U ターンします。

少なくとも CQL は、Thrift API (およびその上の高レベルの Java API) が移行時に問題がないように計画されている必要があります。

于 2013-08-05T13:01:25.913 に答える