Arunoda does make a lot of great contributions to the Meteor community. MongoDB oplog tailing was actually introduced by him earlier (http://meteorhacks.com/lets-scale-meteor.html). Although the core Meteor team probably had this on their radar, his implementation was the first publicly distributed, and he's one of the leading Meteor users pushing its use into production and reporting on how it goes.
That's what exactly happened and @jjamz was helping me on the editing.
(anyway, I really welcome the english errors you raised, but I've done a lot of articles with my bad english. I hope most of Meteor user's got something out from them. That's the the point I think we should consider)
I've used meteor for several projects, and I have found it to be great for developing quickly, but it does have all these scaling issues that are usually fixed via 'unofficial hacks'. I can't wait until V 1.0 is out. I hope it comes with all the promised scaling tools.
Here's a 'very beta' analytics tool I've been working on that uses Meteor and MongoDB:
Obviously I can only speak for myself, but, in my opinion MongoDB is broken at a deep fundamental design level because the clever technological metaphor it's built upon (mmap is cache, we can overwrite in RAM and let the OS handle writes!) is just mistaken. All its other problems - trashing data, hogging resources, excessive locking, poor performance - are derived from that fundamental error, and all the fixes consist of beating a gradual retreat from it, a process rather like incrementally evolving a brick into a F1 race car. One has to ask, wouldn't it be better to start off without the brick? And rethinkdb is basically what MongoDB is, from a user's perspective, but it never had the brick.
EDIT: To be clear, I'm not necessarily knocking MongoDB—people who know more about it than I would do a better job of evaluating that. But realistically a swappable DB backend isn't that difficult, and if it is, they should seriously reconsider how they are using the database.
The back end is swappable. I think right now you can use Mongo or MySQL. If you want to use something else you have to write your own DDL. They hope that more people will do that in the future. Or presumably, they will do it themselves, once they think it's a priority.
Any clue when Meteor is going to finish their implementation of smartcollections? It seems kind of odd that you have it done for months and months but they still haven't managed it...
Yep, as Arunoda says I'm actively working on it right now, currently hoping for an initial release this month.
I really appreciate the work Arunoda has done on smart collections; my implementation and his package have both learned from each other. That said, there are a number of subtle race conditions involved in synchronizing queries between the oplog and the main database, and working out all the little details as carefully as possible has taken time!
36 comments
[ 44.4 ms ] story [ 55.3 ms ] thread(anyway, I really welcome the english errors you raised, but I've done a lot of articles with my bad english. I hope most of Meteor user's got something out from them. That's the the point I think we should consider)
Start Here: http://www.meteor.com/gallery
Here's a 'very beta' analytics tool I've been working on that uses Meteor and MongoDB:
http://www.quikdash.com
Feel free to sign up and play with it and if you can, please give me some feedback on how I could make it better! Thanks!
EDIT: To be clear, I'm not necessarily knocking MongoDB—people who know more about it than I would do a better job of evaluating that. But realistically a swappable DB backend isn't that difficult, and if it is, they should seriously reconsider how they are using the database.
I really appreciate the work Arunoda has done on smart collections; my implementation and his package have both learned from each other. That said, there are a number of subtle race conditions involved in synchronizing queries between the oplog and the main database, and working out all the little details as carefully as possible has taken time!