00:01 Hello and welcome to MongoDB for Python developers.
00:04 Throughout this course, we're going to learn
00:07 how to connect, model for and build applications with MongoDB,
00:11 and we're going to do this with Python.
00:14 We're going to look at the straightforward, lowest level way of doing things
00:17 with PyMongo, and we're going to look at mapping classes
00:20 through what's called an ODM, think orm for Mongo;
00:24 an ODM to Mongo DB with Mongo Engine.
00:28 And these come together to make a great combination.
00:31 So let's begin by talking about document databases, how do they work?
00:35 Well document databases in some ways
00:38 are very much like standard relational databases,
00:40 they have what you would think of as columns in that relational world,
00:44 title, course id and duration in seconds here for example,
00:48 but it also has nested data, so in a relational database
00:51 we might have a lectures table that has
00:54 some kind of foreign key constraint back to a chapter
00:56 in this example we have on the screen here,
00:59 but in fact in a relational database, we can embed those lectures
01:02 inside of the chapter object, why is this good?
01:06 Well, often, we spend so much time and energy
01:09 building up an object hierarchy in our application
01:12 and then tearing that apart into a bunch of little pieces
01:15 what's called third normal form, basically normalizing our data
01:18 in a relational database and then building a backup, taking it back apart
01:22 and this object relational impedance mismatch
01:25 makes it hard for us to reason about our code,
01:28 it makes it a little bit less intuitive and so on.
01:31 So with document databases, we can model our data
01:34 the same way our application wants to use that data.
01:37 We also have more flexibility in the schema,
01:39 which means that deploying a new version of our application
01:43 often does not require some kind of migration script and downtime,
01:47 no, we just deploy the new version and the document database adapts to it.
01:51 So document databases in my opinion are the best way to build applications,
01:55 for the 80 percent case right, maybe you have some edge case
01:58 where that doesn't make a lot of sense
02:01 but most apps really benefit from using document databases.