The following is a short interview with Succinctly series author Zoran Maksimovic, whose latest book, MongoDB 3 Succinctly, was published on Monday, June 12. You can download the book here.
What should people know about MongoDB? Why is it important?
MongoDB is an open-source document database that provides high performance, high availability, and automatic scaling. This short sentence already contains a lot of information about the technology. That said, MongoDB is a widely known and widely used database and therefore it is quite natural for developers to be interested in the topic.
MongoDB is a NoSQL database, which is not a new concept, but is a whole new way of thinking about a database, especially as NoSQL is not a relational database. The easiest way to think of NoSQL is as a database that does not adhere to the traditional relational database management system (RDMS) structure.
MongoDB, for example, uses a document model, which can be thought of as a row in a RDBMS. Documents, a set of fields (key-value pairs), map nicely to programming language data types. The MongoDB database holds a collection, which is a set of documents. Embedded documents and arrays reduce the need for joins, which is key for high performance and speed.
MongoDB is not built on tables and does not employ SQL to manipulate data. It also may not provide full ACID (atomicity, consistency, isolation, durability) guarantees, but still has a scalable, distributed, and fault-tolerant architecture.
When did you first become interested in MongoDB?
In almost all the projects I worked on I had to deal with databases in one way or another. I am a big fan of relational databases. However, at one point I realized that relational databases are not always the best solution for all kind of projects, so I had to look for alternatives.
Big companies like Google, Facebook, and Amazon have contributed to the rise of NoSQL databases in general, as they had to fulfil specific needs of their own. By following the trends in the industry, it was pretty much impossible not to be aware and not to be dragged into this whole topic.
By writing this e-book, did you learn anything new yourself?
I love reading and through writing this I found out that I also enjoy editing and authoring books, too. Big thanks obviously go to Syncfusion, which kindly let me participate and contribute a few topics to the Succinctly series.
The Succinctly series of books play a very important role in the industry. Being able to find the most important information about a technology in a short book is extremely precious for the reader, and even more especially today where the speed of execution and time is very precious.
Anyone who has ever written a book knows that it's not an easy task to organize chapters in a way that is easy for the reader to follow. It might sound obvious, but to me this time it was quite a challenge to assemble a huge amount of information in about 100 pages.
This process of collecting the right information has made me aware of a number of subjects in the technology itself I was not so familiar with (e.g., capped collections, the ability to use a left join, etc.). While normally I would skip topics that are not relevant, now I had to go rigorously through those references, understand them fully, and then try to transmit the acquired knowledge to the reader.
Writing a book makes you learn quite a lot!
How will this subject change over the next few years?
MongoDB and NoSQL databases (in general) have gained momentum and are already standard for certain types of applications. This is especially true when it comes to the big data world and for projects that require an easy (and cheaper) way to scale out.
On the other hand, according to some research, four of the top five most popular databases are relational and the only NoSQL database included in this list is MongoDB, which recently overtook PostgreSQL's fourth place slot.
I believe that in the (near) future, the two worlds are going to come closer feature-wise and form some sort of hybrid database. Relational databases need to be able to deal with new types (e.g., JSON) and sources of data. I also believe that distributed traditional databases will become more popular.
The basic features of MongoDB are not going to change radically, as the fundamental concepts are not going to change so easily. MongoDB has already created an architecture for pluggable storage engines that allow all kinds of customizations.
That said, someone is perhaps already working on building more SQL-compliant features, like full support for transactions spanning multiple documents, or similar, or even some sort of a tabular format of data. Why not?
One thing is quite certain: in the future, we are going to hear quite a lot about MongoDB and all the NoSQL databases.
Do you see MongoDB as part of a larger trend in software development?
In the last decade, the speed at which the technology has advanced is impressive. Among others, I would like to mention few trends I believe are the most prominent, and MongoDB has touching points with all of them:
- Open-source software development: MongoDB is an open-source database! For decades, open-source software has made it possible for developers to progress and innovate. Being open source and being an active part of the open-source community is a necessary way to keep up with technology and be a part of a larger community. For sure, MongoDB has contributed substantially in these terms.
- Cloud Computing: Software as a service, Infrastructure as a Service, Platform as a service, serverless architecture, distributed systems, containers, and microservices are pretty much the world we are living in. MongoDB is available and running on Microsoft Azure, Amazon and Google clouds, and on their own MongoDB Atlas (database as a service system).
- Big Data: MongoDB can certainly host a very large amount of data. Some examples that can be found on Internet mention deployments on over 1000+ servers and handling billions of objects. MongoDB also has connectors to Hadoop and it has enhanced its BI and analytics capabilities.
- Agility: The promise of MongoDB and other NoSQL databases is to allow faster development at a lower cost than the older generation of relational databases. Employing MongoDB is also becoming more common as developers find they can get a prototype into testing and production faster and at virtually no cost. Optimally, the result is a shorter time to market at a lower cost–an obvious choice for any enterprise looking to thrive in the marketplace.
What other books or resources on MongoDB do you recommend?
The amount of information to be found on the Internet about MongoDB is impressive. The community is quite active, so your favorite search engine is your friend in most cases.
The MongoDB website itself has amazing documentation and I would personally bookmark this website. With each version, the documentation is updated, and it is nicely assembled and easy to navigate.
MongoDB has also created a so-called MongoDB University where one can find official courses.
Certainly, there are many books about MongoDB and it depends on which aspect one is interested in as to which resource is best: database administration, development, scaling, etc. I am sure the readers will be able to find the best book for them, as just in 2016there were around 280 MongoDB publications.