SQL (MySQL) vs NoSQL (CouchDB)

MysqlSqlNosqlCouchdb

Mysql Problem Overview


I am in the middle of designing a highly-scalable application which must store a lot of data. Just for example it will store lots about users and then things like a lot of their messages, comments etc. I have always used MySQL before but now I am minded to try something new like couchdb or similar which is not SQL.

Does anyone have any thoughts or guidance on this?

Mysql Solutions


Solution 1 - Mysql

Here's a quote from a recent blog post from Dare Obasanjo.

> SQL databases are like automatic > transmission and NoSQL databases are > like manual transmission. Once you > switch to NoSQL, you become > responsible for a lot of work that the > system takes care of automatically in > a relational database system. Similar > to what happens when you pick manual > over automatic transmission. Secondly, > NoSQL allows you to eke more > performance out of the system by > eliminating a lot of integrity checks > done by relational databases from the > database tier. Again, this is similar > to how you can get more performance > out of your car by driving a manual > transmission versus an automatic > transmission vehicle. > > However the most notable similarity is > that just like most of us can’t really > take advantage of the benefits of a > manual transmission vehicle because > the majority of our driving is sitting > in traffic on the way to and from > work, there is a similar harsh reality > in that most sites aren’t at Google or > Facebook’s scale and thus have no need > for a Bigtable or Cassandra.

To which I can add only that switching from MySQL, where you have at least some experience, to CouchDB, where you have no experience, means you will have to deal with a whole new set of problems and learn different concepts and best practices. While by itself this is wonderful (I am playing at home with MongoDB and like it a lot), it will be a cost that you need to calculate when estimating the work for that project, and brings unknown risks while promising unknown benefits. It will be very hard to judge if you can do the project on time and with the quality you want/need to be successful, if it's based on a technology you don't know.

Now, if you have on the team an expert in the NoSQL field, then by all means take a good look at it. But without any expertise on the team, don't jump on NoSQL for a new commercial project.

Update: Just to throw some gasoline in the open fire you started, here are two interesting articles from people on the SQL camp. :-)

I Can't Wait for NoSQL to Die (original article is gone, here's a copy)
Fighting The NoSQL Mindset, Though This Isn't an anti-NoSQL Piece
Update: Well here is an interesting article about NoSQL
Making Sense of NoSQL

Solution 2 - Mysql

Seems like only real solutions today revolve around scaling out or sharding. All modern databases (NoSQLs as well as NewSQLs) support horizontal scaling right out of the box, at the database layer, without the need for the application to have sharding code or something.

Unfortunately enough, for the trusted good-old MySQL, sharding is not provided "out of the box". ScaleBase (disclaimer: I work there) is a maker of a complete scale-out solution an "automatic sharding machine" if you like. ScaleBae analyzes your data and SQL stream, splits the data across DB nodes, and aggregates in runtime – so you won’t have to! And it's free download.

Don't get me wrong, NoSQLs are great, they're new, new is more choice and choice is always good!! But choosing NoSQL comes with a price, make sure you can pay it...

You can see here some more data about MySQL, NoSQL...: http://www.scalebase.com/extreme-scalability-with-mongodb-and-mysql-part-1-auto-sharding

Hope that helped.

Solution 3 - Mysql

One of the best options is to go for MongoDB(NOSql dB) that supports scalability.Stores large amounts of data nothing but bigdata in the form of documents unlike rows and tables in sql.This is fasters that follows sharding of the data.Uses replicasets to ensure data guarantee that maintains multiple servers having primary db server as the base. Language independent. Flexible to use

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionchristophmccannView Question on Stackoverflow
Solution 1 - MysqlFranci PenovView Answer on Stackoverflow
Solution 2 - MysqlDoron LevariView Answer on Stackoverflow
Solution 3 - MysqlKiranmai HarshiView Answer on Stackoverflow