What’s the easiest way to manage streams from mongo into snowflake using Kafka. The data structure changes and the update replace does not include data elements of the prior record. We require only the most recent update to the record no history
Joe you’re a great instructor. Starting with the context/use case and then referencing the parts is so appreciated. Your channel is wildly underrated. Also love the humor references.
Summary: With MongoDB you have to consider your access patterns not only for indexing but also for schema design. There are three options for child documents: 1. Embedding 2. Array of references in the parent 3. References in the children (foreign key)
I didn´t wanted to watch a 1 hour video, I think is the first time I do something like this, and wow. I learned more in one hour than in 2 days readding weird written tutorials, guides and short videos. Thank you very much.
I'm sorry, but this sounded like a sales pitch :) Understandable since you work for MongoDB. MongoDB has a predecessor, namely XML databases. MongoDB has a lot in common with XML databases. I used to work a lot with XML databases and my experience is that document databases are a * bad * fit for business domain models. You talked about cons and you didn't mention the most important con: update anomalies. But wait a minute. You mentioned this problem and came up with a beautiful solution: a reference. And even better, there is something like unbounded references. I would say, keep evolving and you end up with an SQL database :). In my experience, document databases are great when you store documents as is. For example when you have a message warehouse, or for logging/auditing. XML databases are also used by publishers to store books (DocBook and DITA for example), newspapers etcetera. But using a document database for your business model. That's a bad idea to my opinion. I have the experience to use a very performant XML database as the enterprise database for a company and it had very nasty legal consequences. It was just not the right fit . A relational model is far better. It is also much better to have a schema for you business domain model. I would get very nervous if a developer would store its documents without a schema. No rules, really? Is that a positive thing for your vital business data? Good luck!
When it says no rules. It means you define the rules that fit your business rather than let the rules define your business. you can enforce rules at the db level
Two way referencing is just a PURE GOLD!!! Now it seems obvious, but I was trying to solve similiar problem without that 2WR knowladge 🙈, and made no progress for few hours, THANKS MAN!
This was really good. One thing that made me laugh is in the begining you stressed that there are no rules and then later you have "Rule 1: favour embedding" haha I just thought that was funny. Thanks for the presentation, it was helpful!
Excellent presentation, it served super well as a foundation for the design discussions about our NoSQL schema. Although we went to with CouchDB all that you said felt relevant. Instant like!
Really enjoyed your video. Was kinda funny when you said MongoDB has no Rules but then we have a section with Rules. hehe. Altough they are very helpful to keep in mind. Thanks for the great content!
Thank you so much for posting this presentation. I appreciate the multiple recaps throughout the lecture, helped me a lot. And I appreciate the many resources.
Professional SQL developer here Actually the first part of your video is a little misleading, we do design sql databases with the queries in mind and We denormalize when necessary.
Thanks for a good video. Coming from many years with SQL I can clearly see some benefits with NoSQL. The main selling point for me is the loose data structure of the individual documents as well as query speed when everything you need is embedded in a single document. This is where NoSQL really shines over SQL Maybe I'm wrong, but I get the feeling that in most cases we still need traditional SQL-like relationship references between decoupled documents and quickly we end up with something that looks an awful lot like good old SQL.
I hate your vocal fry so much my god I hope this video is worth it EDIT: My opinion has not changed - your vocal fry is indeed terrible, but the video is extremely good, it's informative, concise, well presented and paced. I will be recommending it to everyone starting with mongo db. Also you seem like a really likeable guy :D
@@JoeKarlsson I know my message is confusing because I had such mixed feelings about this video, but everyone on my team loves it :D Apparently my ears are super sensitive to fry frequencies and nobody else minds it.
@@someoneelse5005 Your review was hilarious - It's a actually a glowing review. I'm considering printing it out and framing it! I'm so glad y'all enjoyed it. I'll be making more soon!
Fantastic Joe. Great Learning. When you talk about embedding example regarding product and parts, you favor parts. But you keep referencing to the size limit of the document. Yes its a problem, But more than that there is a bigger problem of consistency. If you embed a part and If you update the part from a screen, you have inconsistency. When you show the product you will show the old values. I am curious as to why you are not mentioning about inconsistency? I am a newbie in nosql. heavily influence by relational theory. Eager to know your thoughts
Super thanks. Something not spoken about a lot. Modifying schemas structure in production. How can I drop a schema property that I don't need any more? Say username was unique on the user and we don't need that anymore in production. How can I go about that?
@@JoeKarlsson thanks for the response. Lost a little. To elaborate e.g. Schema({username: {required: true, unique: true}, firstName:...}) and now we don't need the username anymore. Any operations such as create collection documents without username would error.
I love you man, not many people talking about mongo, with proper knowledge of it. Good on you. An interesting question maybe, client wanted an architecture where each A collection item has many B collection items attached to it by reference, BUT querying A collection requires searching based on B collection items' properties, it was super slow, whenever I queried (50m+ documents), a collection based on properties of a different collection (so match, lookup, and the match on the lookuped documents), the query was super slow. The weird part is lookup was relatively fast even, but than the match on the lookedup documents' properties was weirdly very, very slow, any ideas why that happen? It's weird as I imagine once lookup is done, each document gets that embedded and then goes into the next stage (match) in this case, so why was match so slow, as it was supposed to match based on the already available properties embedded in the document in that stage with data in the stage (or maybe I don't understand, and it doesn't really work like that what I explained), it didn't have to use an index or do a collection scan, literally just filter documents in the stage, that's the only mind boggling thing in mongo that i don't get, everything else I love
I wonder if many users jump to NoSQL because they don't have to formally "design" a schema. Just insert a record (they call it "row" nowadays) and any missing fields (they call it a column nowadays) are created. Now, you've got records with different fields in the same table. However, MongoDB is a great NoSQL database. I use it for metric and performance data collection and statistics. MongoDB can perform write operations very quickly. The data is automatically expired after use. MongoDB is stable as well. Running 4 years+ 24x7, zero downtime.
I'm new at using MongoDB and this video has solved many doubts I had about how to design the ideal schema for my project. Thank you very much!
This is the best thing I have ever heard - thank you!
@@JoeKarlsson have a mongodb/admin job coming up
@@DIZZLEBOI44 Nice!
What’s the easiest way to manage streams from mongo into snowflake using Kafka. The data structure changes and the update replace does not include data elements of the prior record. We require only the most recent update to the record no history
Rule No.1 is my favorite.
=> Favor embedding unless there is a compelling reason not to.
Joe you’re a great instructor. Starting with the context/use case and then referencing the parts is so appreciated. Your channel is wildly underrated. Also love the humor references.
Thank you so much. I really appreciate that.
Summary:
With MongoDB you have to consider your access patterns not only for indexing but also for schema design.
There are three options for child documents:
1. Embedding
2. Array of references in the parent
3. References in the children (foreign key)
I didn´t wanted to watch a 1 hour video, I think is the first time I do something like this, and wow. I learned more in one hour than in 2 days readding weird written tutorials, guides and short videos. Thank you very much.
Oh my gosh! That's awesome! I'm so glad it was useful for you! :)
I'm sorry, but this sounded like a sales pitch :) Understandable since you work for MongoDB. MongoDB has a predecessor, namely XML databases. MongoDB has a lot in common with XML databases. I used to work a lot with XML databases and my experience is that document databases are a * bad * fit for business domain models. You talked about cons and you didn't mention the most important con: update anomalies. But wait a minute. You mentioned this problem and came up with a beautiful solution: a reference. And even better, there is something like unbounded references. I would say, keep evolving and you end up with an SQL database :). In my experience, document databases are great when you store documents as is. For example when you have a message warehouse, or for logging/auditing. XML databases are also used by publishers to store books (DocBook and DITA for example), newspapers etcetera. But using a document database for your business model. That's a bad idea to my opinion. I have the experience to use a very performant XML database as the enterprise database for a company and it had very nasty legal consequences. It was just not the right fit . A relational model is far better. It is also much better to have a schema for you business domain model. I would get very nervous if a developer would store its documents without a schema. No rules, really? Is that a positive thing for your vital business data? Good luck!
I'm using mongol for logging and analytics
When it says no rules. It means you define the rules that fit your business rather than let the rules define your business. you can enforce rules at the db level
WoW. Really enjoyed this session. Thanks for the effort
Thank you so much! I am so glad you enjoyed it!
Super helpful. I was on the fence with PostgreSQL and MongoDB. But this convinced me to go Mongo
This is the best feedback - thank you so much!
what i learned after just this single video was 10x times more than a 200pgs doc i read. thank you
I got you :)
I am creating a bug tracker web app and this has answered my questions about how I should structure my many to many relationship, so thank you!
That's so cool! Can you send me the code? I would love to check out what you're working on!
Love the 1960's-1970's Campagnolo Record bicycle de-exploding at around 25:20 into the video!
Thanks a squillion Joe! 👊🏽
This video is very informative, helpful and enjoyable 😊
This is my favorite comment :D
Solved all my doubts man since morning was searching for embedding design. Thanks a lot 👍
That's amazing! Thank you for sharing!
Great video, these intermediate videos are what youtube is lacking
Right? I feel the same way - lots of beginner level content, but not much for people beyond that. So glad you enjoyed this video!
Two way referencing is just a PURE GOLD!!! Now it seems obvious, but I was trying to solve similiar problem without that 2WR knowladge 🙈, and made no progress for few hours, THANKS MAN!
No one explains mongodb schema as you did. Thank you man. I finally understood MongoDB
russia is a terrorist state, btw
This was super helpful, Cleared many doubts I had. Thank you very much!
That's amazing! Thank you so much for watching! :D
This was really good. One thing that made me laugh is in the begining you stressed that there are no rules and then later you have "Rule 1: favour embedding" haha I just thought that was funny. Thanks for the presentation, it was helpful!
LOL - you're totally right. I totally missed the irony! hahaha! :D
this one video explained more than a couple videos combined I watched before I stumbled here. :) I have subscribed.
Oh my gosh! Thank you! I'm so glad it was useful! :D
Great informative video to get started with NoSQL when you come from a relational DB background. Thanks!
I got you! 🥰
Excellent presentation, it served super well as a foundation for the design discussions about our NoSQL schema. Although we went to with CouchDB all that you said felt relevant. Instant like!
Just one! Love that part. Great vid thanks!
I got you
Thnx a lot man , this answered so many of my doubts. Deserves 10 million views, but we all know the world 😉
🙌
Really enjoyed your video. Was kinda funny when you said MongoDB has no Rules but then we have a section with Rules. hehe. Altough they are very helpful to keep in mind. Thanks for the great content!
hahaha - lol - I def lied there! :P
This is the best into for MongoDB. thanks a lot!
I got you
Nice Video , Every thing is crystal clear
you saved my lots of time , i am new to mongoDB from MySql background keep it up.
This is the best compliment! Thank you so much!
Excelent tutorial, gave me a entire panoram of mongodb
The revisions at the end was helpful. Thank you
YAY
Thanks for making such a comprehensive video for us. Stay Blessed.
I got you! 🥰
@@JoeKarlsson started watching MongoDB University course after this video.
Your company must be proud of you. 👌🧡
I’m early into the video but I just want to say thank you. I’m new to this, so I’m trying to understand esp coming from relational
Thanks a bunch ! It was quite useful especially to see patterns at last.
Thank you so much for posting this presentation. I appreciate the multiple recaps throughout the lecture, helped me a lot.
And I appreciate the many resources.
Mongodb scheme design is well explained. Thank you very much.
I got chu!
better than official mongodb videos and tutorials.. thanks!
This is a very cool, well explained and fun talk on mongodb. 100% recommeded!
1:20 -- Already I see you are a genius. Well done with this idea.
I am new to No SQL and coming from RDBMS background. I enjoyed this session and it gave me very good idea about how to design Mondo DB.
great , I found it is very help full video to start project with schema design
I got chu ;)
One of the best video about schema design in mongoDB thanks @Joe Karlsson. I subscribed
Excellent Joe!! loved you presentation. Really helped me to clarify some doubts on mongo .
I'm so glad to hear that!
12:32 Embedding
17:10 Referencing
Professional SQL developer here Actually the first part of your video is a little misleading, we do design sql databases with the queries in mind and We denormalize when necessary.
You're right - It's not an antipattern in SQL to denormalize for performance reasons - thank you for clarifying. :D
Fantastic and straightforward presentation! Thank you sir!
Oh my gosh! Thank you so much!
Love the office meme. Great tutorial!
Thanks friend. You explain very good. from colombian, Im speak spanish and I dont have seen any video so well explained in Spanish
You deserve more subscribers! Flawless video, definitely learned a few gems from this one!
Thank you so much Nicolas - I may be biased, but I totally agree ;)
Really helps doing my course project and many thannnnnnks!
Oh my gosh! So glad it's useful!
Most underrated talks..awesome...👏👏👏👏
Oh my gosh! Thank you!!!
this is a really nice video!! thanks a lot for sharing your knowledge it's help me a lot
Yay! Thank you so much! I'm so glad that it's useful :D
great!
courage bro!
it has solved many of my doubts
YES! That's awesome!
Thank you so much! I finally understand how to design my Schema. I subscribed.
YAY! That's the best - thank you so much!
You're an amazing teacher. Thank you.
Thank you! 🥺🥰👑
This is beautifully explained. Thank you sir!
Does referencing have to use the complicated BSON _id property? Can't we just use another normal property, like, name (presuming it to be unique) ?
43:09 - Good note
48:50 - Ref tutorial
Very well explained .. Joe. Super presentation .. Thanks much !!
You are so welcome - I am so glad it helped!
Actually quite helpful. Answered most of my questions. Thank you :)
That's awesome! So glad it clicked with you!
I'm relieved bro this is best and helpful very much thanks ....
🥰🥰🥰
Thanks for a good video.
Coming from many years with SQL I can clearly see some benefits with NoSQL. The main selling point for me is the loose data structure of the individual documents as well as query speed when everything you need is embedded in a single document. This is where NoSQL really shines over SQL
Maybe I'm wrong, but I get the feeling that in most cases we still need traditional SQL-like relationship references between decoupled documents and quickly we end up with something that looks an awful lot like good old SQL.
Thank you
Thank you for bringing up a really cool video!
Yay! So glad you liked it!
You really saved me. Thanks a lot!!! Subscribed
one of the best explanations, thanks from Bolivia :D
Oh my gosh! So glad it's useful!
Excellent video, very well explained 👍
Thanks for the explanations, very clear .☺
Thanks for the video Joe
Oh my gosh! I am so glad you enjoyed it!
Dude, thanks, I have enjoyed your explanations!
Many thanks:)
That was great content!!! Answered many questions.
So glad it helped! :D
I'm newbie and I found this video is amazing, now I can do it.
Awesome Explanation. You have nailed it
Thank you so much! Glad you enjoyed it!
Such a amazing video .. many thanks .. great work.. cheers :)
Thank you!
Absolutely amazing explanation 👌
this is gold! thank you so much!
Oh my gosh! Thank you so much! So glad you enjoyed it!
Thank you for this great video. Do you think nosql can completely replace sql? I feel it can if the scheme is done properly...
It depends on the used case, but for a lot of cases noSQL databases work just fine
I’m really glad I watched this video thanks a lot
Great job
Thank you so much!
Keep going...Mike..
I hate your vocal fry so much my god I hope this video is worth it
EDIT: My opinion has not changed - your vocal fry is indeed terrible, but the video is extremely good, it's informative, concise, well presented and paced. I will be recommending it to everyone starting with mongo db. Also you seem like a really likeable guy :D
LOL - thank you?
@@JoeKarlsson I know my message is confusing because I had such mixed feelings about this video, but everyone on my team loves it :D Apparently my ears are super sensitive to fry frequencies and nobody else minds it.
@@someoneelse5005 Your review was hilarious - It's a actually a glowing review. I'm considering printing it out and framing it! I'm so glad y'all enjoyed it. I'll be making more soon!
@@JoeKarlsson I hope so, your content is killer :D
you deserve 1 million subscribers
Very Informative . Thank you for this video.
My pleasure!
Awesome tutorial. Thank you very much!
Google probably has a dashboard for how often I use the bathroom too.
Awesome Video! Thanks, Can you also please make a video on Querying the Data from Documents, especially when we are using referencing.
That's a great idea! I can for sure do that!
Very informative video
you are simply the BEST BEST BEST bru!!
I got chu
Thank you! Great content, it helped me a lot
Great presentation, loved it. Keep them coming😊
Discovered you from Twitter. Amazing talk Joe 🙏
Fantastic Joe. Great Learning. When you talk about embedding example regarding product and parts, you favor parts. But you keep referencing to the size limit of the document. Yes its a problem, But more than that there is a bigger problem of consistency. If you embed a part and If you update the part from a screen, you have inconsistency. When you show the product you will show the old values. I am curious as to why you are not mentioning about inconsistency? I am a newbie in nosql. heavily influence by relational theory. Eager to know your thoughts
Great video! I learned a lot, thank you!
I gotchu boo!
Awesome! Great explanation
Super thanks. Something not spoken about a lot. Modifying schemas structure in production. How can I drop a schema property that I don't need any more? Say username was unique on the user and we don't need that anymore in production. How can I go about that?
Great question! You will have to write an update query to go through all the appropriate documents and update the schema to your new value.
@@JoeKarlsson thanks for the response. Lost a little. To elaborate e.g. Schema({username: {required: true, unique: true}, firstName:...}) and now we don't need the username anymore. Any operations such as create collection documents without username would error.
Thnx bro, real GOAT 👊🏼🤙🏼
Sir, thank you for this. :)
You're welcome, friend!
excellent overview thank you
I got you
Awesome 👍🏻
Yay!
I love you man, not many people talking about mongo, with proper knowledge of it. Good on you.
An interesting question maybe, client wanted an architecture where each A collection item has many B collection items attached to it by reference, BUT querying A collection requires searching based on B collection items' properties, it was super slow, whenever I queried (50m+ documents), a collection based on properties of a different collection (so match, lookup, and the match on the lookuped documents), the query was super slow. The weird part is lookup was relatively fast even, but than the match on the lookedup documents' properties was weirdly very, very slow, any ideas why that happen? It's weird as I imagine once lookup is done, each document gets that embedded and then goes into the next stage (match) in this case, so why was match so slow, as it was supposed to match based on the already available properties embedded in the document in that stage with data in the stage (or maybe I don't understand, and it doesn't really work like that what I explained), it didn't have to use an index or do a collection scan, literally just filter documents in the stage, that's the only mind boggling thing in mongo that i don't get, everything else I love
Alright the information shared here is gold....
Very well explained
I wonder if many users jump to NoSQL because they don't have to formally "design" a schema. Just insert a record (they call it "row" nowadays) and any missing fields (they call it a column nowadays) are created. Now, you've got records with different fields in the same table. However, MongoDB is a great NoSQL database. I use it for metric and performance data collection and statistics. MongoDB can perform write operations very quickly. The data is automatically expired after use. MongoDB is stable as well. Running 4 years+ 24x7, zero downtime.