在NoSQL中存储/同步Facebook图形(MongoDB)

Oli*_*ier 5 facebook graph mongodb nosql

我正在构建一个需要能够扩展facebook图形数据的应用程序.

我是NoSQL存储的新手,我正在寻求帮助.

使用图形api,我可以检索用户,因为我希望我的应用程序能够扩展几个社交图形提供程序,我将每个特定的facebook密钥移动到一个facebook数组子集中.

[User] => Array
    (
        [_id] => 4dd50c139bcb233c0c000000
        [name] => Foo Bar
        [first_name] => Foo 
        [last_name] => Bar
        [username] => fbar
        [location] => Array
            (
                [id] => 110774245616525
                [name] => Paris, France
            )

        [gender] => male
        [email] => fbar@gmail.com
        [timezone] => 2
        [locale] => fr_FR
        [facebook] => Array
            (
                [id] => 12345678
                [link] => http://www.facebook.com/foobar
                [verified] => 1
                [updated_time] => 2011-05-16T17:30:23+0000
                [picture] => https://graph.facebook.com/12345678/picture
            )

        [created] => MongoDate Object
            (
                [sec] => 1305807891
                [usec] => 0
            )
    )
Run Code Online (Sandbox Code Playgroud)
  • 这是好习惯吗?

然后我抓住他的朋友,我希望能够让他们与我的数据库保持同步.我不知道我是否应该将每个朋友注册为单独的用户并尝试使用引用,或者我是否可以添加一个Friend子集.

  • 什么是最好的性能和最容易保持同步?

       [User] => Array
       (         
            [Friend] => Array
            (
                [0] => Array
                    (
                        [id] => 12345678
                        [name] => Foo Bar
                    )
    
                [1] => Array
                    (
                        [id] => 12345678
                        [name] => Foo Bar
                    )
    
                [2] => Array
                    (
                        [id] => 12345678
                        [name] => Foo Bar
                    )
    
    Run Code Online (Sandbox Code Playgroud)
  • 问题上升到另一个级别与FriendLists,我应该如何存储?嵌入一​​切(并在我的用户中有大量的重复)或使用参考?我该怎么做?

我读到:http://www.mongodb.org/display/DOCS/Trees+in+MongoDB,这是非常有帮助的...但我仍然不确定我应该做什么.

非常感谢.

fra*_*ail 4

我有一个类似的应用程序,我将朋友存储为其他用户。但请确保您有一个标志来指示该用户是否是应用程序用户,否则数据在某些时候会变得混乱。

对于用户:

{
  fbid: xxxx,
  name : "xxxxx",
  ......
  friends : [ xxxx, xxxx, xxxx ],
  is_app_user : true
}
Run Code Online (Sandbox Code Playgroud)

对于每个朋友(不是应用程序用户):

{
  fbid: xxxx,
  name : "xxxxx",
  is_app_user : false
}
Run Code Online (Sandbox Code Playgroud)

当他们也登录时,您也可以is_app_user : true为他们制作。

PS:不要忘记在fbid上放置唯一索引