我正在使用NoSQL(目标是Cassandra)在Java Web应用程序中工作。我使用Astyanax作为Cassandra客户端,因为它现在被建议是Cassandra的最佳客户。我刚刚接近Cassandra两个星期了,所以很多东西对我来说都很奇怪 在我工作期间,我遇到了一些问题,我不知道如何克服:
是否是由Thrift API创建的CQL类列系列创建的表?我觉得他们很相似,但也许背后有一些差异。例如:
表中的主键是否与列族中的行键对应?
答案 0 :(得分:4)
是。在不破坏现有应用程序的情况下,无法将Thrift API更新为CQL感知。因此,如果您使用CQL,则承诺仅使用the Java driver之类的CQL客户端,而不是Astyanax,Hector等人。但这不是一个很大的牺牲,因为CQL更有用。
对于简单的PK(即单列),是的。对于复合PK,it's a bit more complicated。
没有。根据设计,Thrift API在较低级别运行。 (例如,你会看到组成Map的各个存储单元。)
我不明白这个问题。使用CQL,您可以使用Thrift完成所有操作,但更容易。
简单;不要混淆两者。坚持一个或另一个。
答案 1 :(得分:1)
在我看来,我认为焦点正在转向使cassandra看起来像带有SQL查询的RDBMS以获得更广泛的采用。 但由于使用Hector / Astyanax(节俭)和CQL完成的工作之间存在不一致,我认为这会影响采用。在旅程中途,它几乎是从hector / astyanax转向CQL。
Atleast CQL的计划方式应该是Thrift api(以及高级java apis)在转换过程中没有问题。