我有一个奇怪的问题与Cassandra批插入。我在本地Cassandra,只有复制因子为1。场景是这样的:
1.使用BATCH插入记录:使用时间戳16783871583开始批次插入测试水果(最后更新时间、名称、颜色)值(1678387158324,“苹果”,“红色”);应用批次;此后,记录将正确插入。
1.删除记录:从试验水果中删除,其中名称=“苹果”,颜色=“红色”;此后,记录被正确删除。
1.在步骤1中再次运行BATCH语句。在此之后,没有插入任何记录。无论运行多少次,也无论等待多长时间,记录仍然没有插入。
如果我只使用INSERT而不使用BATCH,那么一切都可以正常工作。
知道原因是什么吗?
1条答案
按热度按时间uoifb46i1#
原因是您显式指定了批处理的时间戳以及您提供的值(
16783871583
)对应于Tue Jul 14 1970 06:11:11
。删除此记录时,Cassandra将放置一个墓碑记录,其时间戳对应于2023年3月10日。再次执行批处理时(时间戳从1970年开始),记录被插入,但是当您读取时,此记录被具有更高时间戳的tombstone记录遮蔽,并且由于它被标记为已删除,因此不返回任何数据。实际上,显式指定时间戳是一种高级功能,您需要100%了解Cassandra如何使用它们。