在dgraph中编写社交媒体的模式

时间:2019-11-08 07:04:31

标签: python graph graphql dgraph

我是dgraph的初学者,从neo4j转到dgraph。我在编写具有不同社交媒体平台详细信息的架构。

考虑到facebook,该架构将包含配置文件,组,页面的基本详细信息,以及fb配置文件与组和页面之间的不同关系,例如

profile_a is 'friends_of' profile_b;
user 'likes' page_b;
user is 'member_of' group_a
user 'works_at' place_a

twitter的类似情况,其中的关系将是

twitter_user 'follows' user_a
user_a 'followed_by' users

我这样做的目的

type Person{
        name: string @index(exact) .
        id: string @index(exact) .
        profile: string @index(exact) .
        picture_link: string .
        status_count: int .
        location: string .
        tags: string .
        user_id: int .
        follower_count: string .
        friend_count: string .
        type: int @index(exact) .   
        likes : [Page] .
        friends_of : [Fb_User] .
        members_of : [Group] .
        works_at : {
            name: string .
        }      
    }

    type Fb_User{
        name: string @index(exact) .
        id: string @index(exact) .
        profile: string @index(exact) .
        picture_link: string .
        status_count: int .
        location: string .
        type: int @index(exact) .  
        location: string .   
        tags: string .
        user_id: int .
    }

    type Group{
        name: string @index(exact) .
        id: string @index(exact) .
        profile: string @index(exact) .
        picture_link: string .
        group_member : int .

    }

    type Page{
        name: string @index(exact) .
        id: string @index(exact) .
        profile: string @index(exact) .
        picture_link: string .
        page_type : int .

    }

    type Facebook
     {  
        label: string @index(exact)  

    }

请认真地指导和纠正有关架构结构的问题。期待在pydgraph中实现它

谢谢

从获得帮助 https://tour.dgraph.io/schema/1/

我希望有一个架构可以通过python代码接受基本的细节和关系

1 个答案:

答案 0 :(得分:0)

基于您指的example

  • 对于您而言,既不需要在类型上定义id字段,也不必使其成为类型string。 dgraph将自动分配一个uiduid的索引要快得多。
  • 确保提供指令。例如,如果您通过以下方式定义PersonPage之间的关系:likes : [Page] .,请在类型定义后提供格式为likes: [uid] .的指令。 / li>

您还可以考虑尝试使用Dgraph的GraphQL version,以便可以与GraphQL SDL建立关系,这将使它们在您的应用程序中可重复使用。