[ https://issues.apache.org/jira/browse/CASSANDRA-1546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12918065#action_12918065 ]
Kelvin Kakugawa commented on CASSANDRA-1546: -------------------------------------------- Sylvain, I read through your patches. I'd like to discuss two aspects of #1546: 1) the counter storage strategy, and 2) the effectiveness of uuids. The counter storage strategy moves the complexity away from the column class and into the surrounding mutation and read logic. The problem this causes is that to understand a column-specific property--it's partitioned value, we have to read code in mutation and read commands and put together the logic in conjunction w/ how it interacts w/ the cassandra data model, at large. The other challenge is that the existing cassandra data model is co-opted, so the end user has to learn a modified data model that is counter-specific. I don't believe this is the right encapsulation. A better encapsulation would be to re-use the context-based partition value from #1072 in a custom Column sub-class. All the logic has already been implemented, they just need to be refactored out of the clock class. I understand that the context-based logic is relatively complex. However, it has far better unit test coverage than the rest of the cassandra codebase and, more importantly, has been deployed successfully in production at scale. ntm, the existing cassandra data model would not be modified. I feel like this would be a better encapsulation that is easier to reason about. The uuid strategy is worth investigating. However, a limitation of its design is that uuids are not coordinated across replicas. i.e. you cannot re-try and update w/ a given uuid on multiple replicas. The leader for a given uuid must be coordinated, at the client or coordinator level, to always correspond to the same replica. e.g. if this is done at the coordinator level, on a failed write, the leader has to be maintained and the mutation has to go through hinted hand-off. However, a limitation of this is that if the chosen leader goes down permanently, there may be orphaned HH mutations. However, it at least permits retries on the same replica and may be interesting for certain use cases. > (Yet another) approach to counting > ---------------------------------- > > Key: CASSANDRA-1546 > URL: https://issues.apache.org/jira/browse/CASSANDRA-1546 > Project: Cassandra > Issue Type: New Feature > Components: Core > Reporter: Sylvain Lebresne > Assignee: Sylvain Lebresne > Fix For: 0.7.0 > > Attachments: 0001-Remove-IClock-from-internals.patch, > 0001-v2-Remove-IClock-from-internals.patch, 0002-Counters.patch, > 0002-v2-Counters.patch, 0003-Generated-thrift-files-changes.patch, > 0003-v2-Thrift-changes.patch > > > This could be described as a mix between CASSANDRA-1072 without clocks and > CASSANDRA-1421. > More details in the comment below. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.