What are the alternative ways to model M:M relations in Cassandra?
Asked Answered
F

2

16

Consider a M:M relation that needs to be represented in a Cassandra data store.

What M:M modeling options are available? For each alternative, when is it to prefer? What M:M modeling choices have you made in your Cassandra powered projects?

Furring answered 4/4, 2010 at 0:8 Comment(0)
B
16

Instead of using a join table the way you would with an rdbms, you would have one ColumnFamily containing a row for each X and a list of Ys associated with it, then a CF containing a row for each Y and a list of each X associated with it.

If it turns out you don't really care about querying one of those directions then only keep the CF that you do care about.

Baggy answered 9/4, 2010 at 16:7 Comment(0)
J
2

Cassandra by design is Key value database, so to achieve M:M there are two ways to do it.

  1. De-normalize your data so every relation ship should duplicate data.

    ie. x->y(value) and x->z(value) and a->y(value)

    y should be saved for x and a

    This is how it should be done as it's give you strength of database

  2. Save reference for relational key as value.

    x->y(key) and x->z(Key) and a->y(Key)

    So if you need x with value of y it should be two operation, get x which will give you value of y. Then get y itself in a separate operation.

Cassandra is not RDBMS so don't wrap you mind around traditional way of doing it by dropping values and define relationship.

Jargon answered 7/4, 2010 at 15:58 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.