5 ms·
I would love to see a use case from a large deployment. MongoDB is trivial at small scale and it is only when you get to large deployments that it really needs
by dkhenry 13y ago
I would love to see a use case from a large deployment. MongoDB is trivial at small scale and it is only when you get to large deployments that it really needs some TLC. If they can somehow make large deployments simple it might make mongo a viable contender again for Humongous data ( If you have a data schema that would play nicely with it )
- AdrianRossouw 13y agoi would love to see a solid technical reason to choose mongodb over any of the other NoSQL db's (couchdb, riak, redis, etc..) other than "it's popular". No, I'm not trolling. I really want to know : https://news.ycombinator.com/item?id=7446919 https://news.ycombinator.com/item?id=7446919
- mikegioia 13y agoIt allows you to query json documents in a way similar to sql. redis is key/val and sits in ram, couch requires complicated design documents to query and is better as a key/val, but I'm unfamiliar with riak. I think trello uses mongo primarily for production. technically it's feasible but I've found it to be more trouble than it's worth to scale -- too many machines are required per shard. I'm currently looking into rethink db as a replacement now though.
- AdrianRossouw 13y agoI use elasticsearch to index my couch database and query it using the rest based json query language. i find it helps being able to scale them out separately too. http://daemon.co.za/2012/05/replacing-couchdb-views-with-elasticsearch/ http://daemon.co.za/2012/05/replacing-couchdb-views-with-ela...
- h1karu 13y agoThere's no need to go through all of that trouble.. Why not just use Cloudant until the BigCouch merge hits ? :)
- AdrianRossouw 13y agoTrouble? It's a single REST request to get a couch database continued indexed in elasticsearch in almost 'real-time'. It just subscribes to the _changes feed and updates the index, in the same way couch replication works.
- h1karu 13y agoI spoke too soon, seems pretty bad ass in that case. gotta love _changes
- AdrianRossouw 13y agoyeah, it's totally overpowered. =)
- brickcap 13y agoHey Adrian I have got a question. Why did you chose elastic search for indexing couchdb data. Why not couchdb-lucene? Couchdb-lucene seems more tightly integrated with couchdb to to me.
- AdrianRossouw 13y agoI think it wasn't 'ready' at that point in time, and the json based query language was closer to what we needed. The real problem was that the data was being imported in bulk by the user, from a many-meg-sized csv . It would grind couchdb to a halt trying to build views, so having elasticsearch be a separate process that could work through it made a lot of sense.
- brickcap 13y agoThanks for answering. I have used elastic search before and I was very impressed by it. Now I am trying to evaluate couchdb-lucene to see if it can prove to be a good alternative.
- timfpark 13y agoi think a lot of the reasons I've seen come down to business reasons, not technical. Someone wants an app fast, like now, and MongoDB is fast to setup and get running with.
- AdrianRossouw 13y agoI guess I'll be able to confirm once I'm forced to build something in it, but I don't think it can really be faster to setup and get running with than CouchDB. Usually first thing you need to do is write a REST layer on top of it, and with CouchDB that part is just done already. Obviously there's certain kinds of data I wouldn't put in Couch, or any kind of NoSQL database. You need to know what the right tool for the job is,but I just want to figure out when that tool is mongo.
- h1karu 13y agoWhy would that tool ever be mongo ? I think Mongo is a thing because people coming from Rails ORM libraries feel like "wow I can jump on the no-sql bandwagon just by using a library that feels kind of like the ActiveRecord I'm used to". It's only popular because there's less of a conceptual gap between mongo and the relational database tools that a lot of people are used to. Couchdb on the other hand requires you to actually learn and use map/reduce.. which is a pain for people who don't feel like having to learn something new, but Couchdb is MUCH MUCH better in a lot of ways and Mongo is pretty much fundamentally flawed in my opinion I do wish rackspace luck though with their offering. I think it was smart of them to create this mongodb product for one simple reason: a good number of people are already using mongodb so it makes sense to help them get the most out of it.
- timfpark 13y agoi didn't mean to say that MongoDB was the only database with that property. Yes, CouchDB does as well.
- nevi-me 13y agoGeolocation, specifically GeoJSON. That's the main reason why I chose it (I started working on my app while it was at 2.0). When 2.4 came out with better geospatial indices (albeit basic compared to PostgreSQL+PostGIS) and GeoJSON support, I moved to using GeoJSON, and I am happy so far. The website/app is at https://rwt.to https://rwt.to , and an example route search is; from "Milky Way, Johannesburg" to "O.R. Tambo International Airport". I should note that I've had a look at geocouch and it didn't fit my use case, I'm not doing trivial 'find my 3 places near [y,x]' queries, but am traversing a pseudo-network of routes to calculate directions. Neo4j also wouldn't have worked in my case. TokuMX is based on MongoDB 2.2 as far as I'm aware, so them too.
- AdrianRossouw 13y agoThat's a very good reason, and the first real one I have heard, thanks man. Also, I used to work for MapBox, and I know we did one project on mongo which I was not involved in, and afterwards we built everything with CouchDB (which is how I got acquainted with it). For the geo stuff we actually used a lot of sqlite and to a lesser extent spatialite. We would pre-calculate things and build them into the rendered tiles in mbtiles format, or stream the point/polygon data from the couch database for realtime client-side compositing. But yeah, routing is pretty high level stuff. I think they are only now putting the finishing touches on their openstreetmap driven routing system many years later. [1] http://mapbox.com http://mapbox.com
- nemothekid 13y agoI would consider "Its easy to get started with" a valid technical reason. Of all the "We moved from MongoDB to Cassandra/Riak/etc and gained massively!" I've rarely seen - and its possible that this is selection bias - companies start with the other NoSQL options. I want to say, that unlike MongoDB - the others actually force you to think about your data and actively decide how you are going to store it. With MongoDB you can pretty much add an index on anything, but with Cassandra (maybe Riak/Dynamo too) you only get one free index before you have to denormalize and write application code to keep your performance. Then lastly, MongoDB is good enough for most use cases. We didn't see major performance issues until we started constantly writing data to it (high write/low read) (basically we were wrestling with lock contention). I'd wager for a significant amount of MongoDB deployments, not only is Mongo easy to use, but fast enough too. So while the other NoSQLs are (probably) more complicated and likely more performant, MongoDB, to me, hits a sweet spot of ease of use and performance that is good enough for most applications out there. However, considering other "raw" technical aspects like performance, durability and scaling I've never seen anything that has shown MongoDB to be a leader.
- AdrianRossouw 13y agoWell, it's the opposite perception here. "I've rarely seen - and its possible that this is selection bias - companies start with the other NoSQL options." It seems like everyone starts with Mongo, because everyone starts with Mongo. This means that you don't have the deluge of posts from people moving from other databases, a) there are much fewer of them b) they chose them for solid technical reasons (not just because everyone does this) So as for your perception that other NOSQL databases are "probably" more complicated, you should know that complexity is an objective measure. I think that mongo is definitely a lot more objectively complex than couchdb, and from what I have read around the subject, many of the other NoSQL databases. What Mongo could well be is 'easier', which is relative. It seems like it's more familiar to certain programmers, which is kind of echoed by the fact that there's an incredibly popular object relational mapper (mongoose), that is being used with what is supposedly a non-relational database. I use those terms in a very specific sense btw, which I documented here - http://daemon.co.za/2014/03/simple-and-easy-vocabulary-to-describe-software-complexity http://daemon.co.za/2014/03/simple-and-easy-vocabulary-to-de... It's from a very insightful presentation by the creator of the Clojure language, and I only wrote a summary because I got sick of trying to get people to watch an hour-long video before trying to discuss systems on this level.
- victorhooi 13y agoI'm sorry, but this seems a bit of a lazy question. There are many large-scale deployments of MongoDB - a simple Google search will yield you results. Off the top of my head - FourSquare, Stripe, ServerDensity, eBay (non-site) etc. MongoDB (the company) also uses it for MMS - their cloud-based monitoring system, which probably handles hundreds of thousands of metrics every second from tens of thousands of hosts. So yes, there is a lot of FUD about "it doesn't scale" etc. Most of the FUD seems to originate from people not reading the manual, and completely misconfiguring things, and wondering why it doesn't work. To be fair, most competing products (Riak, Couch etc.) will scale enough for most people. So this is sort of a red herring. (And by the point that you are as big as FourSquare, the assumption is you'll probably hire engineers who will read the manual =) ). So the decision boils down to other things - how easy is the query language, do you need GeoJSON support, do you need aggregations, how mature is the overall ecosystem etc. And that's why people are picking MongoDB - not really the WOAH, LOOK AT THE OPS PER SECOND!.
- camus2 13y ago> Most of the FUD seems to originate from people not reading the manual, and completely misconfiguring things, and wondering why it doesn't work. Most of the FUD comes from the deceptive marketing 10gen used to promote MongoDB. It now has a well deserved bad reputation that will never go away,no matter how much startup choosed it.
- victorhooi 13y agoWhat deceptive marketing exactly? Could you cite an example please? For example, there was noise before about how MongoDB was allegedly tweaking benchmarks. The funny thing was, from what I've read, they've always had a policy of never ever publishing official benchmarks. Their line was, read the manual, and try it with your own data. Are you aware of any "deceptive marketing"?
- camus2 13y agoAre you aware of any FUD ? then ask yourself where it comes from. MongoDB is a bad database,If you care about your datas you shouldnt use it.
- nasalgoat 13y agoI managed one of the largest MongoDB installations and I can safely say running it at scale is extremely difficult. They've made a few changes, like not hardcoding the maximum number of connections and shards anymore, which helps but overall the big problems like database-level locking are serious problems even a year later. The reasons for choosing it were very simple - the lead developer was familiar with JSON and liked using it for queries, and he liked the "schema-less" nature of document storage. No consideration was given to performance or scaling issues, it was purely a comfort level decision.
- dkhenry 13y agoRight and rackspace is claiming they are taking care of all that for me. Or are they just spinning up hosts and I still need to configure everything