在 Cassandra 中使用 "time" 作为行键来存储网络数据包

Usage of "time" as a rowkey in Cassandra for storing network packets

本文关键字:存储 数据包 网络 Cassandra time      更新时间:2023-10-16

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

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

在基于 Linux 的系统上,您可以对行键使用毫秒级精度的 Unix 时间戳。那么你的rowkey可能是我假设的LongType。

换个说法,你的模型是有"瘦行"还是"宽行"。您不希望将数据分布在太多行中,因为无法扫描范围内的行。也许您可以考虑一个模型,其中最多几秒钟的时间是您的行键,而该秒内的特定毫秒作为列名,然后指向实际值。

像这样:

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

当然,这里我假设毫秒精度就足够了。如果您需要微秒级精度,那么它实际上取决于您的平台。