Since the users survey is getting long [thanks, everyone!] I thought
these deserved a separate thread.

The next release is currently tagged in JIRA as 0.9.  All the issues
linked here except #342 are tagged for 0.9, which is more of a guess
than a promise -- this being open source, a lot could change,
depending on who steps up to help out between now and then.

In order I saw them in the survey thread:

1. Increment/decrement: "atomic" is a dirty word in a system
emphasizing availability, but incr/decr can be provided in an
"eventually consistent" manner with vector clocks.  There are other
possible approaches but this is probably the best fit for us.  We'd
want to allow ColumnFamilies with either traditional (for Cassandra)
long timestamps, or vector clocks, but not mixed.  The bad news is,
this is a very substantial change and will probably not be in 0.9
unless someone steps up to do the work.  (This would also cover
"flexible conflict resolution," which came up as well.)

2. Load balancing: 0.5 will have basic load balancing, and we'll keep
improving it from there

3. Decommission: also in 0.5

4. Map/reduce support: I'd also like to see Cassandra able to be an
input source for Hadoop; Jeff Hodges did some work here but it never
really got beyond proof-of-concept
(https://issues.apache.org/jira/browse/CASSANDRA-342). I'd like to see
this in 0.9 but it requires knowing both Hadoop and Cassandra well
which raises the bar.  I can help with the Cassandra side if someone
who knows Hadoop wants help here.

5. ColumnFamily / Keyspace definitions w/o restart: another
long-standing like-to-have.
https://issues.apache.org/jira/browse/CASSANDRA-44.  Volunteers
welcome.

6. Cluster management / monitoring: We've exposed everything through
JMX, which is slightly cumbersome but it's a standard and it's there.
OpenNMS, Nagios, and Munin at least offer some level of JMX support.
So I think the right approach here is to contribute Cassandra
awareness to those projects.

7. Column versioning a la Bigtable: I do not think this is a good fit
for Cassandra, but I am open to suggestions as to how to accomplish it
cleanly.

8. Speed: 0.5 has some pretty significant improvements here (2x write
throughput in Rackspace's tests), and we're definitely going to keep
improving this.

9. Design documentation: also agreed.  Chris has started on this
(http://wiki.apache.org/cassandra/ArchitectureSSTable) and I will try
to at least sketch out some more this week.

10. insert of multiple rows at once: Tim Huske is working on this now
for https://issues.apache.org/jira/browse/CASSANDRA-336.

11. remove_slice_range / remove_key_range: Gary Dusbabek is working on
this for https://issues.apache.org/jira/browse/CASSANDRA-293.

12. "a way to group columns together across keys": You mean like
get_range_slice in trunk? If so, this will be in 0.5 (for
order-preserving partitioners only)

13. Secondary indexing and transactions: I think this is outside the
scope of Cassandra proper, but a layer implementing these on top of
Cassandra the way Google did for App Engine on top of Bigtable (see
http://perspectives.mvdirona.com/2008/07/10/GoogleMegastore.aspx)
would be feasible.

14. Caching: I think a "query cache" is definitely worth trying.
Volunteers welcome.

15. Bulk delete: I'm working on this for
https://issues.apache.org/jira/browse/CASSANDRA-531.

16. Simple query front-end: There are a couple you can contribute to
-- http://github.com/driftx/chiton in GTK, and a web-based one in
contrib/cassandra_browser [trunk only]

As always, feel free to ask on cassandra-dev or IRC if you'd like to
work on any of these and want some pointers as to where to start. :)

-Jonathan

Reply via email to