SQL Databases and the Firebase Database - The Firebase Database For SQL Developers #1

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
DAVID EAST: [GIBBERISH] JSON [GIBBERISH] Ran out of breath. SPEAKER 1: Breathing is good. DAVID EAST: Breathing is really good. SPEAKER 1: Feel free to breath. [MUSIC PLAYING] DAVID EAST: Hey there, everyone. Welcome to the first ever episode in the Firebase Database for SQL Developer series. In this lesson, I'm going to teach you the differences between how data is stored in SQL databases and in NoSQL databases, like the Firebase Database. So, to take a look, let's dive on down to the laptop. Relational databases use tables to store data, and a table is made up of columns and rows. And a column is a field of data, like name, birthday, or location. And a row is the entire record that represents that entity. So, in this case, it would be like a customer, and honestly, nothing says SQL mode than a table full of customers. #SQLJoke Now, how do we know that each one of these columns is going to have a valid input? What happens if we leave one of them blank? Well, to prevent this, we use schemas. A schema is like a blueprint. It defines how the data is organized. It specifies what the column name is, what the data type is, and whether it's required. These specifications are called constraints, because they constrain some property of the data. One of the most special constraints is called the primary key, and each row has one. And a primary key must be unique because it's used to uniquely identify each record. If you want to insert data into this table, you write an insert statement where you say what table you want to insert into, and then also your fields of data, and then the values of those fields. Now, let's say I want to add another field like LastName. What happens if I just go in and add that to my INSERT statement and, you know, click execute? Well, it's not going to let me do that. And that's because LastName isn't already in our schema. So, if we want to insert LastName, we need to go and write an ALTER statement to add it to the schema. This ALTER statement adds the LastName column, but it also adds a constraint stating it can't be NULL. And right now, that's kind of a bit of a catch-22. Because how can I add the NOT NULL constraint if there aren't any last names in the table to begin with? Well, to fix this catch-22, you're going to have to add the new column without the NOT NULL constraint and then manually go through your database and add the last names into each row. Then after you've done that, you can come back in and alter the column to add the NOT NULL constraint. And then you're finally done. SQL databases are strict to ensure integrity. But it can be kind of difficult when you first start out developing, because you don't exactly know what your schema is. And also, you might have a rapidly changing data structure, so you're constantly altering your schema and migrating data. And when you're modeling data relationally, not everything always just fits. And this is where NoSQL databases, like the Firebase database, come into play. The Firebase database is a NoSQL JSON database, which is a fancy way of saying it's just a JSON object. JSON is really simple. It has keys, and has values. A key is an identifier, and a value is, you know, well, it's a value. Like tables, how do we know what each key will accept as a value? Is there a schema that we can use? Well, the Firebase database, like most NoSQL databases, are actually schema-less, which means you don't have to decide what your data structure is up front to start inserting data. And this provides you a lot of flexibility, so you don't have to go back and alter your schema just to update data. However, just because you don't have to specify a schema, it doesn't mean that you can't validate the types of data that are being saved to the database. The Firebase database has a rules language called security rules. Security rules allow you to specify the shape and size of data before they get saved to the database. These rules can be written after you've settled on what data structure works best for you, so it provides you with a lot of flexibility. You can think of security rules as constraints in SQL. This example rule checks any direct child keys underneath the customer's key. Every time there's a new child saved, the rule checks to make sure that 'firstName' is a string, 'birthday' is a number, and 'location' is also a string. And if this expression fails, then the data is not saved. So, you're still able to validate your data structure as if it was a schema with constraints. Insert data, you use the Firebase SDK. You first grab the database object, and then you create the reference to where you want to save the data. And in this case, we're creating a reference to the customer's location. From there, you specify what the child key is underneath the parent key. And this child key is like your primary key, because it's unique within that collection. And after that, you can just go and save your data. And this key is unique due to the nature of JSON. If you try to add another key of "customer_one" to this data structure, it will just replace the existing one. So essentially, there is no way to have two "customer_one" keys underneath the customer's key. In this example, you can think of customers as a table, and "customer_one" as your primary key. But it's not always that cut and dry. NoSQL databases can be used in this table and row structure, but you have a lot of flexibility since you don't have to adhere to a schema. So, there is sometimes better options you can use to structure your data. The main difference between SQL databases and NoSQL databases is integrity and flexibility. SQL databases are really inflexible, but they provide a lot of integrity. And NoSQL databases are really flexible, but some of the data integrity is left up to you, the developer, which you saw with security rules. So, in the next lesson, I'm going to take a look at a more advanced relational model and then convert that to a NoSQL database. And if you liked this episode, make sure to like and subscribe so you can stay up to date with all of our content, like our Firecasts, which are our screencasts. And if you have any questions for us, you can send us a question on any social media of your choice. Just use the hashtag #AskFirebase, and we will answer in our weekly Q&A show. So, that's all for this time. I will see you in the next episode. Thanks for watching our video. You might also want to check out this video or even this one. I like that one. And make sure to subscribe. And now, you can just watch me try to catch popcorn in my mouth. Oh! Two in a row.
Info
Channel: Firebase
Views: 267,357
Rating: undefined out of 5
Keywords: google, developer, Firebase, SQL, fullname: David East, GDS: full production, Team: Scalable Advocacy, Type: screencast, Location: MTV, database, tips, tutorial, lesson, product: Firebase
Id: WacqhiI-g_o
Channel Id: undefined
Length: 6min 50sec (410 seconds)
Published: Fri Nov 18 2016
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.