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