tags:

views:

67

answers:

2

Hi,

I'm developing an app that is vaguely similar to twitter, in that it allows users to follow one another. I wanted to do this using google app engine, for its scalability promises, but it's proving kind of difficult to get running for a few different reasons.

If I were doing this using mysql, I'd have a _users table, and a _followers table. Users go into the users table, follower relationships go into _followers. The problem is that each row in the users table will probably have like 100 corresponding records in the _followers table as users start following one another. So the number of rows is going to explode quickly.

Using app engine, the volume [shouldn't] be a problem.

If I go with mysql, and I do actually start to get some traction, how do I scale this up? Am I going to just end up moving to a distributed database in the end anyway? Should I fight it out with google app engine? I read that Twitter was using mysql, and they've run into this problem, and are now switching to cassandra.

Thanks

+6  A: 

Am I going to just end up moving to a distributed database in the end anyway?

If you become as big as e.g. twitter: Yes - or atleast some form of distributed cache.

Should I fight it out with google app engine?

Start making something useful. You're not Twitter - you do not have the experience the people building twitter/google/yahoo has accumulated during scaling a big real world app.

If you start out building something that will scale to the whole world, you will never get it done and you'll get it wrong anyway. If whatever you're making isn't done, there's 0 users and it doesn't matter how well it scales.

nos
+1 for good advice
hookedonwinter
Agreed, I'm just wondering [given my vague description of the system above] would porting it to a more scalable solution be extremely difficult, or difficult but largely do-able. I guess this situation happens all the time, just wondering if there was something I could do to try to reduce as many future scaling problems down the road as possible. Thanks
Agreed. YAGNI (http://en.wikipedia.org/wiki/You_ain't_gonna_need_it)... i.e. Don't bog a project down now with answering a problem that *may* emerge in the future. Have it in the back of your mind, but leave it there until you need to cross that bridge.
keithjgrant
A: 

GAE doesn't have MySQL (or any RDBMS).

If you can't even read the GAE documentation, you can't build anything remotely close to Twitter's scale.

Coronatus
Yes I know, my language was awkwardly worded, sorry if that was implied.