[
https://issues.apache.org/jira/browse/CASSANDRA-3634?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184680#comment-13184680
]
Eric Evans commented on CASSANDRA-3634:
---------------------------------------
{quote}
My reasoning is, there aren't a whole lot of places left to pick up an extra
10% performance... Two years ago, or one, maybe 10% isn't such a big deal since
there's so much left to optimize. That's no longer the case; I don't think we
should knowingly lock our next-gen interface into a lower-performing design.
Once made, we're stuck with this decision, or at least with a really, really
high barrier to change it.
{quote}
I think a custom protocol (planned for reasons unrelated to performance) could
easily be worth 10%. I take your point though, there isn't a lot of low
hanging fruit left.
{quote}
On the other hand, we have the downside of extra complexity for the driver
authors. While this is a valid point, it's a finite one – once a prepared
statement api has been created and debugged, binary vs strings isn't going to
matter. It's a one-time fee in exchange for better performance forever.
Additionally, sample binary marshalling code already exists for any language
with a Thrift driver. So we're really talking about a relatively small amount
of work to build a binary-based PS api, over a String one.
{quote}
I'm probably a little less optimistic about the amount of work or the potential
for bugs. A Pycassa bug that comes to mind caused integers to be mis-encoded
for more than a year before it was caught and fixed (and this being one of our
most (_the_ most?) battle-tested libraries).
That said, I do understand all of your points.
Considering the _kind_ of trade-off we're talking about, I wanted this issue to
be thoroughly thought through/discussed, with any relevant data readily at
hand. The scale is obviously quite different (I'm not citing a full swing of
the pendulum here), but the arguments for/against are basically the same ones
that spawned CQL in the first place. And, as you said, changing later is
prohibitively difficult; We're going to have to live with this decision.
I posted to client-dev@ earlier (I don't know why I didn't think of that a week
ago). They're basically our front-line users in this regard, and I think it
would be interesting to hear from some of them (particularly if I'm carrying a
mantle none of them care about :)).
> compare string vs. binary prepared statement parameters
> -------------------------------------------------------
>
> Key: CASSANDRA-3634
> URL: https://issues.apache.org/jira/browse/CASSANDRA-3634
> Project: Cassandra
> Issue Type: Sub-task
> Components: API, Core
> Reporter: Eric Evans
> Assignee: Eric Evans
> Priority: Minor
> Labels: cql
> Fix For: 1.1
>
>
> Perform benchmarks to compare the performance of string and pre-serialized
> binary parameters to prepared statements.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira