修剪Cassandra的专栏

时间:2010-07-19 15:58:06

标签: php cassandra phpcassa

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

我不太明白如何从Cassandra中删除数据。

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

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

如何从visitorLast24Hours列中删除行?

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

  1. 获取我想要使用的专栏
  2. 修剪我不想再保留的值
  3. 从数据库中删除列
  4. 重新插入新修剪的柱
  5. 这似乎是一种处理数据库的糟糕方法。我假设根据Cassandra中存储的方式,我的数据大小将会膨胀。

    有更有效的方法吗?

    我目前正在使用phpcassa作为我对Cassandra的界面。

    谢谢!

1 个答案:

答案 0 :(得分:1)

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