1

We are going to launch a service that will require between 1 and 2 GB for file storage per paid user. I am going to use GridFS for storing files. GridFS is a module for MongoDB that allows to store large files in de database.

I am pondering the different options for storing the database.

But since I am unexperienced at deployment and it is my first time with Mongodb I need your experience.

Criteria:

  • I want to spend my time developing my core business, that is, my own application. I am a Ruby on Rails developer. I do not like to mess with server configuration. Hence, I would like a fully managed hosting solution. But I would like to know about any other option, if you think it is worth it.
  • It should be able to scale. Cloud style. Pay as you go.
  • The lower the price, the better.

So far I known of these services:

And they seem to be OK for common needs, that is no file storage. But I am going to use GridFS, so the size matters. These services seems to scale, in price, quite poorly.

MongoHQ: The larger plan max storage is 20 GB. Seems like a very little storage, for GridFS.

MongoMachine: Flat price, 2.5$ per GB. I didn't found the limit. Seems like a good price, comparing the others.

MongoLab: 3.984 GB max, which I don't think I will hit, so perfect. 8$ per GB, quite costly.

CloudControl: The larger plan is 20 Gb. The custom service starts at 250€ plus some unspecified charge per GB.

What is your experience with these services? Any downtimes? Other possibilities?

Edit: Added meaning of GridFS

1

2 Answers 2

4

I think you misread the MongoLab specifications. It has a default of approximately 3.9 GB - not a max 3984 GB! It's a US decimal mark, not a thousands-separator (why do Americans insist on doing this way??). The max for the large plan is 20 GB ;)

Update:
I just looked a little more at the MongoHQ site and found an interesting discussion on their support site by a guy asking kind of the same question. Their answer was:

Our limits are soft limits on the large meaning we will not cut you off once you go past 20GB. It is there as a measuring tool to decide if you fit on a shared plan.

We also offer dedicated plans and encourage people to start looking into those once their data gets that large. One of the main reasons is that to query a database that size you will need effective indexes and you will need to keep some portion of them in memory. When you share a server with other database you can't reasonably keep a lot of your database in memory. So it is in everyones best interest to move people with larger datasets to a dedicated plan.

If your data is not to that size yet it may make sense to start on the shared plans and as you grow look into the dedicated plans.

http://support.mongohq.com/kb/plans/mongohq-dedicated-plans

1
  • Oh, good observation point! It got my totally confused, it's 20 gb. The guy at that discussion, it is actually me. Little world :)
    – Nerian
    Feb 22, 2011 at 2:01
1

I'm really struggling to answer this question as-is, so I'm going to answer it as I interpret it.

"What is the best technology to use for MongoDB/GridFS database servers"

I'd probably start off with a couple of storage nodes, say 4 300GB (or 600GB) SAS disks each, nice fast storage, bung them in a RAID 10 (or possibly RAID 6) array for good redundancy and speed trade-off. Make sure you get a decent RAID card with BBWC (Battery Backed Write Cache). Make sure you have decent networking between the nodes, so you can get decent write speeds across the network.

I'm not that familiar with GridFS, but if I wanted replicated filesystems, I'd go straight to GlusterFS, and create a replicated pair from those two nodes.

I suspect that this probably isn't the right place to ask about pricing and so on.

Also, if you're a developer, I suggest that you hire / get a sysadmin on contract / retainer for a little while while you get the infrastructure built / up and running. Especially if you want to concentrate on the business building.

It should be able to scale. Cloud style. Pay as you go.

That bit makes very little sense. Scalability is one thing. The cloud is a marketing buzzword, PAYG, well, that's down entirely to your billing platform.

The lower the price, the better

Lower the price to you, or your customers? There's an old saying in systems engineering, "Cheap, good or fast; choose two.". You might be able to produce a system that's cheap for you, but will be wank for your customers, and they'll leave in their droves. Watch out for that, especially as you've got competition, people can vote with their feet.

4
  • Thank you for answering. I will clarify the question. By Cloud style I mean that I do not want to build computers, rent a physical space and take care of all. I just want to say "give 20 GB more of space, here is the money". That's what I meant by cloud style. The reasoning behind this is that my startup it is just me. No funding. And I am about to graduate from school. I don't want to mess with system operation, since it is out of my skill set. I just want to code my web service, that is what is going to give me money.
    – Nerian
    Jan 16, 2011 at 0:20
  • I will clarify in the question too what is GridFS. In few words: Storing large files in a NoSQL Database. This is relevant for size. Normally a 2 GB database is huge. In my case, since I am storing files, it doesn't really mean huge.
    – Nerian
    Jan 16, 2011 at 0:21
  • I will set a high price per customer, so I can provide quality and speed.
    – Nerian
    Jan 16, 2011 at 0:25
  • Currently I have set up a Heroku app and MongoHQ. heroku.com . This is the kind of service that I want. Zero server configuration.
    – Nerian
    Jan 16, 2011 at 0:30

Not the answer you're looking for? Browse other questions tagged .