On Fri, 29 Oct 2010 10:07:43 -0500 (CDT) "Stu Hood" <stu.h...@rackspace.com> 
wrote: 

SH> Most reasonable languages these days have a way to define what looks
SH> like a DSL: giving people a text DSL which is subject to injection
SH> attacks and can't be type checked without support from a client
SH> driver anyway is brain dead. 

I don't think SQL-like query languages are DSLs in the classic sense.

Injection attacks are a red herring: they are a client issue, not a
library or a server problem.  Type checking is a valid complaint and I
think it's balanced out by the flexibility of a text protocol.

SH> Regarding performance: assuming optimized RPC libraries (which we do
SH> not yet have in Avro, and which Thrift is getting better at),
SH> serializing to a string and back will never be as performant as
SH> using a pre-parsed representation of the statement on both
SH> sides. "Oh but we can add prepared statements!" Poppycock.

Consider that Cassandra's statements will never be as complicated as a
regular RDBMS, so parsing them efficiently is not so hard.  The
parameters can be attached to the query, not necessarily inlined.  A
native JDBC level 4 driver could be a very efficient answer to this
problem, too.

SH> The stated problem is that backwards compatibility is hard to
SH> provide: if that is the core complaint, then changing to a text
SH> based serialization format with a sexy name in order to add
SH> backwards compatibility is a severe overreaction to the
SH> problem. Instead, I would propose evolving the API in a manner that
SH> simplifies it.

I think it would be great to allow multiple APIs in Cassandra (when I
proposed it in the past, it was not allowed, and AFAIK still isn't
beyond Avro and Thrift).  Then this wouldn't be an yes-or-no choice and
the Thrift API would still be available to those who need it.

Ted

Reply via email to