views:

53

answers:

2

Had gone through some NoSQL concepts and MongoDB & CouchDB articles. It seems they will give more scope to build scalable web applications. But need some clarity whether they will support the following features as SQL Server does?

  1. Whether it supports database mirroring?
  2. Is there any size limitation of NoSQL database?
  3. Is it better to ignore and go with NoSQL for social networking sites?
  4. What are alternatives to run jobs on NoSQL like Sql Agent Jobs?
A: 

With Mongodb here's what I know.

1 - You have your traditional master/slave and replica sets.

2 - On 64bit I dont think there is a limitation. On 32bit, I believe the data size can be a maximum of 2.5g

3 - Depends on your needs. Lots of social networking sites still use mysql or postgresql ALONG with NoSQL. A lot of start ups are looking at deploying just NoSQL by itself. If it's ecommerce and you need ACID or transaction, stick to RDBMS.

4 - You mean to backup the data on the server? I think there are traditional export/import tools. I guess you could write a script to do all that and then have an agent backup from the filesystem.

luckytaxi
A: 

Hey Tom;

Another set of responses here:

Whether it supports database mirroring?

Basically every NoSQL database will have some form of database mirroring. MongoDB supports Master/Slave and Replica Sets (a mirrored set with auto-failover). Some NoSQL databases, like Cassandra & HBase, basically have data replication "baked in".

Is there any size limitation of NoSQL database?

Nothing major. These database are meant to scale horizontally, so if a NoSQL database has a major size restriction it won't last long. The exception here is that MongoDB has a 2GB file limit on 32-bit systems (if you're still using 32-bit servers). Mongo, Couch and others all have examples of storing billions of "documents". So you're probably covered.

Is it better to ignore and go with NoSQL for social networking sites?

No. All of the major social networking sites have some form of SQL hanging around. Long-term, there's really a use for both (in tandem). I'm adding pieces of Mongo "here & there" in my current office, but I'm never going to completely supplant my SQL database. I like to think of NoSQL as being great for "transactional" while SQL is great for "analysis".

What are alternatives to run jobs on NoSQL like Sql Agent Jobs?

At the least, each NoSQL system has the capacity for running scripted commands from the command line. In the case of say MongoDB, you actually assemble a javascript file and run something like: ./mongo 1.2.3.4/database my_script.js. Using cron or Scheduled tasks, it's pretty easy to get these jobs to run.

In fact, to run reporting on these jobs, you'll typically want to schedule map-reduces so you'll definitely want to become familiar with running tasks from the command-line.

However, if you're used to SQL Agent, you're going to be disappointed. Most of the NoSQL databases are less than 2-years old and the tooling is just not there yet. It's not to say that it will never exist, simply that a product as nice as SQL Agent is still a long ways off for most of these products.

Gates VP