【问题标题】:What is the best database to track users relations?跟踪用户关系的最佳数据库是什么?
【发布时间】:2012-07-19 02:46:16
【问题描述】:

我需要在社交应用中跟踪用户关系,如下所示:

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/

【问题讨论】:

  • Y U TAG COUCHDB WEN U NO WANT COUCHDB?
  • 其实我喜欢所有的 couchdb 魔法,如果你现在有一种在 couchdb 中实现它的方法告诉我
  • 没有办法解决在 Couch 中压缩数据库的需要。在您看到手动操作的地方,我看到的是设置后忘记的 cron 作业。
  • 你在这个“一劳永逸的 cron 作业”中是对的
  • 数据库压缩可以通过编程完成

标签: nosql couchdb cassandra


【解决方案1】:

CouchDB 是一个离线数据库。

我建议研究一下graphDB,我会想到neo4j。几周前,我通过多伦多的 Mozilla 实验室介绍了它,那里的人告诉我,运行 graphDB 是最不痛苦的(你可以 apt-get/brew 它)。您可以在其中建立任意关系,但它不会分区。如果您想要一个可以依赖的数据库并且想要建立任意关系,那么Titan 可能值得一看。

【讨论】:

    【解决方案2】:

    FWIW,在 CouchDB 中,我总是使用对象数组,而不仅仅是 ID 数组。例如。

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

    这有两个原因:

    1. 如果需要,它允许您轻松地将其他连接数据添加到您可能需要的对象中。例如。 { _id: uuid1, followed_on: "2011-10-22" }
    2. 它与include_docs=true 选项非常吻合,用于在您的视图查询中获取相关文档。

    更新

    嘿,看看,you can limit the number of revisions kept in the DB

    【讨论】:

      猜你喜欢
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多