在Cassandra中使用“time”作为rowkey来存储网络数据包

时间:2013-09-30 15:00:31

标签: c++ c cassandra netflow

我正在尝试将从netflow探测器收到的netflow数据包存储到Cassandra中。为了提高效率,我想将每个数据包存储在一个单独的行中。有人可以建议我可以使用的具有足够精度的rowkey存储netflow数据包吗?我在考虑使用一些时间功能。它是否足够精确,不会在数据包之间发生冲突?我正在使用libQtCassandra库来访问Cassandra。感谢....

1 个答案:

答案 0 :(得分:0)

您可以在Cassandra之外使用任何精度的时间函数,只需插入值即可。大多数平台都提供以毫秒精度获取时间的函数。

在基于Linux的系统上,您可以使用毫秒精度的Unix时间戳作为rowkey。你的rowkey可能是我假设的LongType。

另一方面,您的模型是否会有“瘦行”或“宽行”。您不希望将数据分布到太多行,因为您无法扫描范围中的行。也许您可以考虑一个模型,其中最多秒的时间是您的rowkey,并且该秒内的特定毫秒作为列名称,然后将指向实际值。

类似的东西:

unix_timestamp_in_seconds => [ { millisecond_count: value}, { millisecond_count: value}, ...]

当然,这里我假设毫秒精度就足够了。如果你需要微秒精度,那么它真的归结为你的平台。