[
https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835997#action_12835997
]
Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------
This is my view, which I've tried to explain before on the mailing list, but
with the experience from this ticket mixed in.
A pluggable API can expose any API so that's been shot down by everyone. The
Thrift API over the HTTP+JSON transport exposes, as I understand it, the same
internal callback methods as the binary transport. So there's much less new
stuff to support. IIUC everyone here was concerned about supporting multiple
APIs, not about improving access to Cassandra, which is what the HTTP+JSON
transport provides.
I think CASSANDRA-475 makes a compelling argument against only providing the
current Thrift binary interface. It's still a useful interface, though,
especially for bulk loading and for making bandwidth-efficient queries.
HTTP is a well-supported protocol for monitoring the wire, debugging, load
distribution, proxying, and failover (among many, many others). Those are
useful features and Cassandra wouldn't even know or care if they were used at
the HTTP level.
Security (authentication and encryption) with HTTP over SSL/TLS is
well-understood and supported by almost every client. The Thrift interface
wouldn't need the login() method and all the auth* work could be simplified to
just authorization.
Specifically for Cassandra access from Perl, the 64-bit timestamps are a pain
to construct in a 32-bit Perl. The null vs. empty string issues I encountered
were annoying. Perl strings sometimes had to be converted to byte arrays,
sometimes not (this is with 0.4). 0.5 and 0.6 will require changes to all that
work, I'm sure. These issues are much less painful with HTTP+JSON and are
specific to the *binary* Thrift protocol, not to Thrift itself.
Today's NoSQL data stores are a diverse bunch, but at least CouchDB and
Amazon's SimpleDB use an HTTP transport and JSON/XML data encodings. It works
well for them. I think this is a better analogy than PostgreSQL or MySQL,
which are RDBMS's with a common SQL interface language. Yes, they provide a
binary interface, but through it you can talk to them in SQL for most tasks.
> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
> Key: CASSANDRA-754
> URL: https://issues.apache.org/jira/browse/CASSANDRA-754
> Project: Cassandra
> Issue Type: New Feature
> Components: Core
> Reporter: Ted Zlatanov
> Assignee: Ted Zlatanov
> Priority: Minor
> Attachments: 0001-renamed-API-classes.patch,
> 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch,
> 0004-API-top-level-support.patch,
> 0005-adjust-references-to-point-to-new-API-classes.patch,
> 0006-adjust-Hadoop-and-tests.patch,
> v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt,
> v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.