16

我是图表新手,它非常有趣。这个问题可能是菜鸟,但请找到一些好的材料。

我正在尝试制作一个小型社交网络,其中每个用户都是一个节点,并且与他的朋友有无直接的联系。

它工作正常,但现在我想将它存储在数据库中。

如何存储数据?如何存储节点的所有连接节点(指针)。

用户注销后删除内存并在登录时从数据库中读取它更好还是应该登录和注销不应该对节点有任何影响?

我知道它的理论。任何参考资料都会非常有帮助。

4

2 回答 2

10

使用实际的图形数据库来存储您的数据。

http://www.neo4j.org/

您可以将键/值对存储在节点中,还可以存储连接节点的边。

然后你可以使用 Gremlin 之类的东西来查询/遍历图形 - https://github.com/tinkerpop/gremlin。请参阅他们的文档以下载示例并运行示例查询: https ://github.com/tinkerpop/gremlin/wiki/Getting-Started

语法的想法:

gremlin> // lets only take 'knows' labeled edges
gremlin> v.out('knows')
==>v[2]
==>v[4]
gremlin> // lets do a traversal from the '1' marko vertex to its outgoing edges.
gremlin> // in the property graph world, edges are first class citizens that can be traversed to.
gremlin> v.outE
==>e[7][1-knows->2]
==>e[9][1-created->3]
==>e[8][1-knows->4]
于 2013-07-10T17:44:14.487 回答
1

我从底部开始。

用户注销后删除内存并在登录时从数据库中读取它更好还是应该登录和注销不应该对节点有任何影响?

您将需要某种永久存储,否则您会丢失在第一次崩溃/重启时获取的所有数据,这可能会让您的用户感到不安。

如何存储数据?好吧,如果不了解更多信息,这很困难,但是假设您有一个用户列表并且每个用户可以有 0 个或更多朋友,那么我将使用 2 个表。

  • 用户- 存储您的所有用户信息,例如用户名和密码
  • UsersFriends *- 以 UserID -> UserID 方式存储所有关系 *

例子

用户表

UserID  Username
1       user2511713
2       abstracthchaos
3       anotheruser

用户朋友

UserID    FriendUserID
1           3
2           3
1           2

表示 user2511713 是另一个用户的朋友,abstracthchaos 和 abstracthchaos 是另一个用户的朋友,取决于您的业务逻辑,暗示其他方式也可能很有用3 1 is the same as 1 3

于 2013-07-10T14:54:21.173 回答