我正在尝试将从netflow探测器收到的netflow数据包存储到Cassandra中。为了提高效率,我想将每个数据包存储在一个单独的行中。有人可以建议我可以使用的具有足够精度的rowkey存储netflow数据包吗?我在考虑使用一些时间功能。它是否足够精确,不会在数据包之间发生冲突?我正在使用libQtCassandra库来访问Cassandra。感谢....
答案 0 :(得分:0)
您可以在Cassandra之外使用任何精度的时间函数,只需插入值即可。大多数平台都提供以毫秒精度获取时间的函数。
在基于Linux的系统上,您可以使用毫秒精度的Unix时间戳作为rowkey。你的rowkey可能是我假设的LongType。
另一方面,您的模型是否会有“瘦行”或“宽行”。您不希望将数据分布到太多行,因为您无法扫描范围中的行。也许您可以考虑一个模型,其中最多秒的时间是您的rowkey,并且该秒内的特定毫秒作为列名称,然后将指向实际值。
类似的东西:
unix_timestamp_in_seconds => [ { millisecond_count: value}, { millisecond_count: value}, ...]
当然,这里我假设毫秒精度就足够了。如果你需要微秒精度,那么它真的归结为你的平台。