繁体   English   中英

Cassandra / PHPCassa:一定时间后,如何选择带有UUID1的所有复合列?

[英]Cassandra / PHPCassa: How do I select all composite columns with a UUID1 after a certain time?

我在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);

如何实现从指定时间开始选择列?

谢谢,

呸!

我意识到这确实是正确的方法,但是似乎我没有使用我的“ DateFactory”生成的时间戳(允许我在测试期间冻结和处理时间),以将时间戳记实际插入记录为基础。

从而产生不正确的结果!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM