use*_*713 10 database graph graph-databases
我是图表的新手,非常有趣.这个问题可能是noob one,但请提供一些好材料.
我正在尝试创建一个小型社交网络,其中每个用户都是一个节点,并且与他的朋友有无向连接.
它工作正常但现在我想将它存储在数据库中.
如何存储数据?如何存储节点的所有连接节点(指针).
它是更好地删除用户后的存储注销,当他在登录或登录应该在和退出shouldnot有节点上的任何影响,从数据库中读取吗?
我知道它的理论.任何参考都会非常有用.
使用实际的图形数据库来存储数据.
您可以在节点中存储键/值对,还可以存储连接节点的边.
然后,你可以使用像小鬼查询/遍历图形- 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]
Run Code Online (Sandbox Code Playgroud)
我从最底层开始。
是在用户注销后删除内存并在登录时从数据库中读取内存更好,还是登录和注销不应对节点产生任何影响?
您将需要某种永久存储,否则您会丢失第一次崩溃/重新启动时获取的所有数据,这可能会让您的用户感到有点不安。
我如何存储数据?好吧,如果不了解更多信息,这很困难,但是假设您有一个用户列表,并且每个用户可以有 0 个或更多朋友,那么我会选择 2 张桌子。
例子
用户表
UserID Username
1 user2511713
2 abstracthchaos
3 anotheruser
Run Code Online (Sandbox Code Playgroud)
用户朋友
UserID FriendUserID
1 3
2 3
1 2
Run Code Online (Sandbox Code Playgroud)
意味着 user2511713 是 anotheruser 的朋友,abstracthchaos 和abstracthchaos 是 anotheruser 的朋友,取决于您的业务逻辑,暗示相反的方式也可能很有用,这样3 1 is the same as 1 3