我是卡桑德拉的新手。我必须编写一个使用 cassandra 的应用程序。我想知道哪一个对我更好,这样我将来就不会遇到太多问题。我应该为我的应用程序使用哪个 api。
2 回答
Sunil,您正在解决一个合理的问题,我认为您在解决问题之前提出这个问题是完全合适的。如果这样说的话,您可能会接触到更广泛接受的受众,“我应该在这两种方法之间寻找哪些优缺点来帮助我在它们之间做出决定?”
Hector 客户端支持与 Cassanda 通信的编程接口,以及解析 CQL 语句的方式,因此您的选择不一定是在 Hector 和 CQL 之间,而更像是编程与 CQL,或两者的组合。即使在 Hector 和 Astyanax 客户之间进行选择,您也可能面临同样的问题。
选择 CQL 的理由:
- CQL 易于存储、检索和比较修订。
- CQL 易于阅读和审查,尤其是作为 DDL。
- CQL 易于记录以进行故障排除和审计。
- 具有 RDBMS 历史的开发人员可能会更快地适应 CQL,从而减少培训时间或增加招聘候选人的数量。
- 社区发展趋向于对 CQL 进行类似 JDBC 的处理。
选择程序化的理由:
[修正案]
看来我的一些知识已经过时了。根据 jbellis 的评论(我认为是Jonathan Ellis),CQL 目前比 thrift 更高效,并且还支持准备好的语句。我对反对基于 CQL 的方法的好论据感到茫然。
另一个完全不同的选项是 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")