2

我正在考虑将 Cassandra 用于大型数据项目。数据将来自传统数据仓库。Cassandra 将托管以我的应用程序可以正确读取的方式格式化的数据。

我不太明白如何修剪来自 Cassandra 的数据。

例如,我想计算过去 24 小时内特定 IP 地址对网站的访问次数。我计划每小时生成一次这些数据,我希望每个 IP 地址保留 2 周。我的列结构如下所示:

127.0.0.1: {
  visitorsLast24Hours: {
    1279554672: 30,
    1279553072: 24,
    etc...
  }
}

如何从 visitorLast24Hours 列中删除行?

到目前为止,我想出的最佳解决方案是:

  1. 获取我要使用的列
  2. 修剪我不再想保留的值
  3. 从数据库中删除列
  4. 重新插入新的修剪列

这似乎是处理数据库的一种糟糕方法。我假设我的数据大小会膨胀,这取决于 Cassandra 中的存储方式。

有没有更有效的方法呢?

我目前正在使用phpcassa作为我与 Cassandra 的接口。

谢谢!

4

1 回答 1

2

您实际上不必删除并重新编写整个列。假设您在此处使用 SuperColumn,您可以从超级列中仅删除指定的键(在本例中为visitorsLast24Hours)。因此,您将遍历超列中早于截止时间的特定键值,并删除其中的每一个。使用超级列,您不必在每次添加或删除子行时重新编写整个数据集。感兴趣的项目:http : //wiki.apache.org/cassandra/API06 切片和删除。

于 2010-07-23T04:42:15.257 回答