如何在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 ';'
pftdvrlh1#
由于其分布式特性,cassandra不支持rdbms样式的连接。当你想要加入的时候,你有一些选择。一个选项是执行单独的查询,然后让应用程序加入数据本身。如果数据相对较小,并且只需执行少量查询,则这是有意义的。根据您上面给出的示例,这可能是一个很好的解决方案。对于更复杂的连接,通常的策略是对数据进行非规范化并存储连接的物化视图。这样做的好处是,获取这些数据比每次需要时都要在应用程序中构建数据快得多。成本是现在你有多个地方存储相同的数据,你需要保持同步。您可以在新数据进入系统时更新所有视图,也可以使用定期批处理作业重建视图。您可能会发现本文很有用:您真的需要sql在cassandra中完成这一切吗?它有点古老,但它的原则仍然适用。
1条答案
按热度按时间pftdvrlh1#
由于其分布式特性,cassandra不支持rdbms样式的连接。当你想要加入的时候,你有一些选择。
一个选项是执行单独的查询,然后让应用程序加入数据本身。如果数据相对较小,并且只需执行少量查询,则这是有意义的。根据您上面给出的示例,这可能是一个很好的解决方案。
对于更复杂的连接,通常的策略是对数据进行非规范化并存储连接的物化视图。这样做的好处是,获取这些数据比每次需要时都要在应用程序中构建数据快得多。成本是现在你有多个地方存储相同的数据,你需要保持同步。您可以在新数据进入系统时更新所有视图,也可以使用定期批处理作业重建视图。
您可能会发现本文很有用:您真的需要sql在cassandra中完成这一切吗?它有点古老,但它的原则仍然适用。