内部加入cassandra CQL

Sau*_*nde 18 cassandra

如何在cassandra中编写子查询/嵌套查询.这个工具是用CQL提供的吗?

我试过的例子:

cqlsh:testdb> select itemname from item where itemid = (select itemid from orders where customerid=1);
Run Code Online (Sandbox Code Playgroud)

它只是抛出以下错误 -

Bad Request: line 1:87 no viable alternative at input ';'
Run Code Online (Sandbox Code Playgroud)

psa*_*ord 28

由于其分布式特性,Cassandra不支持RDBMS样式连接.当你想要一个像连接这样的东西时,你有几个选择.

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

对于更复杂的连接,通常的策略是对数据进行非规范化并存储连接的物化视图.这样做的好处是获取这些数据将比每次需要时在应用程序中构建它都快得多.现在,您有多个地方可以存储相同的数据,您需要将它们全部保持同步.您可以在新数据进入系统时更新所有视图,也可以定期批量创建重建项目.

您可能会发现这篇文章很有用:您真的需要SQL来在Cassandra中完成所有操作吗?它有点陈旧但其原则仍然适用.

  • 并不是的.Cassandra仍然没有本地支持连接.当然,你可以把你所有的数据从Cassandra拉到Spark然后在Spark中加入,但是你使用的是Spark,而不是Cassandra.DSE使集成更容易,但DSE不是Apache Cassandra. (3认同)