Can't this capping be done (approximately) during compaction. Something like:

1.       Ability to define for a column family that it's a "capped collection" 
with at most N columns per row

2.       During write - just add the column

3.       During reads - get a slice with the most recent / top N column (in 
terms of column order)

4.       During compaction - if the number of columns in the row is more than 
N, trim it to the top N columns (by replacing the rest of the columns with a 
tombstone in the compacted row)
Since I guess the purpose of this is for automated cleanup, and not for 
enforcing exactly N columns, I think this would be sufficient

From: Tupshin Harper [mailto:tups...@tupshin.com]
Sent: Tuesday, July 19, 2011 10:04 AM
To: user@cassandra.apache.org
Subject: Re: How to keep only exactly column of key

Speaking from practical experience, it is possible to simulate this feature by 
retrieving a slice of your row that only contains the most recent 100 items. 
You can then prevent the rows from growing out of control by checking the size 
of the row and pruning it back to 100 every N writes, where N is small enough 
to prevent excessive growth, but large enough to prevent excessive overhead. A 
value of 50 or so for N worked reasonably well for me for. If you do go down 
this path, though, keep in mind that rapid writes and deletes to a single 
column are basically a Cassandra anti-pattern due to performance problems with 
huge numbers of tombstones.

I would love to see a feature added similar to MongoDB's "capped collections", 
but I don't believe there is any easy way to retrofit it into Cassandra's 
sstable approach.
http://www.mongodb.org/display/DOCS/Capped+Collections

-Tupshin
On Mon, Jul 18, 2011 at 8:22 AM, JKnight JKnight 
<beukni...@gmail.com<mailto:beukni...@gmail.com>> wrote:
Dear all,

I want to keep only 100 column of a key: when I add a column for a key, if the 
number column of key is 100, another column (by order) will be deleted.

Does Cassandra have setting for that?

--
Best regards,
JKnight

Reply via email to