获取CQL/Cassandra中集合项的时间戳
我知道我可以使用获取CQL/Cassandra中集合项的时间戳,cassandra,cql,Cassandra,Cql,我知道我可以使用writetime()获取列的内部时间戳,但是否可以获取集合(如列表)中特定项的时间戳?我的理解是,集合项在内部存储为单独的列,因此它们似乎应该具有单独的时间戳。集合中的单独列确实具有单独的时间戳。您可以通过直接使用sstable2json函数检查SSTable看到这一点 CREATE TABLE users ( user_id text, emails set<text>, first_name text, last_name text, PRIMARY KEY (
writetime()
获取列的内部时间戳,但是否可以获取集合(如列表)中特定项的时间戳?我的理解是,集合项在内部存储为单独的列,因此它们似乎应该具有单独的时间戳。集合中的单独列确实具有单独的时间戳。您可以通过直接使用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', {'f@baggins.com', 'baggins@gmail.com'});
UPDATE users
SET emails = emails + {'fb@friendsofmordor.org'} WHERE user_id = 'frodo';
您可以在电子邮件中看到与时间戳1444170199819000、1444170199819000和1444170213268000相对应的3个条目
然而,似乎不可能通过CQL返回这些。您将无法从集合中返回单个列,但返回时间戳以及集合中所有项的值是合理的,但是我找不到任何关于如何执行此操作的文档,因此它看起来不受支持 集合元素有自己的时间戳,但使用CQL无法获取这些时间戳。请参阅相应的Jira票证以支持此功能:
[
{"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]]}
]