With the recent release of Meteor 1.0 (and the huge buzz around it), developers may be wondering why the Meteor framework is so popular. Or perhaps, for developers new to web programming, what is Meteor?
To help you better understand Meteor from a developer's perspective, we've asked Tim Haines, founder of team email and twitter inbox service Respondly, to share his experience working with both Meteor and MongoDB.
Respondly on Meteor and MongoDB
Q: Let's start with an easy one. What is Meteor?
Q: Why is MongoDB commonly mentioned with Meteor?
MongoDB is somewhat blessed by Meteor as the database of choice for the 1.0 release, and the native built-in support for it is fantastic. Meteor uses special MongoDB features (such as the oplog) to keep real-time data reactivity efficient.
Meteor also has a client-side MongoDB implementation (called minimongo) which runs in the browser. Minimongo allows you to write the same query for your server side and client side data collections, and Meteor's observer feature lets you react to changes to both in real time.
Q: How does developing with Meteor and MongoDB work?
In development on your local machine, Meteor takes care of installing and starting MongoDB for you. When you start your Meteor app, it loads a MongoDB instance and takes care of everything for you. If you'd like to query that MongoDB instance, you can simply run "meteor mongo" in another terminal window, and it loads a MongoDB shell connected to your app's database. This is great for ad hoc queries and bulk updates while building your app.
Q: Respondly is built on top of Meteor. Why did you choose Meteor and how did you find the development process?
Meteor's been great to work with. It's the perfect framework for building real-time web apps and is tremendously useful for Respondly. We provide our users real-time up-to-the-moment information as they're communicating with their own customers.
Meteor takes care of almost all of the plumbing for you, allowing you to concentrate on developing business value. In particular, Meteor includes real-time monitoring of MongoDB for changes to data (via oplog tailing). This monitoring allows Meteor to:
- track which (if any) clients need new or updated data
- publish new data to clients that need it
- update the UI in real-time with the new data that arrives
with minimal developer effort. The real-time reactivity from db updates all the way to UI updates is amazing.
Q: What about MongoDB? How have you found developing on it?
MongoDB's been great to work with. Coming from a SQL background, I've really enjoyed the variety of data structures and queries that MongoDB can handle. We've been able to make great use of storing rich documents that include arrays and sub-documents, to better map to our real-world understanding of our data. MongoDB's also very versatile in its query language, having an update modifier for almost anything.
Build on Meteor!
We hope this Q&A has been helpful in highlighting what makes Meteor and MongoDB a great stack for web developers. The MongoLab and Meteor teams look forward welcoming you to our community!