cassandra - 内部加入cassandra CQL

标签 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样式连接。当您想要诸如联接之类的东西时,您有一些选择。

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

对于更复杂的联接,通常的策略是对数据进行非规范化并存储联接的实例化 View 。这样做的好处是,与每次需要时都将其构建并加入应用程序相比,获取此数据要快得多。现在的代价是,您在多个位置存储相同的数据,并且需要使它们保持同步。您可以在新数据进入系统时更新所有 View ,也可以进行定期的批处理作业来重建它们。

您可能会发现这篇文章很有用:Do You Really Need SQL to Do It All in Cassandra?有点陈旧,但其原理仍然适用。

关于cassandra - 内部加入cassandra CQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16790297/

相关文章:

linux - 虚拟盒子上的cassandra 3.4无法启动

java - 使用 Cassandra 中的 hector 客户端使用复合键的第一个组件获取行

cassandra - 在 Cassandra 中更新表

cassandra - 如何使用键空间禁用 Cassandra 复制

java - Spark Cassandra 连接器基本简单程序出现 Spark 日志记录错误

Cassandra /雷迪斯 : Way to create feed without Cassandra 'IN' secondary index?

cassandra - Cassandra 中的时间序列数据,每个月的键空间而不是一个键空间?

java - Cassandra 节点工具: Failed to connect to '127.0.0.1:7199'

java - Datastax java 驱动程序 4.0 以编程方式配置

cassandra - 如何将mysql数据传输到cassandra数据库?