Oh... Sylvain, thanks a lot for such a complete answer.

Yeah, I understand my mistake in suggestions regarding composites.
It seems, composites are pretty much an advanced version of key manual
joining into a string column name: <key1>:<key2>

Thanks a lot!
Ed

On Thu, Sep 27, 2012 at 2:02 PM, Sylvain Lebresne <sylv...@datastax.com>wrote:

> > But from my understanding, you just can't update composite column, only
> > delete and insert... so this may make my update use case much more
> > complicated.
>
> Let me try to sum things up.
> In regular column families, a column (value) is defined by 2 keys: the
> row key and the column name.
> In super column families, a column (value) is defined by 3 keys: the
> row key, the super column name and the column name.
>
> So a super column is really just the set of columns that share the
> same (row key, super column name) pair.
>
> The idea of composite columns is to use regular columns, but simply to
> distinguish multiple parts of the column name. So now if you take the
> example of a CompositeType with 2 components. In that column family:
> a column (value) is defined by 3 keys: the row key, the first
> component of the column name and the second component of the column
> name.
>
> In other words, composites are a *generalization* of super columns and
> super columns are the case of composites with 2 components. Except
> that super columns are hard-wired in the cassandra code base in a way
> that come with a number of limitation, the main one being that we
> always deserialize a super column (again, which is just a set of
> columns) in its entirety when we read it from disk.
>
> So no, it's not true that " you just can't update composite column,
> only delete and insert" nor that it is "not possible to add any
> sub-column to your composite".
>
> That being said, if you are using the thrift interface, super columns
> do have a few perks currently:
>   - the grouping of all the sub-columns composing a super columns is
> hard-wired in Cassandra. The equivalent for composites, which consists
> in grouping all columns having the same value for a given component,
> must be done client side. Maybe some client library do that for you
> but I'm not sure (I don't know for Pycassa for instance).
>   - there is a few queries that can be easily done with super columns
> that don't translate easily to composites, namely deleting whole super
> columns and to a less extend querying multiple super columns by name.
> That's due to a few limitations that upcoming versions of Cassandra
> will solve but it's not the case with currently released versions.
>
> The bottom line is: if you can do without those few perks, then you'd
> better use composites since they have less limitations. If you can't
> really do without these perks and can live with the super columns
> limitations, then go on, use super columns. (And if you want the perks
> without the limitations, wait for Cassandra 1.2 and use CQL3 :D)
>
>
> > ... and as I know, DynamicComposites is not recommended (and actually not
> > supported by Pycassa).
>
> DynamicComposites don't do what you think they do. They do nothing
> more than "regular" composite as far as comparing them to SuperColumns
> is concerned, except giving you ways to shoot yourself in the foot.
>
> --
> Sylvain
>

Reply via email to