Hi,

I'm our company software architect, and I'm new to GraphDBs. But as we're
building a Google+-like, we realized the need for something like Neo4j. And
as this community seems the best, we settle for you guys :)

Anyway. Onto the design. Call us fools, but we're trying to redo Google+
(except for kids). I need help with the design, for starters.

Here's the Domain:
- Users
- Users have friends
- Users can place friends in one or more group (circle for G+), groups being
only visible to the user creating them.
- Users can create posts, which are visible either by all his friends or
only one or more groups.

I realize the hardest part is to retrieve feeds. For example, I want the
posts feed for user X for his group G. 

Here's what I envision:
- User are nodes
- Users have FRIEND_WITH relationships (direction being the initial
requester to the other)
- Groups are nodes.
- Group has a CREATED_BY relationship to user
- Group has BELONGS_TO relationships to multiple users
- Post are nodes
- Post has CREATED_BY relationship to the user
- Post has VISIBLE_TO relationship to one or more groups
- PostingEvent is a node with a timestamp property
- PostingEvent has a RELATED_TO relationship to the user and the post

And we would have a timeline index (Lucene or B-tree, I have no idea) for
feeds retrieval.

1. Do you see issues with my design?
2. What to do with postings to "All my friends", do I create a "All friends"
group? In that case do I still need the user-to-user relationships?
3. I never worked with timeline indexes and such, so I could use some
readings on the subject, even theorical ones, even dead-tree books. Please
don't hesitate to make recommendations.

Thanks !

Antoine

--
View this message in context: 
http://neo4j-community-discussions.438527.n3.nabble.com/Design-help-for-G-like-app-tp3353185p3353185.html
Sent from the Neo4j Community Discussions mailing list archive at Nabble.com.
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to