1. Structure for feeds in social media app 2. Advanced querying with multiple fields 3. Possible issues if your app gets 1 Million downloads in a day :P (Best practices to make sure things don't break on scaling up) 4. How to maintain consistency of duplicated data 5. How to deal with aggregation queries when device is offline. For example user clicked like button. Like count needs to be incremented but transactions won't succeed or cloud functions won't execute as device is offline. 6. Complete real world examples for social media, shopping, messaging etc.
#AskFirebase How do we backup and restore databases so we can have PROD and DEV environment? In SQL, we can simply perform backup and then restore it using a different name. My startup is based in Indonesia, currently building a new Android app using Firestore as the backend. We need to have PROD and DEV environment. DEV is for Internal Test, Alpha, and Beta.
After watching this, I immideately feel like I understand what the core idea of firestore is and the difference compared to a SQL database. Totally awesome
This is an awesome introduction. Excellently clear and to the point explanations of the basic concepts with all the important context. This guy has got great talent as a teacher.
10:56 Firestore rules Firestore rules: 10:59 first rule: collections can only contains documents nothing else 11:04 second rule: documents can only be 1 MB less inside 11:09 third rule: document can not contain another document 11:15 a document can contain collections of documents, and each documents a collection of documents, and so on 11:23 fourth rule: root can only contains collections 11:47 query
"In the Realtime Database world, when you retrieve some element in the tree, you automatically retrieve everything below it. And that would mean downloading potential hundreds of [elements] anytime I want to grab a couple dozen [elements]... But in Cloud Firestore world, queries are shallow by default." (This is a big point that a lot of beginner Firebase programmers should keep in mind).
But if you actually need a lot of data and everything below it, you need to create a lot of queries because Firestore is shallow by default and that's a big deal. It all depends on the way you're modeling. You can use indexes to help in this process of querying and some techniques in Realtime Database too, as well you can do that in Firestore. NoSQL is a fun world to explore! (:
You actually addressed everything I was thinking as someone coming from a relational DB background. Impressive! Like you were reading my mind. Still not entirely convinced but trying it out.
Really well explained! I kept thinking to myself questions as you went, like "How can I fetch related items without joins?" and "Won't that result in duplicate data that can be out of sync?" and each time within less than a minute you brought up the same question and gave great answers :)
Completely lost when I first encountered the reference of “Collection” and “documents”, making the specific relationship was hard, but now I can see all of the benefits in doing it this way, thanks for the video, it is a recommendation sorely lacking from guides.
I remember the time when I am new to no sql database. So confusing. But now, I am enjoying and have understand this no sql database. Now, I am using cloud firestore db in every app I am working for school. It made my work easier and faster. Thank you, firebase team! Especially to Todd, big thumbs up for you! 👍
I have been using Firestore for my app. I would recommend fixing the following deficiencies prior to coming out of BETA: 1) Ability to use the not equal operator "!=" 2) Support for OR logic in where clause 3) Offline support for Web. 4) Support for Android in React Native (Android does not currently work with React Native without unsupported workarounds). As of the current state, I would only recommend Firestore for very simple MVP's and concept testing purposes. I would not recommend it for a production application (hence why it is in BETA ^^)
Offline support for web is there by calling enablePersistence? Am I missing something here? firebase.google.com/docs/firestore/manage-data/enable-offline
Great explanation! Possibly the first video I've ever seen where the presenter's "You're probably thinking _____, right?" interjections were in fact precisely what I was thinking.
Thanks for the love! We're so happy you found this helpful! Be sure to subscribe to keep up with the latest from Firebase: goo.gle/3dyeCpY Happy learning 😎
The drawings and the clear and step by step explanations with examples are making it a great video along with that great sense of humor. Thank you so much :)
whoa did any one notice on PC at 15:11 when author says subscribe to our RUclips channel the subscribe button have a animation effects outside the video this is super cool!!!
Defensive programming and checking received data on client side are mentioned at 4:20 Should I really check each field of the document for existence and type when received? And if it not matching the expectation use fallback values and log an error (i.e. with Crachlytics)? How defensive are you guys programming your client side?
7:39 now the problem is when i have to update every (sub)user document, i have tried using collectionGroup so i can get all path of documents and add them to batch and update them. BUT this way have a limitation, the batch of writes can write to a maximum of 500 documents. So is there any other better way to do this?
Wow I was expecting you to cover briefly on NoSQL before moving on to Firestore But you also cover the essence of SQL I find it very insightful and would highly recommend all starting out as backend to view it.
I've watched dozens of videos about NoSQL and SQL databases but none of them really painted the real picture. This video is literally the best out there! Now I am excited to follow up on the remainder of the series. Thanks so much !
I've been playing around with noSQL db a bit lately but this was actually a very helpful explanation of how to model the data and how it differs to relational.
Wow! I would like to say that anyone or any company who make some kind of tutorials video should take a good look at this video for how it should be done! Amazing clarity. Thank you.
Hi, it's really a very good video ... the contents and the animations you used ... If you allow, I would likw to ask you what tool di you use to make such animations, tables, arows ... Thanks
Will you implement or in queries and also be able to query multiple fields? It's almost impossible to make so that a user is following people and displays all their posts in a feed.
Brilliant stuff. Got the sample IOS apps working with read and writes to my console and figured out the data model required for the build. Time to build the rest of the structure.
Great video. I recently had to do some data duplication in order to accommodate certain user needs. This felt really dirty, but it's relieving hearing you talk about this like it's okay to do here and there.
Happened to to my as well this couple days, have you tried to keep reference to your Id's in an opcional value of your model? It works for me when I retrieve the documents so you don need to duplicate data
Well I really love Firebase Firestore but in 6:45 what you can do is to save the uid or User Id as a field to each documents of Reviews collection, then get the user information in User collection using that uid instead of updating each document field in Reviews collection such as user image just to match it on what is inside User collection. Am I right?
The only drawback is that you'll need to get data in two ways first is to perform query inside Reviews collection and get the User data using uid field then query it inside User collection. But that's fine for me at least I can guarantee that I am getting a fresh and updated User data.
You guys put together some amazing videos, nice job. I would like to see videos on auth examples and security rules together. There are no detailed videos on this, yet they go hand in hand.
#AskFirebase At 5:58: My plan is to have "Review "subcollection in every "Restaurant" document, but only contains the "User" ID, and my app will read the "User" data inside collection "User" every time a user access a specific "User" details. I am still confused on the term "read", detailed below. - If inside the "User" collection we have 1000 "User" documents and we want to read 1 "User" documents based on "User" ID (ID autogenerated by Firestore), do we use 1000 document read, or 1 document read? - If we want to read 1 "User" documents but not based on "User" ID (i.e. search by "location" column), and we found 42 "User" documents that match, do we use 1000 document read, or 42 document read? I am part of a new startup in Indonesia, currently building a new Android app using Firestore. We are excited about this new hot database!
hahahaha 7:03 that's what I'm currently feeling 🤣 having only SQL background this nosql thing is driving me crazy. Please keep bringing more videos on firestore. A separate playlist would be best :)
Let us know what you'd like to see covered in this series in the comments!
Please help us with SQL Databases to migrate to NoSQL! :)
Greeting from Brasil
(Ormando - Colatina/ES)
Best structure database for real world project like shopping products or post.
1. Structure for feeds in social media app
2. Advanced querying with multiple fields
3. Possible issues if your app gets 1 Million downloads in a day :P (Best practices to make sure things don't break on scaling up)
4. How to maintain consistency of duplicated data
5. How to deal with aggregation queries when device is offline. For example user clicked like button. Like count needs to be incremented but transactions won't succeed or cloud functions won't execute as device is offline.
6. Complete real world examples for social media, shopping, messaging etc.
#AskFirebase How do we backup and restore databases so we can have PROD and DEV environment? In SQL, we can simply perform backup and then restore it using a different name.
My startup is based in Indonesia, currently building a new Android app using Firestore as the backend.
We need to have PROD and DEV environment. DEV is for Internal Test, Alpha, and Beta.
Topics like data optimization and writing queries.
Todd is definitely one of the best presenters. Would love to see more from him.
True
Your explainer videos are amazing
Your's too.
Yes
so is your channel
Thank you guys 💚
Your's too bro
Instant fan here. This is so understandable and engaging. Much better than any other tutorials I've seen in a long while.
I should have watched this video before developing my app with Firestore. Everything makes so much sense now.
After watching this, I immideately feel like I understand what the core idea of firestore is and the difference compared to a SQL database. Totally awesome
This is an awesome introduction. Excellently clear and to the point explanations of the basic concepts with all the important context.
This guy has got great talent as a teacher.
This is one of the best videos you guys posted about Firestore. Really good one! I like this guy explaining.
A BIG thumb up 😅 for this video.
@@ToddKerpelmanCorp you remind me an actor Robin Williams. Thank you! 👍
I was looking for a comment about his thumb, thanks !
Came down here to leave the same comment ;-)
the guy is briliant
himself!
kept me hiper concentrated for the whole video. awesome
10:56 Firestore rules
Firestore rules:
10:59 first rule: collections can only contains documents nothing else
11:04 second rule: documents can only be 1 MB less inside
11:09 third rule: document can not contain another document
11:15 a document can contain collections of documents, and each documents a collection of documents, and so on
11:23 fourth rule: root can only contains collections
11:47 query
"In the Realtime Database world, when you retrieve some element in the tree, you automatically retrieve everything below it. And that would mean downloading potential hundreds of [elements] anytime I want to grab a couple dozen [elements]... But in Cloud Firestore world, queries are shallow by default." (This is a big point that a lot of beginner Firebase programmers should keep in mind).
But if you actually need a lot of data and everything below it, you need to create a lot of queries because Firestore is shallow by default and that's a big deal. It all depends on the way you're modeling. You can use indexes to help in this process of querying and some techniques in Realtime Database too, as well you can do that in Firestore. NoSQL is a fun world to explore! (:
@@brianoliveira5471 Oh my, I'm getting a heart attack just thinking about it. 😬 Why would anyone want to use it?! Can someone explain, please?
@@klaudiaadamus3353 are you asking why anyone would want to use shallow queries?
You actually addressed everything I was thinking as someone coming from a relational DB background. Impressive! Like you were reading my mind. Still not entirely convinced but trying it out.
Was it worth the trial ?
Why is this video the absolute perfection?
As a developer with a long history of using SQL databases, this is the exact information I was looking for!
Really well explained! I kept thinking to myself questions as you went, like "How can I fetch related items without joins?" and "Won't that result in duplicate data that can be out of sync?" and each time within less than a minute you brought up the same question and gave great answers :)
Completely lost when I first encountered the reference of “Collection” and “documents”, making the specific relationship was hard, but now I can see all of the benefits in doing it this way, thanks for the video, it is a recommendation sorely lacking from guides.
We appreciate your support, Juan! Thank you so much for leaving this feedback for us 😄
That's the best intro description I've heard to describe a NoSQL database. Thanks!!
Glad you like it!
I remember the time when I am new to no sql database. So confusing. But now, I am enjoying and have understand this no sql database.
Now, I am using cloud firestore db in every app I am working for school. It made my work easier and faster. Thank you, firebase team! Especially to Todd, big thumbs up for you! 👍
Oh man! If all videos in the internet would be explained like this humanity would get the next level his evolution! Thank you so much!
I have been using Firestore for my app. I would recommend fixing the following deficiencies prior to coming out of BETA:
1) Ability to use the not equal operator "!="
2) Support for OR logic in where clause
3) Offline support for Web.
4) Support for Android in React Native (Android does not currently work with React Native without unsupported workarounds).
As of the current state, I would only recommend Firestore for very simple MVP's and concept testing purposes. I would not recommend it for a production application (hence why it is in BETA ^^)
I understood that with RNFirebase you could use firestore on android, it's not possible?
Dude this is a complete video explaining why there is no such a thing a SQL query and still, you ask for "Ability to join...", seriously?
Offline support for web is there by calling enablePersistence? Am I missing something here? firebase.google.com/docs/firestore/manage-data/enable-offline
Aquilino Méndez you are fine if you use that library. I should have specified that I am using expo, which does not support that library.
cutiko thanks fam
Great explanation!
Possibly the first video I've ever seen where the presenter's "You're probably thinking _____, right?" interjections were in fact precisely what I was thinking.
Thanks for the love! We're so happy you found this helpful!
Be sure to subscribe to keep up with the latest from Firebase:
goo.gle/3dyeCpY
Happy learning 😎
It's a luxury to have this video series. Thanks for your work .
"Worst thing to happen in programming, since GOTO statement" I am going to borrow this line.
Awesome Tutorial !!
You are really a genius, this is one of the best videos I discovered about Cloud Firestore.
Dude, what a great video. Very easy to follow. Great explanations. Just the right amount of humor. Thank you! :)
What a talent for presenting information. I could listen to this gentleman all day. Great job. Looking forward to running video #2.
My education is in relational databases but the fact the Google hosts and scales the database for you has me hooked
The drawings and the clear and step by step explanations with examples are making it a great video along with that great sense of humor. Thank you so much :)
whoa did any one notice on PC at 15:11 when author says subscribe to our RUclips channel the subscribe button have a animation effects outside the video this is super cool!!!
i was confused in firestore but your video helped in understanding it .enjoyed a lot.
We're glad to hear the tutorial was helpful! Be sure to check out the links in the description for more tips and tutorials 😎
This video is so easy to understand and giving examples at the right time when I started to get confused! thumbs up for you
Todd, I love the way you talk, your jokes.
I wish you made every tutorial
Describing complex things in a simple way. Thanks!
This guy makes the best videos for real. He should make all the videos for flutter/firebase.
Thanks for the love, Chris! Glad you enjoyed the video 😎
Be sure to check out the links in the description for even more great content!
That was the missing link for me. Didactically outstanding Explanation, and Presentation. Thank you, Todd
Anyone in 2024...🤚
Yes
Looking for me
Incredible explanation, that's some proper communication skills right here! Thanks a lot!
awesome explanation!! "Why optimize for the thing that happens 1 time instead of the thing that happens 7000 times" -> That's makes a lot of sense :D
This guy is crazy good at explaining, Well done.
This is my introduction to NoSQL and the collections make sense now to me
I'm new to NoSQL and was confused as first, thanks for your detailed and easy to follow explanation!
Defensive programming and checking received data on client side are mentioned at 4:20
Should I really check each field of the document for existence and type when received? And if it not matching the expectation use fallback values and log an error (i.e. with Crachlytics)?
How defensive are you guys programming your client side?
Good job making a dry topic actually fun to watch!
This is a fantastic video. Very well explained and the pace is spot on. Are there any other episodes in this series. If so, how do I find them?
That's solid! You managed to explain to a database newbie what a NoSQL database is. Thanks!
I'm just learning about Firestone for the first time. You did a phenomenal job of explaining things here! :D
this is the best series since bread came sliced
Glad you enjoyed!
Best noSQL education short I've ever seen.
Hope the thumb is better (and that it did not take 4 years to heal).
GREAT video. Thanks!
7:39 now the problem is when i have to update every (sub)user document, i have tried using collectionGroup so i can get all path of documents and add them to batch and update them. BUT this way have a limitation, the batch of writes can write to a maximum of 500 documents. So is there any other better way to do this?
Perfect explanation. Humankind requires more of such.
thith guy gets it. thith was dope. appreciate it thankyuhthomuch all yallth
Thank you guys! This was really nice.
Glad you enjoyed it!
Wow I was expecting you to cover briefly on NoSQL before moving on to Firestore
But you also cover the essence of SQL
I find it very insightful and would highly recommend all starting out as backend to view it.
This is great video!
I cannot wait for "Future episodes"!!
Looking forward to this amazing series.
I've watched dozens of videos about NoSQL and SQL databases but none of them really painted the real picture. This video is literally the best out there! Now I am excited to follow up on the remainder of the series. Thanks so much !
You got my reaction 😂, i really freaked out and you said every worries i have! thanks for creating this video, I learned a lot
One of the best tutorials I have ever seen!!!
I've been playing around with noSQL db a bit lately but this was actually a very helpful explanation of how to model the data and how it differs to relational.
oookay .. thats some top notch explaining right there , keep it
wow!!! just wow!! excellent pace and extremely well presented!!
Wow! I would like to say that anyone or any company who make some kind of tutorials video should take a good look at this video for how it should be done! Amazing clarity. Thank you.
Nice! I'm devoloping my firsts apps with Firestore.... and boy! I love it, so simple. Great job guys! and keep the videos coming
Hi, it's really a very good video ... the contents and the animations you used ... If you allow, I would likw to ask you what tool di you use to make such animations, tables, arows ... Thanks
This is the best guy described it so well and fun, thanks a million :)
How exciting! Looking forward to this!
There's no sequel for that thumbnail.
You described the topic very well, thank you.
Thanks for that!
Thanks for this videos,, just what i was needing in this moment of my life.
You're so welcome!
Finally a great explanation from Google!👍
Will you implement or in queries and also be able to query multiple fields? It's almost impossible to make so that a user is following people and displays all their posts in a feed.
"Since Go-To Statement" LOL IM DED😂😂😂😪😪
Excellent illustration on what noSQL is. Thanks so much :)
Awesome video Jeff. My first time actually learning about NoSQL after just hearing about it for so long. You've made it look very easy :)
Great presentation with illustrations! Loved how you introduced concepts along the way and kept one example going..
This is an awesome introduction, no doubt about it. But I expected few examples running on firebase/firestore to understand how it's really done.
i studied sql databases for and year and this is more clear. Thanks.
Brilliant stuff. Got the sample IOS apps working with read and writes to my console and figured out the data model required for the build. Time to build the rest of the structure.
Great video. I recently had to do some data duplication in order to accommodate certain user needs. This felt really dirty, but it's relieving hearing you talk about this like it's okay to do here and there.
Happened to to my as well this couple days, have you tried to keep reference to your Id's in an opcional value of your model? It works for me when I retrieve the documents so you don need to duplicate data
Does this mean you would have a "Reviews" collection for every "Restaurants" document? So excited about upcoming videos.
Fantastic
Thank you for this video series!!
You are so welcome!
Well I really love Firebase Firestore but in 6:45 what you can do is to save the uid or User Id as a field to each documents of Reviews collection, then get the user information in User collection using that uid instead of updating each document field in Reviews collection such as user image just to match it on what is inside User collection. Am I right?
The only drawback is that you'll need to get data in two ways first is to perform query inside Reviews collection and get the User data using uid field then query it inside User collection. But that's fine for me at least I can guarantee that I am getting a fresh and updated User data.
#AskFirebase re update that part of video and explain this tricky part next time so that you can encourage more and more developers.
This is the best explanation of why to migrate to Firebase: is a great serverless! No pain for developers, fast queries and scaling is not an issue
Informative video. VERY NICE!
Glad you liked it!
wow, now THAT's a high quality explanatory video!
Awesome video! Watching the whole playlist now
You guys put together some amazing videos, nice job. I would like to see videos on auth examples and security rules together. There are no detailed videos on this, yet they go hand in hand.
7:11 what's the go-to statement and what is the problem with it?
Great intro. I'll now watch your other videos. Thanks heaps !
Thanks for the clear explanations and drawings. Very helpful.
Fantastic presenter! Great video thanks
Glad you enjoyed it!
Awesome explanation. Would give a big thumbs up...but I see, you already have one.
#AskFirebase At 5:58:
My plan is to have "Review "subcollection in every "Restaurant" document, but only contains the "User" ID, and my app will read the "User" data inside collection "User" every time a user access a specific "User" details.
I am still confused on the term "read", detailed below.
- If inside the "User" collection we have 1000 "User" documents and we want to read 1 "User" documents based on "User" ID (ID autogenerated by Firestore), do we use 1000 document read, or 1 document read?
- If we want to read 1 "User" documents but not based on "User" ID (i.e. search by "location" column), and we found 42 "User" documents that match, do we use 1000 document read, or 42 document read?
I am part of a new startup in Indonesia, currently building a new Android app using Firestore. We are excited about this new hot database!
Amazing explanation with precise visuals.
dude this tutorial is amazing !! thank you ! finally got idea about NoSQL databases
Great video! So clear. Would like to hear more about syncing a top level doc with a child one - as mentioned at about 13:30
best teacher on youtube
I hope this guy is getting paid a lot cause his videos are fire
hahahaha 7:03 that's what I'm currently feeling 🤣 having only SQL background this nosql thing is driving me crazy.
Please keep bringing more videos on firestore. A separate playlist would be best :)