Another example of 10gen winning a highly technical market not through technical prowess but with superior marketing. I'd rather not argue whether MongoDB is better than other NoSQL solutions or RDBMS. But I do applaud their effort to get developers up and running with MongoDB quickly and easily, especially in contrast to $1000+ support/training for MySQL and Postgres.
10gen really nailed this; the meetup groups, customer support, drivers, docs and ability to get going are all awesome compared to most products, let alone the other databases competing with them.
Very cool. We're battling Mongo as we speak. Never ran into a problem where you have to run a compaction on a DB before, would love to know of a way to automate this like every other DB I've ever used. It's probably something I've glossed over and I'm sure in the first 5 min I'll be slapping my forehead.
Btw, do we get a free mongoDB sticker set to us on completion? I lost my last one.
Despite not knowing anything about your dataset and insertion/deletion patterns, you may want to consider power of two allocation. It's a new feature in 2.2 that costs some additional disk space up front (new documents potentially get 2x padding), but can save a lot of disk over the long run by eliminating many data access patterns that add to fragmentation. One (pathological) benchmark I ran saved 800x the disk space after 1,000K (edited from 100K), insertions and deletes of 1-10KB documents.
All databases do not like to give back space they have allocated because allocating space is an expensive operation. You probably don't need to compact the db, unless you have a problem with file size (which in some scenarios I have had this issue).
There's nothing built in that I know of, but you can easily just make something that runs on a regular basis like a scheduled task or cron job that runs either compact command or repair database command.
Again speak for your own databases. There are databases out there that plug each hole every time you delete a row AKA zero fragmentation.
Only databases that fit their working set in memory have to resort to fragmentation to get reasonable performance. If the data set fits in memory there are other strategies.
It is not only this: moving datums around in the database heap is expensive (invalidating caches, exacerbating thrashing) and touchy (index pointers, concurrency considerations).
But debloating over time is an important property, so it's probably worth it to eventually get it right.
Just registered for both the developers course and admin course. MongoDB 2.2 new features are awesome, specifically the aggregation framework and the concurrency improvements. I am looking forward to the courses, which are scheduled to start on Oct 22nd and are created in partnership with edX.
One of the bigger hurdles I had to deal with at my work at a :BigComapny was getting mongo installed. But even on our older systems I had no trouble with their provided packages. Which you wouldn't think would be notable, but it is. Actually getting the software to run in arguably the most important part.
I will not create an account unless I see a curriculum or course description on this web site. I don't know what will be the difficulty level of the course etc. I don't get why they can't write one or two descriptive paragraphs.
Seems very cool and an enjoyable and solid way to take the time to really absorb this stuff. However, from the description it doesn't sound like anything that you couldn't work through hands-on, from the website within say 1-2 weeks, if you focused on it.
This course will be different due to browser-based MongoDB shells for completing exercises like testing queries and spinning up replica sets. You can walk through a lot of the material on your on due to the 10gen presentations and MongoDB Docs, but it's even better when you're guided through the concepts in the shell.
Yeah, I was surprised at the length of time they recommend -- 10 hours/week for 7 weeks (for the developer course). 70 hours? I would think you could get productive in this in much less time.