This really depends on the operations you want to optimize for.  What's important to you?  Aggregate queries?  Finding children/siblings/ancestors?  Reorganizing the tree/hierarchy?

For Cassandra, you really need to spend time thinking about how you'll be accessing things and design for that.

If it's a 2-3 level hierarchy, then straight forward approaches like what Jeff suggested seem logical.

Otherwise, I'd say if you've got an arbitrary-level hierarchy, then you'll have to think about how to efficiently adapt one of the usual suspects for this stuff (adjacency lists, nested sets, materialized paths, etc.).  I, for one, would be interested in knowing if anyone else's experienced with this kind of stuff in Cassandra. 

and the like might be good places to start.

On Sat, Mar 6, 2010 at 2:13 AM, Jeff Zhang <> wrote:
use the parent as column family and the child as the column under the column family if this is two-level.
And you can use the super-column if there are more than two-levels


On Sat, Mar 6, 2010 at 1:31 AM, HubertChang <> wrote:

For examples, like tags, many parents to many children.
View this message in context:
Sent from the mailing list archive at

Best Regards

Jeff Zhang

(917) 951-0636

This email and any files transmitted with it are confidential and intended solely for the use of the individual to whom they are addressed. If you have received this email in error please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited.