如何在 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 样式连接。当您想要加入之类的东西时,您有几种选择。
一种选择是执行单独的查询,然后让您的应用程序本身加入数据。如果数据相对较小并且您只需执行少量查询,那么这是有意义的。根据您上面给出的示例,这可能对您来说是一个很好的解决方案。
对于更复杂的连接,通常的策略是对数据进行非规范化并存储物化视图的加入。这样做的优点是,获取这些数据比每次需要时都必须将其构建到应用程序中要快得多。现在的代价是您有多个位置存储相同的数据,并且您需要保持所有数据同步。您可以在新数据进入系统时更新所有视图,也可以使用定期批处理作业来重建它们。
您可能会发现这篇文章很有用:您真的需要 SQL 在 Cassandra 中完成这一切吗? https://maxgrinev.wordpress.com/2010/07/12/do-you-really-need-sql-to-do-it-all-in-cassandra/它有点旧,但它的原则仍然适用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)