[
https://issues.apache.org/jira/browse/CASSANDRA-2540?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13023175#comment-13023175
]
Peter Schuller commented on CASSANDRA-2540:
-------------------------------------------
At least to me, "significantly improved latency" refers to the expected
behavior in the event of a single node being slow or individual messages being
dropped, etc. At least to me, this isn't about avoiding another network
round-trip to improve latency by a few milliseconds (or at least that is a
small part of it), but rather about experiencing a much more consistent latency
over time by removing outliers.
Nodes doing GC, temporarily being saturated and dropping messages (e.g., just
came up with cold caches), being killed by an operator (crash-only) are
examples of events that tend to happen to individual nodes (at least not on
multiple in a co-ordinated fashion) that will cause a large amount of requests
to suddenly have extremely poor latency (causing e.g. spikes in concurrency in
the application using the cluster).
In that way, the aim isn't (to me again, maybe I'm mis-interpreting Stu) to
optimize for digest mismatches - but rather to optimize for the node that
happened to be picked for the data read being slow or down.
But I totally agree about fat columns (and of course especially in the multi-DC
case). So, there are definitely use-cases for digest reads.
> Data reads by default
> ---------------------
>
> Key: CASSANDRA-2540
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2540
> Project: Cassandra
> Issue Type: Bug
> Reporter: Stu Hood
> Fix For: 0.8.0
>
>
> The intention of digest vs data reads is to save bandwidth in the read path
> at the cost of latency, but I expect that this has been a premature
> optimization.
> * Data requested by a read will often be within an order of magnitude of the
> digest size, and a failed digest means extra roundtrips, more bandwidth
> * The [digest reads but not your data
> read|https://issues.apache.org/jira/browse/CASSANDRA-2282?focusedCommentId=13004656&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13004656]
> problem means failing QUORUM reads because a single node is unavailable, and
> would require eagerly re-requesting at some fraction of your timeout
> * Saving bandwidth in cross datacenter usecases comes at huge cost to
> latency, but since both constraints change proportionally (enough), the
> tradeoff is not clear
> Some options:
> # Add an option to use digest reads
> # Remove digest reads entirely (and/or punt and make them a runtime
> optimization based on data size in the future)
> # Continue to use digest reads, but send them to {{N - R}} nodes for
> (somewhat) more predicatable behavior with QUORUM
> \\
> The outcome of data-reads-by-default should be significantly improved
> latency, with a moderate increase in bandwidth usage for large reads.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira