You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Martin Arrowsmith <ar...@gmail.com> on 2011/12/21 07:04:41 UTC

Composite Column Question

Dear Cassandra Experts,

Are the number of composite attributes fixed for each column family ?

I have been doing : "create column family MyCF with comparator =
'CompositeType(IntegerType, UTF8Type)'

And this creates a composite { integer:string }

Hector complains when I give a 3rd attribute.

If "unstatic" composite columns are possible, what would be the CLI command
to create such a column family, and how can it be implemented ?

Best wishes,

Martin

Re: Composite Column Question

Posted by Sylvain Lebresne <sy...@datastax.com>.
On Wed, Dec 21, 2011 at 7:04 AM, Martin Arrowsmith
<ar...@gmail.com> wrote:
> Dear Cassandra Experts,
>
> Are the number of composite attributes fixed for each column family ?
>
> I have been doing : "create column family MyCF with comparator =
> 'CompositeType(IntegerType, UTF8Type)'
>
> And this creates a composite { integer:string }
>
> Hector complains when I give a 3rd attribute.

If you use CompositeType(IntegerType, UTF8Type) as comparator, you
cannot add a column with a name that has 3 components, because the
comparator wouldn't know how to compare that 3rd component.

However, the comparator is fine with you adding columns whose
name doesn't have all of the specified components. In other words,
if you know in advance that you may need up to 3 attributes (and you
know their type), you can declare all them at first but only use
the first components on some column name if needed.

Now that's obviously a bit restrictive. In theory, it could be possible
to update the comparator definition from
  CompositeType(IntegerType, UTF8Type)
to say
  CompositeType(IntegerType, UTF8Type, UUIDType)
at a later time but it is not possible right now because C* doesn't
allow any change of comparator. We should (and may) allow such
valid change at some point in the future.

Now, there also exists a DynamicCompositeType, that don't put
any restrictions on the number and type of component it uses. The
reason I'm mentioning it only at the end however is that it is trickier
to use and have some overhead over CompositeType. I'm also
not sure how much support hector have for this comparator. I would
avoid using DynamicCompositeType unless you know that
CompositeType really doesn't work for you.

--
Sylvain

>
> If "unstatic" composite columns are possible, what would be the CLI command
> to create such a column family, and how can it be implemented ?
>
> Best wishes,
>
> Martin
>