Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I run a middle size community and some time ago I started to develop social capabilities such as follow, status update, wall etc.

For some reason i thought that Cassandra was the right tool for the job so I looked online for a Cassandra developer and I found a very talented one.

Unluckily in the midst of the development the dev left (too much jobs) and so I'm here with a very nice class, a very nice demo, but a lot of fears that I won't be able to handle basic things such as compaction, scaling etc.

My biggest fear is to go online with all this coolness and then having a site inaccessible for hours or days.

The mysql consultant (very talented too) keeps saying me that I should stick with Mysql which I know rather well and in case something's wrong we can manage.

In that case I should take the class made for cassandra and abstract it for Mysql.

My question is this: Should I find another dev/consultant and stick with Cassandra because for social things it is definitely the best tool for the job, or should I listen to the Mysql consultant and revert to Mysql?

About 15k login each day Average 20 actions per user Avg 6 followers x user

(These are current statistics, but of course I'd like to increase them as much as possible.)

share|improve this question

closed as off topic by Tom Squires, Yannis Rizos, David Thornley, ChrisF Nov 24 '11 at 23:48

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Given your current statistics, MySQL can do it. But you will definitively have more problem to scale with MySQL than a solution like Cassandra. –  deadalnix Nov 22 '11 at 10:27
8  
@Tom -- this is not a Troll attracting "which is best" question. Its more go with a complex technology without the consultant, or, dump the work so far and use a simpler better understood technology. The poster is in a very specific situation and is genuinely unsure of his course of action. There is likely to be someone here who can give him valuable advice on his dilemma. –  James Anderson Nov 22 '11 at 10:42
1  
Sathia, I think MySQL will always be the tool of choice for a MySQL consultant. Same goes for a Casssandra consultant. –  Raku Nov 22 '11 at 12:11
2  
On an unrelated note, this would make a great nerd blues song. It could be called "NoSQL blues". I bet many people can relate to that :). –  Lukas Stejskal Nov 22 '11 at 12:35
6  
@tom -- this is not a which is better question! Its an "I have a difficult choice to make, can you help guide me" question. The poster has a very difficult choice of abandoning a substantial investment, or, playing it safe -- I am sure many readers here have faced a similar dilemma. This "close all questions" mania will be the death of this forum. –  James Anderson Nov 23 '11 at 1:36

3 Answers 3

up vote 1 down vote accepted

If you are familiar with MySQL and your site isn't of incredibly huge magnitude, I'd stay with MySQL for now until there are more resources to look into hiring people well-versed with technologies like Cassandra.

MySQL is a great choice for different functionalities due to its pluggable engine architecture. There's a transactional engine using fractal trees for storing its index structure called TokuDB. It scales incredibly well compared to InnoDB for example and has great additional functionality such as specifying multiple clustered indexes. It isn't free but it isn't expensive to the point it's not worth thinking about it. AFAIK, it's free up to 50gb of data used in production.

I've been using that engine after trying out HandlerSocket and I must say it's really, really an impressive piece of software. Since it's a drop in replacement for InnoDB, there is no learning curve. My suggestion is sticking with MySQL for the moment. Stats you mentioned aren't something MySQL can't handle.

share|improve this answer

I am not qualified to judge between MySQL and Cassandra. I know a little MySql but zero about Cassandra.

However I have seen many projects in similar situations. An investment has been made in a new technology which is not working out for whatever reason. At some stage, there is a crunch point where the decision hsa to be made on whether to make a humiliating about turn and abandon the new stuff, or, soldier on regardless and risk getting it in late over budget, and/or full of bugs.

My experience is that the projects which had the courage to admit defeat on the technology front and put the bushiness's priorities first are much more likely to be successful in the long run.

So my advice would be "Bite the bullet" and stick with MySql. After all MySql worked for Facebook right up until the 2147483646th picture of a cute puppy was posted.

share|improve this answer

I won't judge between MySQL and Cassandra for your situation. But it looks like you cannot find another talented Cassandra developer easily... So, unless you are doing experimental stuff and don't mind if it fails in production, go the safe way and continue with MySQL, you will have problems with MySQL as well as you will have problems with Cassandra but at least you will be able to manage them with MySQL.

If one day you cannot scale further with MySQL you will know exactly why and where the limits are, and at this moment you may choose another tool (Cassandra or not)...

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.