还是有其他(更好的)选择?
谢谢
您使用timeuuids作为唯一标识符的想法是正确的方法。如果做得好,你就不会有重复的。timeuuid是一种类型1的uuid,它不仅包含一个时间戳,而且还包含一些熵,以保证即使在同一时间点上也是唯一的。
所以,现在问题仍然存在-您应该如何为您的历史数据生成timeuuid?正如您所指出的,mintimeUUID/maxtimeUUID函数不适于生成正确的Version1 UUID。没关系,因为那不是他们的目的。以后当您使用时间范围查询数据时,您将需要它们:
SELECT * FROM sensor_readings
WHERE sensor_id = 123
AND ts > maxTimeuuid('2016-07-15 00:00+0000')
AND ts < minTimeuuid('2016-07-17 00:00+0000')
不幸的是,CQL没有为给定的时间戳提供生成它们的函数(从CQL 3.3开始),所以您的客户机必须生成UUID。有几个Java库可以做到这一点。请看这个问题以获得一些建议。一定要选择一个保证唯一性的高质量库。
我有一个cassandra表结构,如下所示 诸如此类,这行得通吗?或者可以做一些更好的事情,因为我已经准备好改变表的结构,还可以添加计数器列,因为基本上我应该能够基于任何列进行分页。
我正在将一个应用程序从Cassandra迁移到Dynamodb。在Cassandra上,我们使用了(entityName、TimeUUID)和DynamoDB的组合作为键,据我所知,我可以使用hash+range主键。 为了使Cassandra数据库具有相同的数据结构,我一直在考虑使用entityName作为散列,使用timestamp作为范围。然后,我认为时间戳可能不是唯一的:我说的是拐角情况,
我的目标是使用不同的主键将行从一个Cassandra2.0表移动到另一个表。为了确保数据的一致性,我需要用原始的时间戳插入它们()。我计划使用/复制,或者只使用和从CSV自定义导入。 是否有方法复制带有时间戳的行?在TimeUUID列上不起作用,说明“不正确的复制命令”。 提前谢了。
我从获取事件并存储到中。解析,其中包含字段,为表创建列,如下所示: 在代码中: 甚至尝试了:,也生成了相同的错误。如何通过spark作业将正确强制转换为并插入到中
我正在学习关于Apache Cassandra 3.x.x的所有知识,并试图开发一些可以玩的东西。问题是,我希望将数据存储到包含以下列的Cassandra表中: 创建Now_Timestamp很容易,我只需使用now()函数,它就会自动生成TIMEUUID。问题出现在req_timestamp。如何将Unix时间戳转换为TIMEUUID,以便Cassandra可以存储它?这可能吗? 我的后端架构是
Cassandra表具有数据类型列,那么如何查看类型的纳秒值? timeuuid: 如何将此timeuuid转换为纳秒级需要一个select语句,如下所示: