我在cassandra中有一个列族,其模式如下。
CREATE TABLE app_documents (
key text PRIMARY KEY,
created_at timestamp,
created_by text,
details text,
id text
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
CREATE INDEX app_documents_id_idx ON app_documents (id);
在这个cf中,我有一个键为''的记录,我可以使用查询选择该记录
select * from app_documents WHERE key = 'abc';
现在我正试图用下面的查询删除或更新它。
delete from app_documents WHERE key = 'abc';
update app_documents set created_by = 'pd' where key = 'abc';
但上述命令对记录没有影响。表中的其他记录按预期工作,但只有此记录处于这种状态。
我的cassandra设置只是一个节点。
1条答案
按热度按时间dvtswwa31#
通常情况下,当数据库中的数据在将来有时间戳,并且通过DO确认时,就会发生这种情况
select writetime(created_by) from app_documents WHERE key = '';
-这个记录的时间戳是8月9日——未来2天。获取此类条目的通常原因是:客户机上的时钟关闭了一段时间-建议始终
ntp
也可以在客户机上运行,而不仅仅是在cassandra服务器上时间戳是由客户机显式设置的—这可能会导致不可预知的行为,并且只有在业务逻辑需要时才应该设置显式时间戳,但即使在这种情况下,也应该进行一些检查,以防止在将来插入时间戳