我正在尝试将从 Netflow 探测器收到的 NetFlow 数据包存储到 Cassandra 中。为了提高效率,我想将每个数据包存储在单独的行中。有人可以建议我可以使用一个具有足够精度来存储网络流数据包的行键吗?我正在考虑使用一些时间函数。是否足够精确以至于数据包之间不会发生冲突?我正在使用 libQtCassandra 库来访问 Cassandra。谢谢....
最佳答案
您可以使用 Cassandra 之外可用的任何精度的时间函数,然后只需插入值即可。大多数平台都提供以毫秒精度获取时间的函数。
在基于 Linux 的系统上,您可以使用毫秒精度的 Unix 时间戳作为行键。我认为你的 rowkey 可能是一个 LongType。
换句话来说,您的模型有“细行”还是“宽行”。您不想将数据分布在太多行中,因为您无法扫描范围内的行。也许您可以考虑一个模型,其中最多以秒为单位的时间是您的行键,该秒内的特定毫秒作为列名称,然后该列名称将指向实际值。
类似于:
unix_timestamp_in_seconds => [ { millisecond_count: value}, { millisecond_count: value}, ...]
当然,这里我假设毫秒精度就足够了。如果您需要微秒精度,那么这实际上取决于您的平台。
关于c++ - 使用 "time"作为 Cassandra 中的行键来存储网络数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19097497/