I'd recommend checking out the (free) Graph Databases book at http://graphdatabases.com/ It should give you a good understanding of Graphs and Neo4j to base your application on, as it walks you through modelling and also test-driving your graph model which I find really appealing. It also shows how to translate from a relational model to a graph model to help you start thinking in graph.
On 12/23/2013 02:48 PM, Sourabh Kapoor wrote: > 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. -- 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.
