我需要在社交应用程序中跟踪用户关系,如下所示:
UserA follow UserC, UserD, and UserE
UserZ follow UserC, UserD, and UserE
UserC follow UserA, UserD, and UserE
等等。
首先,我需要一个分区容错的数据库,这样 MySQL 和它的兄弟们就无法参与其中。
我查看了 couchdb,但它会为每个更改创建一个修订版,因此,如果您的文档是这样的:
{
uuid: uuid
name: name,
lastName: lastName
follows: [ uuid1, uuid2, uuid3 ]
}
您将在数据库中有其他修订
(rev 1)
{
uuid: uuid
name: name,
lastName: lastName
follows: [ uuid1, uuid2 ]
}
(rev 2)
{
uuid: uuid
name: name,
lastName: lastName
follows: [ uuid1 ]
}
那是很大的空间,我知道您可以通过一些手动操作来释放它,但问题并没有消失。
我看了一下 Cassandra,到目前为止,它看起来是一个很好的解决方案,它允许插入而没有像 couchdb 这样的额外空间问题。我可以创建一个键空间,然后是一个列,然后是一个存储关系,如下所示:
keyspace:{
column:{
...
uuidT:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
uuidF:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
uuidH:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
...
}
}
但我想知道图形数据库是否最适合这个。
编辑:
在搜索答案后,我发现此页面有助于选择数据库。http://nosql.findthebest.com/