私はカサンドラが初めてです。Cassandra を使用するアプリケーションを作成する必要があります。今後あまり問題に直面しないように、どちらが自分に適しているかを知りたかったのです。アプリケーションにどの API を使用する必要がありますか。
2 に答える
Sunil、あなたは合理的な質問に取り組んでいます。問題をコーディングする前に質問したことはまったく適切だと思います。「これら 2 つのアプローチのどちらを選択するかを決定するために、これら 2 つのアプローチの長所と短所を探す必要がありますか?」のようなフレーズを使用すると、より広く受け入れられる聴衆にリーチできる可能性があります。
Hector クライアントは、Cassanda と通信するためのプログラム インターフェイスと、CQL ステートメントを解析する方法をサポートしているため、必ずしも Hector と CQL の間で選択する必要はありませんが、プログラムと CQL のどちらか、または 2 つの組み合わせのいずれかを選択する必要があります。Hector と Astyanax のどちらのクライアントを選択したとしても、同じ質問に直面する可能性があります。
CQL を選択する理由:
- CQL は、リビジョンの保存、取得、比較が簡単です。
- CQL は、特に DDL として読みやすく、レビューも簡単です。
- CQL は、トラブルシューティングと監査の目的で簡単にログに記録できます。
- RDBMS の歴史を持つ開発者は、より早く CQL に順応し、トレーニング時間を短縮したり、雇用する候補者のプールを増やしたりする可能性があります。
- コミュニティ開発は、JDBC のような CQL の処理に向かう傾向にあります。
プログラマティックを選択する理由:
[修正]
私の知識の一部が古くなっているようです。jbellis のコメント ( Jonathan Ellis だと思います)に基づくと、CQL は現在、倹約よりもパフォーマンスが高く、準備済みステートメントもサポートしています。CQLベースのアプローチに対する適切な議論に途方に暮れています。
もう 1 つの完全に異なるオプションは playOrm で、制限なしで結合を行うことができます。playOrm を使用すると、以下のような「スケーラブルな JQL」を実行できます。データを分割する方法を決定するだけで済みます。
@NoSqlQuery(name="findJoinOnNullPartition", query="PARTITIONS t(:partId) select t FROM TABLE as t INNER JOIN t.security as s where s.securityType = :type and t.numShares = :shares")