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