Hi All,

What is the best design for social sharing network based on phonebook? What 
should be the architecture of the server?

Background:

App sync the phonebook of a contact and social network of a user and build 
a graph and give recommendations.

I read earlier usually developers make a mistake by thinking graph DB as a 
relational DB and considering everything as a property of a single relation.

Thats why i thought its better to ask questions to  more senior people out 
here.I am also putting some use cases as it helps to think of a long term

design of graph DB. Note: Also read relations are much better than 
properties.Always use that if possible.


Data involved :

1. Estimated data in an yr: 500 million to 1 billion (Currently we have 
only 1 relation friends and on weekend server is choking up)

2. 5-6 different sharing networks(BBM , FB, LinkedIn and others)

3. on Avg, every phone number (a node) is connected to 300 nodes with 
friends relation.


Use case:

1. Recommendation of friends, mutual friends to people in your phonebook.

2. Initially not many nodes user connects to has social linkage therefore 
it may be the case you have lot of friends but very few of them are social 
friends.

   Does it make sense to have new relationship for every social ID (be bbm, 
FB, linkedin)

3. We will build the network through which old user gets notification when 
new user joins any of social network and register to our app.

4. Pick of the day - based on mutual friends (degree and social interest 
and country), user can search country wise social IDs.

5. User always search people from 1 country or its connected node (upto 4 
degree) based on male/female and age filter.

6. Status update would be notified to other connected nodes with social IDs.

Current Structure(Failing on bigger data set and creating lot of memory 
issues)

Neo4j Data:

Relation - Friend

Node has social ID as property,Country as indexed key and phone number as 
indexed keys

Mysql Data:

All other second level data is in mysql.



This is what i am thinking to try it out. Please let me know if i am moving 
in right direction or not.

We need scalable and performance oriented approach where we can scale 
similar solutions to other social

networking companies with 1 engine behind it. (It can scale to 10 social 
networking companies)


Country (1 relation or bucket per country)

Social (1 relation or bucket per social networking company)

1 relation for male, 1 relation for female

Finally Node person with phonenumber as index key.


Your answers are highly appreciated!!

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to