views:

193

answers:

4

Hey guys,

Im working on promising project that develops a new social media app for web and mobile. We are at begin defining functionalities. Nevertheless, I'm thinking ahead on architecture. So I'm asking:

1 - Whats the best plataform to develop the core of this aplication that will have a Rest API interface.

2 - Whats the best database that will scale and grow with my application.

As far as I researched, these were the answers I found most interesting:

For database: Cassandra NoSQL DB, amazing scalabilty, amazing write performance, good read performance (will be improved on 0.6). I think i will choose that one.

Zookeer for transactions on Cassandra.

I think that 2 technologies rly good for that propose. What do you think guys?

On the front end that will serve the REST API, i dont have a final candidate. For this one i have questions based on Perfomance X Scalabilty X Fast Development/Maintenance.

Java or .Net As far as I researched, brings the best balance of this requisits.

Python, pearl and Rail, has the best (Fast Development/Maintenance), but sux on all other.

C or C++ I dont even consider, because its (Fast Development/Maintenance) sux...

So what do you guy think about it?

+1  A: 

Take a look at neo4j in terms of the database. It fits nicely with all the requirements of a social network. It is in fact a network database.

rmarimon
neo4j is based on graph. Like this article (http://en.wikipedia.org/wiki/Spatial_database) say its work for spatial database, something that i will need. But im little rusty in graph, i will need to get back my my college books. Thanks for the answser
Sky
A: 

Also look at memcached. It is a high performing and distributed caching system and will definitely fit your requirements.

Teja Kantamneni
Memcached is nice to use with lamp solution, but i dont see anyone using it with cassandra. Maybe it can be used to help improve read performance from casssandra.
Sky
@Sky people aren't using it b/c Cassandra 0.6 is fast enough that adding memcached in front doesn't give you enough benefit to justify the extra complexity. Digg, for instance, used to use memcached w/ their old MySQL architecture but they have dropped it in their move to Cassandra.
jbellis
A: 

I'd start with Rails because it has an active community, lots of innovation, excellent REST support, and it's what I happen to know best. I thought the performance/scalability issues had already been largely debunked by now... tuning and scaling a Rails application requires the same solutions as any other system -- assuming you're ever lucky enough to need to deal with scaling issues.

As far as the data store, I don't know enough about the project or the problems you're trying to solve to recommend anything.

Jeremy Weiskotten
My project is to build a web app like foursquare, lets say thats a foursquare with much more interactivity.Most of benchmarks and comparisson that i see about performance and scalability say:RoR sux on performance and its a pain to scale.But i dont find any article with consistente workarounds for that.
Sky
A: 

jbellis: yes thats true.

Right now im looking for Django and Cassandra integration, i belive its rly nice plataform, but there is no oficial support or even pespective from Django team support noSql DBs.

Another option that I find interesting is use cassandra with RoR and the Fauna's client developed by Twitter team.

Sky
http://twissandra.com/ is an example Cassandra app done in django. Source is linked there.
jbellis
I already see that one, its nice thanks!!
Sky