> > Cassandra will throw an exception indicating the type is different than > the default type.
If you want untyped data, store blobs. Or store in a different column (they're free when empty, after all). Type safety is considered a good thing by many. On 20 February 2014 17:26, 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. >>> >> >> >