Кассандра отметка времени - PullRequest
1 голос
/ 26 июня 2011

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 Ответ

3 голосов
/ 26 июня 2011

Я бы предложил альтернативный подход к тому, что у вас есть выше.Самый простой способ - сохранить запись ключа вашей строки в другой строке в виде столбца, например:

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

Теперь, когда вы хотите сделать выборку, как вы делали выше, используя PHPCASSAВы можете просто получить get с помощью column_start / column_end:

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

В случае дат рождения, как бы ужасно это ни казалось в мире RDBMS, создайте новый столбец в строке для user_birthdates, где каждыйcolumname is birthday: uuid для сохранения уникальности.

...