c++ - 使用 "time"作为 Cassandra 中的行键来存储网络数据包

标签 c++ c cassandra netflow

我正在尝试将从 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/

相关文章:

c - const 结构实例中成员的有效类型?

cassandra - 融合 3.3 升级后 Kafka-cassandra 连接器失败

c++ - 如何在 GNU Autotools 项目中包含 Boost?

c++ - 从成员变量访问静态 constexpr 成员,GCC 错误?

c++ - Cin和方法语句

c++ - 提取opencv中特定颜色的形状

c++ - __uuidof(someVar) 是做什么的?

c - 当我 MPI_Send 到一个已经完成的进程时会发生什么?

Cassandra 自定义二级索引

hadoop - Hector 的批处理 Mutation 与使用 Hadoop 作业将数据加载到 Cassandra 中?