+1

I like hector client that uses thrift interface and exposes APIs that is
similar to how Cassandra physically stores the values.

On Thu, Feb 20, 2014 at 9:26 AM, Peter Lin <wool...@gmail.com> wrote:

>
> I disagree with the sentiment that "thrift is not worth the trouble".
>
> CQL and all SQL inspired dialects limit one's ability to use arbitrary
> typed data in dynamic columns. With thrift it's easy and straight forward.
> With CQL there is no way to tell Cassandra the type of the name and value
> for a dynamic column. You can only set the default type. That means using a
> "pure cql" approach you can deviate from the default type. Cassandra will
> throw an exception indicating the type is different than the default type.
>
> Until such time that CQL abandons the shackles of SQL and adds the ability
> to indicate the column and value type. Something like this
>
> insert into myColumnFamily(staticColumn1, staticColumn2, 20 as int,
> dynamicColumn as string) into ('text1','text2',30.55 as double, 3500 as
> long)
>
> This is one area where Thrift is superior to CQL. Having said that, it's
> valid to use Cassandra "as if" it was a relational database, but then you'd
> miss out on some of the unique features.
>
>
>
>
> On Thu, Feb 20, 2014 at 12:12 PM, Sylvain Lebresne 
> <sylv...@datastax.com>wrote:
>
>> On Thu, Feb 20, 2014 at 2:16 PM, Edward Capriolo 
>> <edlinuxg...@gmail.com>wrote:
>>
>>> For what it is worth you schema is simple and uses compact storage. Thus
>>> you really dont need anything in cassandra 2.0 as far as i can tell. You
>>> might be happier with a stable release like 1.2.something and just hector
>>> or astyanax. You are really dealing with many issues you should not have to
>>> just to protoype a simple cassandra app.
>>
>>
>>
>> Of course, if everyone was using that reasoning, no-one would ever test
>> new features and report problems/suggest improvement. So thanks to anyone
>> like Rüdiger that actually tries stuff and take the time to report problems
>> when they think they encounter one. Keep at it, *you* are the one helping
>> Cassandra to get better everyday.
>>
>> And you are also right Rüdiger that it's probably not worth the trouble
>> to start with thrift if you're gonna use CQL later. And you definitively
>> should use CQL, it is Cassandra's future.
>>
>> --
>> Sylvain
>>
>>
>>
>>>
>>> On Thursday, February 20, 2014, Sylvain Lebresne <sylv...@datastax.com>
>>> wrote:
>>> >
>>> >
>>> >
>>> > On Wed, Feb 19, 2014 at 9:38 PM, Rüdiger Klaehn <rkla...@gmail.com>
>>> wrote:
>>> >>
>>> >> I have cloned the cassandra repo, applied the patch, and built it.
>>> But when I want to run the bechmark I get an exception. See below. I tried
>>> with a non-managed dependency to
>>> cassandra-driver-core-2.0.0-rc3-SNAPSHOT-jar-with-dependencies.jar, which I
>>> compiled from source because I read that that might help. But that did not
>>> make a difference.
>>> >>
>>> >> So currently I don't know how to give the patch a try. Any ideas?
>>> >>
>>> >> cheers,
>>> >>
>>> >> Rüdiger
>>> >>
>>> >> Exception in thread "main" java.lang.IllegalArgumentException:
>>> replicate_on_write is not a column defined in this metadata
>>> >>     at
>>> com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:273)
>>> >>     at
>>> com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:279)
>>> >>     at com.datastax.driver.core.Row.getBool(Row.java:117)
>>> >>     at
>>> com.datastax.driver.core.TableMetadata$Options.<init>(TableMetadata.java:474)
>>> >>     at
>>> com.datastax.driver.core.TableMetadata.build(TableMetadata.java:107)
>>> >>     at
>>> com.datastax.driver.core.Metadata.buildTableMetadata(Metadata.java:128)
>>> >>     at
>>> com.datastax.driver.core.Metadata.rebuildSchema(Metadata.java:89)
>>> >>     at
>>> com.datastax.driver.core.ControlConnection.refreshSchema(ControlConnection.java:259)
>>> >>     at
>>> com.datastax.driver.core.ControlConnection.tryConnect(ControlConnection.java:214)
>>> >>     at
>>> com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:161)
>>> >>     at
>>> com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:77)
>>> >>     at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:890)
>>> >>     at
>>> com.datastax.driver.core.Cluster$Manager.newSession(Cluster.java:910)
>>> >>     at
>>> com.datastax.driver.core.Cluster$Manager.access$200(Cluster.java:806)
>>> >>     at com.datastax.driver.core.Cluster.connect(Cluster.java:158)
>>> >>     at
>>> cassandra.CassandraTestMinimized$delayedInit$body.apply(CassandraTestMinimized.scala:31)
>>> >>     at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
>>> >>     at
>>> scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
>>> >>     at scala.App$$anonfun$main$1.apply(App.scala:71)
>>> >>     at scala.App$$anonfun$main$1.apply(App.scala:71)
>>> >>     at scala.collection.immutable.List.foreach(List.scala:318)
>>> >>     at
>>> scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
>>> >>     at scala.App$class.main(App.scala:71)
>>> >>     at
>>> cassandra.CassandraTestMinimized$.main(CassandraTestMinimized.scala:5)
>>> >>     at
>>> cassandra.CassandraTestMinimized.main(CassandraTestMinimized.scala)
>>> >
>>> > I believe you've tried the cassandra trunk branch? trunk is basically
>>> the future Cassandra 2.1 and the driver is currently unhappy because the
>>> replicate_on_write option has been removed in that version. I'm supposed to
>>> have fixed that on the driver 2.0 branch like 2 days ago so maybe you're
>>> also using a slightly old version of the driver sources in there? Or maybe
>>> I've screwed up my fix, I'll double check. But anyway, it would be overall
>>> simpler to test with the cassandra-2.0 branch of Cassandra, with which you
>>> shouldn't run into that.
>>> > --
>>> > Sylvain
>>>
>>> --
>>> Sorry this was sent from mobile. Will do less grammar and spell check
>>> than usual.
>>>
>>
>>
>

Reply via email to