卡桑德拉时间戳

时间:2011-06-26 17:17:37

标签: php database nosql cassandra phpcassa

  

SELECT * FROM table_name WHERE date> 1309110123

如何在Phpcassa中执行此操作? 我认为必须有一些方法来修改它:

$column_family = new ColumnFamily($conn, 'Indexed1');
$index_exp = CassandraUtil::create_index_expression('birthdate', 1984);
$index_clause = CassandraUtil::create_index_clause(array($index_exp));
$rows = $column_family->get_indexed_slices($index_clause);
// returns an Iterator over:
//    array('winston smith' => array('birthdate' => 1984))

foreach($rows as $key => $columns) {
    // Do stuff with $key and $columns
    Print_r($columns)
}

有人有想法吗?

1 个答案:

答案 0 :(得分:3)

我建议您采用另一种方法来解决上述问题。最简单的方法是将行键的记录存储在另一行中,如下所示:

$date = new DateTime();
$cf = new ColumnFamily(getCassandraConnection(), 'foobar');
$cf->insert('row1' => array('foo' => 'bar'));
$cf->insert('all_rows' => array($date->getTimestamp() => 'row1');

现在,当您想要使用PHPCASSA进行选择时,您只需使用column_start / column_end进行get:

$newerResults = $cf->get('all_rows', $columns=null, $column_start=1309110123);

对于生日,就像从RDBMS世界看起来那样丑陋,为'user_birthdates'创建一个新列,其中每个列名都是生日:uuid以保持独特性。