mongoDB, NoSQL You hear a lot these days, but is it still an unfamiliar database? Aren't you using it like a relational database (RDS/SQL)? No matter how good the technology is, if it's not used correctly, it will have the opposite effect. That's why we often see cases of failure in using MongoDB. This lecture will teach you everything from basic concepts to practical know-how so that you can use MongoDB as MongoDB-like as possible.
Backend development that properly utilizes mongoDB
Developing REST API with Node.js and Express
Asynchronous programming
Maximizing Read Performance Using Index and Nesting
ACID Transaction
Deploying Node.js Server on AWS Lightsail
mongoDB Atlas Cloud Managed Service
MongoDB, the most beloved NoSQL-based database! I'll show you how to use MongoDB properly. 😎
Topic Introduction 📝
MongoDB's name comes from the word "humongous," meaning "huge." It's a NoSQL-based database launched in 2009, following the internet boom that ushered in the rise of big data keywords. Databases are a core foundation for service development. Unlike MongoDB, the more familiar relational databases (MySQL, PostgreSQL) are already over 20 years old. It's fascinating that in a programming ecosystem where new programming languages and technologies are constantly emerging, there's such a small field of change. Databases are such an important and conservative technology. Any changes to the database can impact not only the backend but also the frontend built on top of it. Consequently, many questions arise about MongoDB, a somewhat unfamiliar technology, and we often see examples of failed implementations:
Should MongoDB be used depending on the situation?
Isn't e-commerce necessarily RDS?
It's good for quick and simple development in the beginning, but is a relational database better later on?
A database that doesn't even support JOIN?
I believe these issues stem from the fact that it's a relatively new technology and the know-how isn't fully known. MongoDB can be used for general purposes, much like relational databases, and e-commerce development can certainly be done with MongoDB (I'm an experienced user). And when used properly, it's far more efficient than relational databases when dealing with large traffic volumes.
What causes these application failures in the first place? It's a lack of understanding of MongoDB's philosophy. Simply learning how to use it isn't enough. And above all, you shouldn't approach it like a relational database. MongoDB's problem-solving approach is fundamentally different in many ways. If you understand these characteristics and use it in a MongoDB-like manner, MongoDB offers a wealth of advantages.
Why you should learn ✒️
Databases can easily become traffic bottlenecks, but MongoDB can fundamentally solve this scalability problem.
You can truly learn MongoDB while also learning backend development. Backend development and databases are one and the same!
Most data communicated in web development is in JSON format. MongoDB stores data in JSON (BSON). This virtually eliminates the need for backend data conversion or ORM, lowering the barrier to entry.
It's a general-purpose database. Due to the nature of NoSQL databases, ACID transactions are often not supported. MongoDB, however, has supported ACID transactions since version 4.0, while maintaining the horizontal scalability of NoSQL.
We'll cover asynchronous programming early in the course. It's an essential concept for the backend to communicate efficiently with the database.
What you will learn in this course ✏️
MongoDB Basic Usage - CRUD
mongoDB Atlas - Deploying a Managed Cloud Database
Maximizing Backend Efficiency with Asynchronous Programming
Creating a REST API with the Express Framework
How to read related data efficiently (populate)
Maximize reading performance by appropriately embedding child documents in parent documents.
Maximize search performance by applying indexes
Maintain consistent data management using transactions (Multi-Document Transactions).
Deploying a Backend Server on AWS Lightsail
Comparing relational databases to MongoDB
Below are some of the materials used in the lecture :)
Q. Is this course for Node.js (Javascript) developers? A. This course is about MongoDB. Node.js is a tool to demonstrate the overall flow of how backend developers can effectively utilize MongoDB. Therefore, even if you're developing backends in another language, you can still take this course. The Node.js-related sections cover fundamental, commonly used concepts (REST API, asynchronous programming). With a solid understanding of these concepts, you'll be able to use MongoDB effectively in any development environment. :)
Q. Is there a reason why we are handling the backend (Node.js) together? A. This course teaches backend developers how to properly design and use a MongoDB database. Therefore, we cover basic backend development early in the course to ensure proper database utilization. Also, this course is not a DevOps course. We won't teach you how to install a database, build replica sets, or manage sharding. Instead, you'll use MongoDB Atlas, a managed cloud service that automates these DevOps tasks.
Q. Do you also learn MongoDB Aggregates?
A. This lecture focused on how to effectively utilize MongoDB in a MongoDB-like way for "typical" backend development. Using Aggregates in frequently-used, general APIs can overload the database, so I don't recommend it. Simply put, frequent use of Aggregates means you're using MongoDB like a relational database, rather than using it in a MongoDB-like way. Therefore, this lecture doesn't cover Aggregates. I'll show you how to properly utilize MongoDB without Aggregates! This doesn't mean Aggregates are bad; they simply have a specific use case. They're a powerful tool in data engineering, such as generating statistics or processing large amounts of data. Compared to general APIs, these data engineering processes are much less frequently called and can tolerate long response times. For example, if you want to extract quarterly sales data, you could run an aggregate batch once a quarter, store the results, and then retrieve them quickly. I plan to produce a MongoDB-based data engineer lecture in the future. At this time, we will cover MongoDB Aggregate, as well as big data management with MongoDB Data Lake and data visualization with MongoDB Charts!
Q. Please tell us what prompted you to start this course. A. I'm not a major in this field. I learned by analyzing and applying fragmented information online. Repeating this process allowed concepts to become abstracted and organized. "Abstraction" here is a crucial concept. During development, you might only implement simple functions to make a service work. However, developers who excel at "abstraction" can create services that "work" and "scalable." Another way to put it is that they're developers who have a strong understanding of "Why." However, the more recent a technology is, the less understanding of "Why" it often becomes due to previous community development. So, I created a course on MongoDB, a relatively unfamiliar database. Please understand "Why" and create many great services!
Recommended for these people
Who is this course right for?
For those who want to use MongoDB properly
For those who want to get started with backend development
Anyone who wants to build a highly scalable backend and database
I highly recommend this to developers who are developing apps with nodejs+mongodb. It teaches even the complicated parts well with easy-to-understand explanations. There are two shortcomings. One is that there are parts where mistakes are made here and there and it takes a lot of time to find them, so it would be better if those parts were edited. Second, the practice screen is too small to follow. I wish they had zoomed in a bit more and taken a picture of the practice screen. The content itself is VERY GOOD. Thank you.
I was studying to switch from 5 years of Java development to NodeMongoDB, and this was very helpful. I studied through many lectures, but this was the best. I hope to see more great lectures in the future.
The lecture is really good. However, one thing that is disappointing is that the screen size is too small, so it is very difficult to see the code. If the screen size were a little bigger, it would have been a much better lecture. I would appreciate it if you could make the next lecture bigger to fit the students.
Hello, Shinron :)
I'm sorry for the inconvenience due to the screen size. It's my first lecture, so there are many things I'm lacking.
I'll make sure to adjust the screen size and record it when I improve the next lecture and the Mongo lecture!