Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 混淆Thrift API和CQL_Cassandra_Thrift_Cql_Astyanax - Fatal编程技术网

Cassandra 混淆Thrift API和CQL

Cassandra 混淆Thrift API和CQL,cassandra,thrift,cql,astyanax,Cassandra,Thrift,Cql,Astyanax,我在一个Java web应用程序中工作,使用NoSQL(目标是Cassandra)。我使用Astyanax作为Cassandra客户机,因为它被认为是Cassandra目前最好的客户机。我刚接触卡桑德拉两周,很多事情对我来说都很奇怪。 在工作中,我遇到了一些问题,我不知道如何克服: 表是由Thrift API创建的类似CQL的列族创建的吗?我觉得他们很相似,但可能有一些不同。例如: Thrift API无法访问通过CQL命令创建的表 基于Thrift的API不能使用CQL创建的表,但CQL方法

我在一个Java web应用程序中工作,使用NoSQL(目标是Cassandra)。我使用Astyanax作为Cassandra客户机,因为它被认为是Cassandra目前最好的客户机。我刚接触卡桑德拉两周,很多事情对我来说都很奇怪。
在工作中,我遇到了一些问题,我不知道如何克服:

  • 表是由Thrift API创建的类似CQL的列族创建的吗?我觉得他们很相似,但可能有一些不同。例如:

    • Thrift API无法访问通过CQL命令创建的表
    • 基于Thrift的API不能使用CQL创建的表,但CQL方法可以访问Thrift API创建的列族
  • ​表中的主键是否对应于列族中的行键

  • 在CQL中,我可以声明一个表,其中包含一个集合/集合/映射。我可以在Thrift API中做同样的事情吗
  • 如果我的应用程序同时需要它们(列族和表),它们如何相互处理
  • 我认识到一件事:我不能使用Thrift API在CQL创建的表上操作数据,反之亦然。我想知道的是,我如何能记住以何种方式创建的表/列族,以便使用正确的API来处理数据?目前,我们还没有处理其中两个问题的通用方法,是吗?AFAIK、Thrift API和CQL没有相同的接口,因此它们无法相互理解 你能帮我解释一下这些事情吗?非常感谢你

  • 对。在不破坏现有应用程序的情况下,将Thrift API更新为CQL感知是不可能的。因此,如果您使用CQL,您承诺只使用CQL客户机,而不是Astyanax、Hector等。但这并不是很大的牺牲,因为CQL的可用性要高得多

  • 对于简单的PK(即单列),是。对于化合物PK

  • 不是。根据设计,Thrift API的运行级别较低。(例如,您可以看到构成地图的各个存储单元。)

  • 我不明白这个问题。有了CQL,你可以用节俭做任何你能做的事情,但更容易

  • 简单;不要把两者混为一谈。坚持这样或那样


  • 在我看来,我相信焦点正在转向使cassandra看起来像一个带有SQL查询的RDBMS,以获得更广泛的采用。 但是,由于使用Hector/Astyanax(节俭)和CQL所做的工作不一致,我认为这会损害收养。在旅程的中途,从赫克斯特/阿斯塔尼亚克斯到CQL几乎是一个转折点。

    至少CQL的规划应该使Thrift api(以及其上的高级java api)在转换时没有问题