What is the best database to track users relations?
===

I need to track users relations in a social app, something like this:

    UserA follow UserC, UserD, and UserE
    UserZ follow UserC, UserD, and UserE
    UserC follow UserA, UserD, and UserE

And so on.

First, I need a partition tolerant database so MySQL and its brothers are out of the game.

I look at couchdb but it creates a revision for each change, so, if your doc is like:

    {
      uuid: uuid
      name: name,
      lastName: lastName
      follows: [ uuid1, uuid2, uuid3 ]
    }

you will have this other revisions in the data base

    (rev 1)
    {
      uuid: uuid
      name: name,
      lastName: lastName
      follows: [ uuid1, uuid2 ]
    }
    (rev 2)
    {
      uuid: uuid
      name: name,
      lastName: lastName
      follows: [ uuid1 ]
    }

That is a lot of space, I know you can free this by some manual action but the problem don't disappear.

I look at Cassandra, and so far it looks like a good solution, it allows insertions with no extra space issues like couchdb. I can create a key space, then a column and then an store relations, something like this:

    keyspace:{
      column:{
        ...
        uuidT:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
        uuidF:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
        uuidH:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
        ...
      }
    }

But I'm wondering if a graphical database is best for this.