16

Cassandra で新しいプロジェクトを開始しています (最新の安定版 (1.2.x) を使用する予定です)。HectorAstyanax、 Cassandra-jdbcなど、いくつかの異なるJavaライブラリを試しました...

その中で、(要するに)私の選択はアステュアナクスです。しかし、その後、新しい CQL バイナリ プロトコルをサポートする DataStax の Java ドライバーも見つけて試してみました。そして、バージョン1.0.0 GAが間もなくリリースされるようです。

どちらをお勧めしますか?ありがとう。

4

5 に答える 5

19

cql3 ベースのドライバーを使用することをお勧めします。いくつかの選択肢は、JDBC ドライバー、または非同期接続をサポートするさらに優れたDatastax ドライバーです。自分で datastax のドライバーを作成する必要があるかもしれませんが、これは maven を使用して簡単に行うことができます。

Thrift は Cassandra で新しい機能を取得する予定はありません。これは後方比較のために保持されており、ほとんどの C* コミュニティ メンバーは、新しいプロジェクトに cql ベースのドライバーを使用するようアドバイスしています。

前述のように、CQL3 は、thrift API よりもシンプルで全体的に優れた Cassandra の API であると考えています。したがって、新しいプロジェクト/アプリケーションでは CQL3 を使用することをお勧めします

-ソース

また、CQL のパフォーマンスは急速に向上しています。ここにいくつかの古いベンチマークがあります。
アップデート

答えが書かれているので、ドライバー用のmaven中央リポジトリが作成されたので、それを使用するには、mavenに依存関係を追加するだけです:

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-parent</artifactId>
    <version>1.0.0</version>
</dependency>
于 2013-04-18T23:51:51.543 に答える
9

私は個人的に Hector、Astyanax、Pelops、Fluent Cassandra、Datastax の Driver、Pycassa を使用してきましたが、非常に多くの API を使用した後、最終的に Astyanax が自分に最適であることに気付きました (個人的な考慮事項)。

私がアステュアナックスで見つけた、リーグ内の他のものと区別する機能は次のとおりです。

  • API の使いやすさ
  • 複合列のサポート
  • 接続プーリング
  • レイテンシー
  • ドキュメンテーション
  • 更新しました
于 2013-04-19T06:33:49.540 に答える
6

私はアステュアナックスを使っています。CQL の 5 倍のコードを書くのに問題がなければ、十分に文書化されており、使いやすいです。

現在、私が一緒に働いた人々は Astyanax コードを完全には理解していないため、CQL を使用しています。列名のクラスを作成する必要がある理由です。Astyanax や Hector を使わないと、Cassandra の内部を正しく理解することはできないと思います。

于 2013-05-21T18:54:36.663 に答える
4

開始したばかりの新しいプロジェクトには、新しいDataStax Java DriverとCassandra 1.2を必ず使用する必要があります。ドライバーは GA になったばかりで、ドライバーと Cassandra 1.2 の両方が安定するのは、新しいプロジェクトを開発する次の数か月間だけです。

于 2013-05-24T20:34:30.870 に答える
1

ザンソン/ヴァルチコウに同意します。DataStax Java Driverは未​​来です。Cassandra を SQL で操作するのは非常に便利です。一方、DataStax Java Driverの単純なラッパーであるCassandraExecutorもお勧めします。CassandraExecutor は、Java Driver と比較して以下の機能を備えています。

  • SQL/エンティティを使用した (同期/非同期) 操作 (CRUD) のための一貫性のある/統合された/簡潔な API。
  • distinct/merge/sort/groupBy/join/union/unionAll/except/intersect/paginate/filter/count/toJOSN/toXML/toCVS... をサポートする DataSet

簡単な CRUD (作成/読み取り/更新/削除) のサンプルを次に示します。

Account account = createAccount();
// create
String sql_insert = NE.insert(ID, GUI, FIRST_NAME, LAST_NAME, LAST_UPDATE_TIME, CREATE_TIME).into(Account.class).sql();
cassandraExecutor.execute(sql_insert, account);

// read
String sql_selectByGUI = NE.select(ID, GUI, FIRST_NAME, LAST_NAME).from(Account._).where(L.eq(ID, L.QME)).sql();
Account dbAccount = cassandraExecutor.queryForEntity(Account.class, sql_selectByGUI, account);

// update
String sql_updateByLastName = NE.update(Account.class).set(FIRST_NAME).where(L.eq(ID, L.QME)).sql();

dbAccount.setFirstName("newFirstName");
cassandraExecutor.execute(sql_updateByLastName, dbAccount);

// delete
String sql_deleteByFirstName = NE.deleteFrom(Account.class).where(L.eq(ID, L.QME)).sql();
cassandraExecutor.execute(sql_deleteByFirstName, dbAccount);

(宣言:私はCassandraExecutorの開発者です)

于 2015-12-22T07:36:51.310 に答える