cassandracql中的内连接

cassandracql中的内连接,cassandra,Cassandra,如何在cassandra中编写子查询/嵌套查询。该设施是否在CQL中提供 我试过的例子: cqlsh:testdb> select itemname from item where itemid = (select itemid from orders where customerid=1); 它只是抛出以下错误- Bad Request: line 1:87 no viable alternative at input ';' 由于其分布式特性,Cassandra不支持RDBMS样式

如何在cassandra中编写子查询/嵌套查询。该设施是否在CQL中提供

我试过的例子:

cqlsh:testdb> select itemname from item where itemid = (select itemid from orders where customerid=1);
它只是抛出以下错误-

Bad Request: line 1:87 no viable alternative at input ';'

由于其分布式特性,Cassandra不支持RDBMS样式的连接。当您想要加入时,您有一些选择

一个选项是执行单独的查询,然后让应用程序加入数据本身。如果数据相对较小,并且只需执行少量查询,则这是有意义的。根据您上面给出的示例,这可能是一个很好的解决方案

对于更复杂的连接,通常的策略是对数据进行非规范化,并存储连接的物化视图。这样做的好处是,获取这些数据要比每次需要时都要在应用程序中构建数据快得多。成本是现在您有多个存储相同数据的位置,并且需要保持所有数据同步。您可以在新数据进入系统时更新所有视图,也可以定期执行批处理作业来重建视图


您可能会发现这篇文章很有用:它有点旧,但其原则仍然适用。

自2015年开始,Cassandra还支持连接,非常类似于RDBMS风格。它需要安装DataStax ODBC或Apache SparkSQL。阅读更多信息。这里的司机:不是真的。Cassandra仍然没有对联接的本机支持。当然,您可以将所有数据从Cassandra拉入Spark,然后在Spark中进行连接,但您使用的是Spark,而不是Cassandra。DSE使集成变得更容易,但DSE不是ApacheCassandra.maxgrinev,文章所在的网站已停止服务。