When developers get started with MongoDB, they are delighted to discover that it supports the programming languages they love. For as long as the database has been around, we’ve offered at least eight official drivers that help to make developers productive quickly. Moving in lockstep with the server to support all major changes, these drivers ensure that you’re always able to take advantage of the latest features in the database.
Over the years, each driver engineering team has designed its own approach to querying the database, providing fault tolerance, exposing database options, offering an asynchronous interface, and implementing dozens of other features. Each driver has also accumulated its fair share of technical debt, having been initially designed for a much simpler version of MongoDB.
Meanwhile, as MongoDB has proliferated and matured, the number of organizations that use more than one driver has increased. Although each driver strives to be idiomatic in the language it supports, there is little reason why the core CRUD API needs to vary across drivers, and after several years, there was some divergence.
We needed a fresh start, driven by more formal specifications and informed by all the learning we have collectively done since MongoDB was first introduced in 2009. We are excited to announce that in the next few weeks we will be rolling out new drivers for all languages that build on everything we've learned. Stay tuned for major releases from the Java, .NET, Python, Node.js, and Ruby teams. PHP and Perl will follow soon after. An updated C++ driver is also in development.
These new MongoDB drivers conform to published specifications.
- Server Selection - Deciding which server to send database operations to in a MongoDB deployment.
- Server Discovery and Monitoring - All the logic required to make a MongoDB application highly available.
- CRUD API - The API for how we Create, Read, Update and Delete data from MongoDB.
- Authentication - The rules for how to authenticate to MongoDB servers.
Let us know what you think!
As you are the developers using these drivers every day to access MongoDB, we both value and rely heavily on your input. You directly inform many of the choices made in the specifications. Please continue to give us feedback so we can make the best possible interface for you.
If you’d like to report an issue in a specific driver, please do so in the individual driver project in JIRA (e.g. <a href="https://jira.mongodb.org/browse/JAVA" target="_blank"JAVA, PYTHON). See a full list of our JIRA projects here.
If you’d like to make a feature request or report an issue common to all drivers, please do so in the DRIVERS project.
We look forward to your feedback on this latest release.
To learn more about what's new in MongoDB 3.0, download the white paper below.
About the Author - Andrew
Andrew Erlichson manages the engineering teams that create the developer experience around MongoDB, including MongoDB drivers, Documentation and Education. Prior to MongoDB, Andrew was CEO and founder of Phanfare, an online photo hosting company, now part of Carbonite. Prior to Carbonite, he was founder and CEO of Flashbase, a web service that offered self-service online database forms and analysis tools. Flashbase was acquired by DoubleClick. At DoubleClick, Andrew was Vice President of Technology for the Research and Development group. He has worked at Mips Computer Systems, Silicon Graphics and BlackRock. Andrew received his A.B. from Dartmouth College and his M.S. and Ph.D. in Electrical Engineering from Stanford University.
Watson, Eat Your Heart Out: Here Comes x.ai
In 2011, when IBM’s Watson beat Ken Jennings and Brad Rutter at Jeopardy, the geek in me was giddy. Here was years of research on artificial intelligence and machine learning put into practice on live television, for all to see. And it won. The feat was impressive, but I wasn’t holding my breath for a Watson of my own anytime soon. With 100 IBM Power 750 servers (and a massive cooling system to match), Watson was so big and beastly that it couldn’t stand alongside its human competitors. Watson is powerful and may be potentially useful to many individuals and organizations in the future. But for now, I have other, more mundane problems. Like sifting through email, finding a rental car, and managing my calendar. It’s my understanding that Watson can’t do that yet, or at least isn’t available for such lowly tasks. A Personal Assistant for the Rest of Us Enter x.ai , an NYC-based startup that has created an AI-powered personal assistant that schedules meetings for you. Here’s how the product works. You connect your calendar to x.ai. When you begin the usual song and dance over email to schedule a meeting, rather than look at your calendar for a time, you delegate to Amy (or twin Andrew) Ingram by cc’ing email@example.com (or firstname.lastname@example.org). Once you copy her in, she takes over the thread, finds a mutually agreeable time and place, and sets up the meeting for you. I recently sat down with one of the x.ai founders, Alex Poon, to discuss what they’re up to and how they’re building the product. How x.ai Works I arrived early for our meeting at x.ai’s Wall Street office, and spotted Alex playing Ping Pong with a coworker. I waited for him to finish the game (I believe he won), and we sat down in the nearby lounge. Clad in a casual, startup-chic hoodie, Alex begins to tell me about the technology that makes up the platform and the way information flows through it. “We first ingest the email, and very quickly break it apart into the pieces we want,” explains Alex, “then we store that information in MongoDB immediately.” x.ai runs entirely on MongoDB and AWS. Natural language processing is a major component of x.ai’s stack. The information passes through a number of natural language processing modules built in Scala to extract the information it needs – names, dates, times, locations and so on. To facilitate this workflow, x.ai uses Amazon’s Simple Queue Service (SQS). Ultimately, the information enters what Alex and his team internally call Idris – the brain of x.ai, a supervised learning engine that can understand the context of the meeting and relevant emails. (Idris is a name borrowed from Doctor Who: “a humanoid woman who was used as a host for the matrix, or consciousness, of the Doctor's TARDIS.”) Idris maintains the context of each meeting. It knows what was written throughout the conversation, and it tracks the progress of scheduling the event. Based on the progress, it drives the conversation toward obtaining all the necessary information to confirm the event. Idris can enrich the metadata of the meeting and the participants to ensure that x.ai schedules a meeting according to the appropriate parameters, like a participant's calendar availability and meeting preferences. The data is once again stored in MongoDB before it is shipped off to the next module. Once x.ai knows what times to suggest for the meeting, it passes the object along to a module that figures out what to write back. Using a set of dynamic email responses stored in MongoDB, Amy crafts the follow-up. And that’s the basic lifecycle of a meeting in x.ai. x.ai uses Mongoose and Node.js for the front end. (This front end is for its team of developers only, as there is no front end visible to the end user.) It has also built an app to monitor Idris, which allows the engineering team to see all scheduling in flight. x.ai has a data set for training Idris offline, as well as a production model upon which Idris relies to schedule meetings in real-time. Both of these are stored in MongoDB. Alex mentioned that the team is interested in exploring some of MongoDB’s text and geospatial analytics capabilities, but it hasn’t yet begun to use those for its production system. x.ai uses replica sets for HA, and to ensure the data is always there in case of data corruption or an outage at AWS, it relies on backups from MongoDB Management Service (MMS) . x.ai <--> MongoDB I asked Alex to tell me a bit about why he chose MongoDB for x.ai. Sitting back at a small table in the lounge, he said rather casually, “It’s just so easy to explore your model – your business model, your data model.” In fact, this is the second company that Alex and his cofounder have built that runs entirely on MongoDB. (The other company, Visual Revenue, is a real-time predictive analytics platform that helps editors make better decisions about content creation and placement. It has since been acquired by Outbrain.) x.ai’s product is sufficiently far along that Alex says his team now only makes significant changes to the data model once every couple months. What about at the beginning, I asked. “Oh, well at the beginning it was more like weekly. I mean, all you have to do is add a field, and boom you’re done. We were iterating a lot then.” I was curious how often x.ai ships releases. Many of the customers I talk to at Fortune 500 companies are looking to move from 12-18 month cycles to shorter cycles in the realm of 6 months. “Ummm, we don’t really do releases. We’re on weekly sprints...continuous integration,” remarks Alex, as though he couldn’t tolerate anything more slow. To him, it’s a given that they’ll iterate every week. I love it. (By the way, Alex is hiring data scientists, data engineers, web application engineers and backend engineers.) My final question to Alex as we wrapped up: “So, I’d love to try x.ai...how long is your waiting list?” He glanced away for a moment as he stretched, and then he smiled. “Very, very long.” Want to learn more about how x.ai's data science modules interacts with MongoDB? Watch their presentation at MongoDB World 2015. x.ai MongoDB World 2015 presentation About the Author - Graham Graham is on the Product Marketing team at MongoDB. He works closely with customers, partners and the open-source community to articulate why MongoDB is becoming the world's most popular database. Prior to joining MongoDB, Graham was a Senior Business Analyst at CSMG, a boutique management consulting firm specializing in the high tech and telecom industries.
Take Advantage of Low-Latency Innovation with MongoDB Atlas, Realm, and AWS Wavelength