我正在考虑将Cassandra用于大型数据项目。数据将来自传统的数据仓库。 Cassandra将以我的应用程序可以正确读取它的方式托管数据格式。
我不太明白如何从Cassandra中删除数据。
例如,我想计算一个特定IP地址在过去24小时内对网站的访问次数。我计划每小时生成这些数据,我希望每个IP地址保留2周。我的列结构如下所示:
127.0.0.1: {
visitorsLast24Hours: {
1279554672: 30,
1279553072: 24,
etc...
}
}
如何从visitorLast24Hours列中删除行?
到目前为止,我提出的最佳解决方案是:
这似乎是一种处理数据库的糟糕方法。我假设根据Cassandra中存储的方式,我的数据大小将会膨胀。
有更有效的方法吗?
我目前正在使用phpcassa作为我对Cassandra的界面。
谢谢!
答案 0 :(得分:1)
您实际上不必删除并重写整个列。假设您在此处使用SuperColumn,则可以从超级列中删除指定的键(本例中为visitorLast24Hours)。因此,您将遍历超级列中早于截止时间的特定键值,并删除其中的每个键值。使用超级列,每次添加或删除子行时都不必重写整个数据集。感兴趣的项目:http://wiki.apache.org/cassandra/API06切片和删除。