【发布时间】:2011-01-30 12:13:47
【问题描述】:
当使用 Perl 的 Net::Cassandra::Easy 时,以下代码将从行 row[1-3] 中检索列 col[1-3]:
$result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', byname => ['col1', 'col2', 'col3');
相应的 SQL 将是:
SELECT col1, col2, col3 FROM rows WHERE id IN ('row1', 'row2', 'row3');
假设我想检索所有列。用 SQL 术语来说是:
SELECT * FROM rows WHERE id IN ('row1', 'row2', 'row3');
要获取我当前使用的所有列:
$result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', byoffset => { "count" => 1_000_000 });
只要列数不超过 100 万,此方法有效。虽然这可行,但我认为有一种更清洁的方法可以做到这一点。有没有更简洁的方法可以向 Cassandra 指定我要检索匹配行的所有列?
【问题讨论】:
-
不熟悉 Cassandra,但您不能早点运行查询以获取表结构,这样您就知道有多少列可用?
-
想知道制作这个的开发者是否有一个他不太喜欢的名叫 Cassandra 的前任...
-
zigdon: 不 :-) Cassandra 中的“表结构”是动态的,因为一行可以有 5 列,而下一行可以有 40 列。
标签: perl nosql cassandra thrift