in my case, I built a temporal database on top of Cassandra, so it's absolutely key.
Dynamic columns are super powerful, which relational database have no equivalent. For me, that is one of the top 3 reasons for using Cassandra. On Fri, Aug 30, 2013 at 2:03 PM, Vivek Mishra <mishra.v...@gmail.com> wrote: > If you talk about comparator. Yes, that's a valid point and not possible > with CQL3. > > -Vivek > > > On Fri, Aug 30, 2013 at 11:31 PM, Peter Lin <wool...@gmail.com> wrote: > >> >> I use dynamic columns all the time and they vary in type. >> >> With CQL you can define a default type, but you can't insert specific >> types of data for column name and value. It forces you to use all bytes or >> all strings, which would require coverting it to other types. >> >> thrift is much more powerful in that respect. >> >> not everyone needs to take advantage of the full power of dynamic columns. >> >> >> On Fri, Aug 30, 2013 at 1:58 PM, Jon Haddad <j...@jonhaddad.com> wrote: >> >>> Just curious - what do you need to do that requires thrift? We've build >>> our entire platform using CQL3 and we haven't hit any issues. >>> >>> On Aug 30, 2013, at 10:53 AM, Peter Lin <wool...@gmail.com> wrote: >>> >>> >>> my bias perspective, I find the sweet spot is thrift for insert/update >>> and CQL for select queries. >>> >>> CQL is too limiting and negates the power of storing arbitrary data >>> types in dynamic columns. >>> >>> >>> On Fri, Aug 30, 2013 at 1:45 PM, Jon Haddad <j...@jonhaddad.com> wrote: >>> >>>> If you're going to work with CQL, work with CQL. If you're going to >>>> work with Thrift, work with Thrift. Don't mix. >>>> >>>> On Aug 30, 2013, at 10:38 AM, Vivek Mishra <mishra.v...@gmail.com> >>>> wrote: >>>> >>>> Hi, >>>> If i a create a table with CQL3 as >>>> >>>> create table user(user_id text PRIMARY KEY, first_name text, last_name >>>> text, emailid text); >>>> >>>> and create index as: >>>> create index on user(first_name); >>>> >>>> then inserted some data as: >>>> insert into user(user_id,first_name,last_name,"emailId") >>>> values('@mevivs','vivek','mishra','vivek.mis...@impetus.co.in'); >>>> >>>> >>>> Then if update same column family using Cassandra-cli as: >>>> >>>> update column family user with key_validation_class='UTF8Type' and >>>> column_metadata=[{column_name:last_name, validation_class:'UTF8Type', >>>> index_type:KEYS},{column_name:first_name, validation_class:'UTF8Type', >>>> index_type:KEYS}]; >>>> >>>> >>>> Now if i connect via cqlsh and explore user table, i can see column >>>> first_name,last_name are not part of table structure anymore. Here is the >>>> output: >>>> >>>> CREATE TABLE user ( >>>> key text PRIMARY KEY >>>> ) WITH >>>> bloom_filter_fp_chance=0.010000 AND >>>> caching='KEYS_ONLY' AND >>>> comment='' AND >>>> dclocal_read_repair_chance=0.000000 AND >>>> gc_grace_seconds=864000 AND >>>> read_repair_chance=0.100000 AND >>>> replicate_on_write='true' AND >>>> populate_io_cache_on_flush='false' AND >>>> compaction={'class': 'SizeTieredCompactionStrategy'} AND >>>> compression={'sstable_compression': 'SnappyCompressor'}; >>>> >>>> cqlsh:cql3usage> select * from user; >>>> >>>> user_id >>>> --------- >>>> @mevivs >>>> >>>> >>>> >>>> >>>> >>>> I understand that, CQL3 and thrift interoperability is an issue. But >>>> this looks to me a very basic scenario. >>>> >>>> >>>> >>>> Any suggestions? Or If anybody can explain a reason behind this? >>>> >>>> -Vivek >>>> >>>> >>>> >>>> >>>> >>>> >>> >>> >> >