簡體   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