HN user

jiryu

84 karma

I'm A. Jesse Jiryu Davis a software developer for MongoDB Inc. specializing in C, Python, and Tornado.

[ my public key: https://keybase.io/emptysquare; my proof: https://keybase.io/emptysquare/sigs/jUfaNijti8giFkhkT6N01aZ4ffhvH6ac_4E95qu2iKY ]

Posts6
Comments8
View on HN

I gave the presentation in the linked article, here's a written version of the presentation: https://emptysqua.re/blog/paxos-vs-raft/

I hope that the "Paxos vs Raft" debate can die down, now that engineers are learning TLA+ and distributed systems more thoroughly. These days we can design new protocols and prove their correctness, instead of always relying on academics. For example, at MongoDB we considered adopting the reconfiguration protocol from Raft, but instead we designed our own and checked it with TLA+. See "Design and Verification of a Logless Dynamic Reconfiguration Protocol in MongoDB Replication" for details: https://arxiv.org/pdf/2102.11960.pdf

"Avoid instant messaging at all costs" is definitely good advice. I usually forget to take three breaths before answering there, but I usually remember before I answer an email. Plus, I have GMail's "undo send" feature enabled so I have a few more secrets to repent before my message cannot be untyped.

MongoDB, Inc. in New York City, Palo Alto, and worldwide. H1B welcome.

We make the open-source document database. Virtually all the software we make is open source. We solve very hard problems using C++, C, Java, Python, and a half-dozen other languages. I'm a Python programmer who's been working here for two years, it's the best gig I've had, and I've had many. Do you like coding, blogging, speaking at conferences, solving problems for customers, contributing to other people's open source projects? See the list of positions and apply here:

http://jobvite.com/m?3lb47gws

None, almost certainly -- if you have enough RAM to fit your working data set, then MongoDB's writes are just changing memory. If it does need to read data from disk before changing it, the new yielding architecture that others have mentioned will help prevent lock contention.

One of the reasons DB-level locking is actually quite important is that the replication oplog is on the 'local' database and your data is on other databases -- so your application is no longer fighting with replication for the write lock.