2015-10-06 48 views
1

我知道我可以使用writetime()來獲取列的內部時間戳,但可以獲取集合中某個特定項目的時間戳嗎(如列表)嗎?我的理解是收集項目在內部存儲爲單獨的列,所以看起來他們應該有單獨的時間戳。在CQL/Cassandra中獲取收集項目的時間戳

回答

2

集合中的各個列確實有單獨的時間戳。你可以通過使用sstable2json函數直接檢查SSTable來看到這一點。

CREATE TABLE users (
user_id text, 
emails set<text>, 
first_name text, 
last_name text, 
PRIMARY KEY ((user_id)) 
) 

INSERT INTO users (user_id, first_name, last_name, emails) 
    VALUES('frodo', 'Frodo', 'Baggins', {'[email protected]', '[email protected]'}); 

UPDATE users 
    SET emails = emails + {'[email protected]'} WHERE user_id = 'frodo'; 

隨後的SSTable看起來是這樣的:

[ 
{"key": "66726f646f","columns": [["","",1444170199819000], 
["emails","emails:!",1444170199818999,"t",1444170199], 
["emails:62616767696e7340676d61696c2e636f6d","",1444170199819000], 
["emails:664062616767696e732e636f6d","",1444170199819000], 
["emails:666240667269656e64736f666d6f72646f722e6f7267","",1444170213268000], 
["first_name","Frodo",1444170199819000], 
["last_name","Baggins",1444170199819000]]} 
] 

你可以看到電子郵件中的3項對應的時間戳1444170199819000,1444170199819000和1444170213268000.

但是好像它不可能通過CQL返回這些信息。您將無法從該集中返回單個列,但將時間戳與該集中所有條目的值一起返回是合理的,但是我找不到任何有關如何執行此操作的文檔它看起來不像它的支持。

1

集合元素有自己的時間戳,但使用CQL獲取這些時間戳是不可能的。請參閱相應的Jira票證以支持此功能:CASSANDRA-8877