At SimpleGeo, we're close to just merging 1072 internally.  I've talked with
several members of the community who have already done this and are running
1072 in production or quasi-production.  It seems like if this isn't merged,
people are going to merge it internally anyways.  I think such a widely
desired feature should not be left as a patch for users to merge themselves.
 I like the idea of including both approaches and choosing between them
given your requirements.

-Ben Standefer


On Thu, Sep 2, 2010 at 12:01 PM, Johan Oskarsson <jo...@oskarsson.nu> wrote:

> In the last few months Digg and Twitter have been using a counter patch
> that lets Cassandra act as a high-volume realtime counting system. Atomic
> counters enable new applications that were previously difficult to implement
> at scale, including realtime analytics and large-scale systems monitoring.
>
> Discussion
> There are currently two different suggestions for how to implement counters
> in Cassandra. The discussion has so far been limited to those following the
> jiras (CASSANDRA-1072 and CASSANDRA-1421) closely and we don’t seem to be
> nearing a decision. I want to open it up to the Cassandra community at large
> to get additional feedback.
>
> Below are very basic and brief introductions to the alternatives. Please
> help us move forward by reading through the docs and jiras and reply to this
> thread with your thoughts. Would one or the other, both or neither be
> suitable for inclusion in Cassandra? Is there a third option? What can we do
> to reach a decision?
>
> We believe that both options can coexist; their strengths and weaknesses
> make them suitable for different use cases.
>
>
> CASSANDRA-1072 + CASSANDRA-1397
> https://issues.apache.org/jira/browse/CASSANDRA-1072 (see design doc)
> https://issues.apache.org/jira/browse/CASSANDRA-1397
>
> How does it work?
> A node is picked as the primary replica for each write. The context byte
> array for a column contains (primary replica ip, value). Any previous data
> with the same ip is reconciled with the new increment and put as the column
> value.
>
> Concerns raised
> * an increment in flight will be lost if the wrong node goes down
> * if an increment operation times out it’s impossible to know if it has
> been executed or not
>
> The most recent jira comment proposes a new API method for increments that
> reflects the different consistency level guarantees.
>
>
> CASSANDRA-1421
> https://issues.apache.org/jira/browse/CASSANDRA-1421
>
> How does it work?
> Each increment for a counter is stored as a (UUID, value) tuple. The read
> operations will read all these increment tuples for a counter, reconcile and
> return. On a regular interval the values are all read and reconciled into
> one value to reduce the amount of data required for each read operation.
>
> Concerns raised
> * poor read performance, especially for time-series data
> * post aggregation reconciliation issues
>
>
> Again, we feel that both options can co-exist, especially if the 1072 patch
> uses a new API method that reflects its different consistency level
> guarantees. Our proposal is to accept 1072 into trunk with the new API
> method, and when an implementation of 1421 is completed it can be accepted
> alongside.

Reply via email to