我在cassandra中有一个列族,它记录特定用户在指定时间段内发出的所有事件。
我使用的是由UUID1和UTF8字符串组成的复合列。我想在特定时间之后选择所有列。
// Code to create the column family.
use phpcassa\SystemManager;
$sys = new SystemManager('127.0.0.1');
$sys->create_column_family($keyspace, 'UserActivity', array(
"comparator_type" => "CompositeType(LexicalUUIDType, UTF8Type)",
"key_validation_class" => "UTF8Type"
));
在下面的代码中,我尝试读取数据。最初我尝试使用在1索引处设置的事件类型创建一个数组,但是虽然这似乎有效,但我在日志中遇到了很多错误。现在,我尝试在过去设置一个时间戳并在其上建立一个UUID1。没有错误 - 但也没有数据。
// Code to read data
$activityFam = new ColumnFamily($this->pool, 'UserActivity');
$activityFam->insert_format = ColumnFamily::ARRAY_FORMAT;
$activityFam->return_format = ColumnFamily::ARRAY_FORMAT;
$fiveMinPrev = $this->dateFactory->getDateTime();
$fiveMinPrev->sub(new \DateInterval("PT5M"));
$uuid = \phpcassa\UUID::uuid1(null, $fiveMinPrev->getTimestamp());
// Get the most recent SESSION event from the users activity log.
$slice = new ColumnSlice(array(0 => $uuid, 1=>self::EVENT_SESSION));
$columns = $activityFam->get($someUserId, $slice);
如何从指定时间开始选择列?
谢谢,
答案 0 :(得分:0)
呸!
我意识到这是正确的方法,但似乎我没有使用我的'DateFactory'生成的时间戳(允许我在测试期间冻结和操纵时间)以基于我实际插入时的时间戳记录。
因此产生不正确的结果!