[ 
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


Reply via email to