2016-07-21 10 views
2

私は、ハイバネートを完了した後、Javaを使ってカサンドラを学び始めました。私は実際には、データが挿入/引っ張られる/削除される方法に驚いています。 hibernateはデータベースと通信するための非常に簡単な方法を提供するため、Java開発者はデータベースクエリの構文などを知る必要はありません。これは主に、データベースとの通信に使用されるメソッドベースの操作です。しかし、もし私がjava経由でcassandraとやりとりしたいのであれば、すべてがSQL形式になっています。つまり、CQLという名前になっていますが、私はそれをHibernateと比較するときに起こっていることに本当に驚いています。カサンドラからjava hibernate

ここで私の質問は、O-Rマッピングスタイルのjava経由でcassandra上でCRUD操作をやりとりすることですか、または休止状態でcanandra接続をサポートできますか?

答えて

3

カサンドラはリレーショナルデータベースではありません。リレーショナルマッパーを使用すると、まっすぐ進むことはありません。結合はなく、SQLをサポートしていません。

java driversオブジェクトマッパーはおそらくあなたの探しているものに最も近いでしょう。 Cassandraテーブルの基本的なCRUDマッピング。あなたはSolrのかスパークを使用してカサンドラでCRUD操作を行うことができます

@Table(name = "posts") 
public static class Post { 

    private String title; 
    private String content; 
    private InetAddress device; 

    @ClusteringColumn 
    @Column(name = "post_id") 
    private UUID postId; 

    @PartitionKey 
    @Column(name = "user_id") 
    private UUID userId; 


    private Set<String> tags; 
    ... 
} 
1

すなわちhttps://docs.datastax.com/en/developer/java-driver/3.0/supplemental/manual/object_mapper

: こちらのドキュメントを参照してください。 Example
ここで、CassandraとRDBMSを比較しないでください。カッサンドラにはRelationalという概念はありません。ので注意してください。あなたは(Hibernateに似ている)カサンドラの多くの知識なしにカサンドラからデータを取得したい場合は、スパークを試みることがあります。

JavaRDD<Student> studentObj = CassandraJavaUtil.javaFunctions(sc).cassandraTable("schema", "student_table",CassandraJavaUtil.mapRowTo(Student.class)).where("id=1"); 

は、Sparkは、解析の目的のために主に、覚えておいてください。 私はまた、あなたが試みるかもしれないいくつかの新しいOGMツールを見つけました:

  1. http://hibernate.org/ogm/

  2. https://github.com/impetus-opensource/Kundera

関連する問題