7 ms·
"MangoDB is a proxy which uses PostgreSQL as a backend. The proxy translates MongoDB wire protocol commands into SQL queries, and use PostgreSQL as storage." Y
by throwaway20371 5y ago
"MangoDB is a proxy which uses PostgreSQL as a backend. The proxy translates MongoDB wire protocol commands into SQL queries, and use PostgreSQL as storage."
You don't have to support MongoDB, but you can support apps that were only written with Mongo as backend? That's awesome. I can't imagine it's production-ready yet but it's a great idea.
- michaelpb 5y agoYeah, I could imagine this being a useful step to migrate away from MongoDB. I suspect there are plenty of "resume-driven development" MongoDB installations out there that could use something like this.
- threeseed 5y agoMongoDB is a 12 year old database. And yet people are still using this disparaging argument that anyone that chooses it is doing so for their resume and not because it meets their needs in any way. But by all means replace your production system with MangoDB which is unsupported, significantly slower, has no built-in HA/clustering and written in Go which is a GC language.
- michaelpb 5y agoHm, well, I never said that ANYONE who uses MongoDB is guilty of resume driven development. I specifically only indicated the ones that WERE chosen via resume driven development. Unless you were replying to the wrong comment?
- threeseed 5y agoNo I am replying to the right comment. I think it's disparaging to use the term resume driven development as though there is a large class of developers who are actively trying to harm projects by selecting inappropriate technologies. I've worked with thousands of developers over the last 20+ years and never seen anyone do this.
- marginalia_nu 5y agoAllow me to doubt that you have deep insight into the motivations of thousands of people that have all selected MongoDB for their projects. This seems unlikely for several reasons, if nothing else because of Dunbar's number.
- threeseed 5y agoI don’t need to have deep insights. Developers almost always have to justify why they pick certain technologies. And given how old MongoDB is not sure how it benefits anyone’s resume.
- marginalia_nu 5y agoIf you don't understand their motivations, how can you claim to know their motivations?
- rmdashrfstar 5y agoWelcome to HN, where nothing makes sense and sources don’t matter
- halostatue 5y agoThere are thousands of projects where MongoDB was selected precisely because it was a new-shiny No SQL thingy. For some of these things, it may have been the right thing. For most of them, it was a chance to play with new technologies. I have seen multiple commercial projects where MongoDB was chosen by the developers with _no_ oversight by management (I have killed a couple of those projects, too, because MongoDB was always the wrong technology). The original comment about the number of projects where MongoDB was chosen under résumé-driven-development is absolutely correct. That doesn’t make it _bad_; how _else_ is one supposed to get experience with new technologies than to try something new? (Sticking with Mongo after multiple data-loss incidents due to the “architecture” of Mongo, on the other hand…)
- michaelpb 5y ago
- zitterbewegung 5y agoI agree either stay with mongodb or if you really want to migrate then just switch to Postgres by obviously exporting the data and putting it into Postgres
- PeterZaitsev 5y agoNote MangoDB is a stateless proxy as such you can use it with any PostgreSQL setup. For example you should be able to use it with Amazon Aurora PostgreSQL as backend which has HA built in
- threeseed 5y agoIf you are using the cloud then you can just use DocumentDB.
- PeterZaitsev 5y agoIt depends. With MangoDB you can test on your laptop with PostgreSQL and deploy to Production to Aurora... or any other PostgreSQL compatible DBaaS.
- kevinsundar 5y agoBut then you have to use DocumentDB.
- kdasme 5y agoWhich is the same proxy on top of PostgreSQL if I remember correctly. :) But MangoDB is cloud-agnostic. I imagine it has the same limitations as DocumentDB or more.
- deleted 5y ago[deleted]
- pulse7 5y ago"and written in Go which is a GC language" => Would it be better for you if it would be "written in JavaScript which is a GC language"?
- dang 5y agoWould you please not post in the flamewar style to HN? You have a long history of doing this, and I have the impression that it got better in the last few years (yay! thanks), but I also have the impression that you've been relapsing recently (boo, please don't). You can make your substantive points respectfully and without snark, and we'd be very grateful if you'd stick to that. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- VWWHFSfQ 5y agoIt's crazy how this "flamewar" perspective has changed on HN about Mongo DB in the last 10 years. It used to be that any comment critical of MongoDB would get a warning. Now it's any comment supportive of it!
- dang 5y ago> It used to be that any comment critical of MongoDB would get a warning That can't possibly be true, or even close to true!
- vosper 5y ago> Yeah, I could imagine this being a useful step to migrate away from MongoDB. What is the state of the art in this area? I did a little PoC of moving data from Mongo to a new schema in Postgres with Hexo and DBT. It worked nicely, but it was only a PoC.
- michaelpb 5y agoOh, I don't know about the state of the art, I was just speculating. I'd imagine this technique would only useful if you want to support a MongoDB app at the same time as building new features with Postgres, and then gradually phase out the MongoDB interface (e.g. gradually transitioning between a v1 prototype and a v2 rewrite) If it's not much data (eg ~100k or something), and you don't need any sort of gradual transition, then I'd do something really KISS like dump into a CSV or something and then re-import with whatever the new database management system has for importing files
- taf2 5y agoDidn't the stripe team do something like this 5 or 10 years ago? I seem to remember them having a translation layer or doing some sort of streaming conversion from mongodb to pg? Ah yes - https://github.com/stripe-archive/mosql https://github.com/stripe-archive/mosql 6 years ago
- PeterZaitsev 5y agoDoes not look like the same thing - this looks like system to replicate from MongoDB rather than being able to talk to PostgreSQL as if it were MongoDB
- tyingq 5y agoYes, that seems correct "MoSQL imports the contents of your MongoDB database cluster into a PostgreSQL instance, using an oplog tailer to keep the SQL mirror live up-to-date. This lets you run production services against a MongoDB database, and then run offline analytics or reporting using the full power of SQL."
- christkv 5y agoThere was another thing in that space aswell https://www.torodb.com https://www.torodb.com
- kumarvvr 5y agoI have seen multiple benchmarks that show PostgreSQL has better performance than Mongo in almost all use cases. A simple wrapper in a language like Go or Rust is sufficient to surpass Mongo performance. Personally, I have shifted database operations behind a GRPC service that uses Go language and PostgreSQL back-end. Allows me to customize the data store to suit the requirement. PostgreSQL does not get enough love in this world.
- rustnote 5y agoIt's plenty loved, I'd say the most loved, but still a fair way behind Oracle in terms of popularity just because of legacy stuff. Damn legacy code, hecking JQuery was still the most used JS framework until just this year!
- keyle 5y agoTo be clear, Oracle's popularity isn't popularity in the sense of popular folk love. Unless you mean popularity in the most rancid disgust available en masse.
- kumarvvr 5y ago> but still a fair way behind Oracle in terms of popularity I have a vague feeling that those who use Oracle are using it due to circumstance or corporate necessity.
- strictfp 5y agoOracle is a hot mess but it also has some really powerful features, like table sharding , that actually works if you manage to set it up correctly.
- pydry 5y agoOne of the last straws for a job I had once was realizing that the oracle python client would convert money fields into float. Oracle had its tentacles everywhere in that company. I think even they wanted to stop using it but it was just integrated to too much.
- jerrysievert 5y agoI did something similar for fun 8-9 years ago as well: https://github.com/jerrysievert/mongolike https://github.com/jerrysievert/mongolike at the time it was much faster than native mongo.
- sitkack 5y agoThis also means you don't have to use PostgreSQL, you are using its wire protocol. So ideally, this could work with Cockroach, Yugabyte, Cloud Spanner, Crate DB, immudb and tens of others that I am missing.
- deleted 5y ago[deleted]
- inkyoto 5y ago> You don't have to support MongoDB, but you can support apps that were only written with Mongo as backend? That's awesome. I can't imagine it's production-ready yet but it's a great idea. You have just described AWS DocumentDB, which is a Mongo compatible frontend using Postgres as the backend (AWS coyly refer to it as Aurora, though); the wire protocol compatibility is at the version 4.0 level, with some extras thrown in. Change event streams also works like a charm. We have been using it for a couple of years and have found DocumentDB stable, performant with the AWS support being very good. Support for complex compound indices is still missing as well as support for complex query projections is somewhat missing, but we have decided to change ways of how we use use documents instead, so it has not become a major impediment for us. The main disadvantage, though, is cost, especially for smaller datasets where spinning up a separate DocumentDB cluster quickly turns into a money wasting excercise. Although, for our primary use cases, DocumentDB is still more than 3x cheaper than a comparable Atlas MongoDB PaaS.
- julianlam 5y agoExcept DocDB is not a drop-in replacement despite what Amazon says. People have tried and failed to get our software running on DocumentDB, whereas another developer got it running on CosmosDB with minimal changes upstream. Not affiliated with MS in any way, just sharing what I've witnessed secondhand.
- inkyoto 5y agoAmazon do not say that DocumentDB is a drop-in replacement, neither do I. Moreover, I have outlined specific incompatibilites between Mongo and DocumentDB we have encountered for our use cases; RBAC controlled document filtering is not available in DocumentDB, either. Therefore, it won't suit everybody. However, for simple to medium complexity projects, especially for brand new ones, DocumentDB is a viable and a more affordable alternative to Atlas MongoDB with a decent level compatibility.