views:

194

answers:

4

My two main requirements for the site are related to degrees of separation and graph matching (given two graphs, return some kind of similarity score).

My first thought was to use MySql to do it, which would probably work out okay for storing how I want to manage 'friends' (similar to Twitter), but I'm thinking if I want to show users results which will make use of graphing algorithms (like shortest path between two people) maybe it isn't the way to go for that.

My language of choice for the front end, would be Python using something like Pylons but I haven't committed to anything specific yet and would be willing to budge if it fitted well with a good backend solution.

I'm thinking of using MySQL for storing user profile data, neo4j for the graph information of relations between users and then have a Python application talk to both of them.

Maybe there is a simpler/more efficient way to do this kind of thing. At the moment for me it's more getting a suitable prototype done than worrying about scalability but I'm willing to invest some time learning something new if it'll save me time rewriting/porting in the future.

PS: I'm more of a programmer than a database designer, so I'd prefer having rewrite the frontend later rather than say porting over the database, which is the main reason I'm looking for advice.

+2  A: 

MySQL is really your best choice for the database unless you want to go proprietary.

As for the actual language, pick whatever you are familiar with. While Youtube and Reddit are written in python, many of the other large sites use Ruby (Hulu, Twitter, Techcrunch) or C++ (Google) or PHP (Facebook, Yahoo, etc).

Aaron Harun
Google uses Python (and Java, also) quite extensively, too -- in particular, as you mention, YouTube (Google's largest-bandwidth, possibly fastest-growing property) is basically all-Python, but so are other Google properties like, for example, `code.google.com`. It makes little sense to use Google as an "anti-Python" example, see e.g. http://stackoverflow.com/questions/2560310/heavy-usage-of-python-at-google/2561008#2561008 !-)
Alex Martelli
I said youtube used python. From what I know, the main google site is C++. There was no "anti-python" examples, it just isn't one of the most popular web-development language.
Aaron Harun
I've had plenty of experience with desktop applications in Python, Java and C#. My main concern however is not with the application itself, but more storing and retrieving graphs and information relating to them in a way that can be considered scalable.Linkedin has "Nth degree contacts", Facebook shows friends in common/recommends them to you. Those are the kind of features I'd like to implement in a web application.
Coluthia
Popularity != Ease of Use
gnibbler
Also, Popularity != best language
Wayne Werner
Mysql is your best bet for your database. Python (Django) is a great framework.
ggfan
Python with Django is just as easy as Ruby with Ruby on Rails.
Christian
A: 

I realize this is probably not exactly the answer you are looking for, but I think it benefits mentioning for viewers/seekers of the question overall: BuddyPress is a well-honed "out of the box" social networking platform, built on top of WordPress (php, MySQL). It's a great system if you're not trying to do advanced things, and if you are trying to do advanced things you can still get pretty far without having to overload into some other deeper language like Python.

http://buddypress.org/

American Yak
Can the people that downvoted on these comments please leave a message as to why? Constructive criticism?
GlenCrawford
A: 

I'd use a combination of Graph Database plus MySQL. The Graph database should only be used to efficiently store user information and relations. For everything else like user pages etc. I'd use MySQL.

Johannes Rudolph
+3  A: 

Python/Django provides with Pinax a good framework for social websites.

Christian
andyortlieb