Skip to main content

Firebase: Introduction to Cloud Firestore

I am learning about the cloud firestore. I learnt from Firebase docs and videos. mostly videos and you can also watch the video and come back here to take these notes as reminder about the video.

What is NoSQL Database?

  • NoSql databases are usually schema-less, it means there are not any kind of restriction to store the data in the database.
  • So, NoSql database is not going to store the all of data in table like structure.
  • There are different ways to store the data. It can be:-
    • Plain key value pair
    • Nested tree structure 
    • JSON object
  • This type of approach of storing the data may look messy but lots of developer like working with a schema-less database.
  • In NoSQL database, we can easily add or change the fields without breaking anything in design.
  • For the every record in NoSQL database, fields can be different, for eg: one record has {firstName, lastName, age} and for the next record we stored as {firstName, middleName, lastName, age, city}.
  • The drawback here is that we need to code a little defensively to prevent the storing invalid data in our database.
  • Here we are probably going to want to do some  checking on the client side to make sure the data we're getting is really what we are expecting and fail nicely when it isn’t. But coding defensively is probably a good idea anyway.
  • In NoSQL database, there is no SQL means we can not do join query to get the data from different sources.
  • So, we need to find a way to link the data in NoSQL database.
  • If we take an example of restaurant app, then we can store the restaurant and its reviews as below structure.


  • Here we can fetch the restaurant reviews by restaurant id.
  • NoSQL database has drawback of duplicate data at multiple places but other hand it is fast and easy to fetch the data. No need to run joins across multiple tables.
  • Biggest advantage with a NoSQL database over traditional databases is that it is able to distribute its data across multiple machines pretty easily, and this is big deal.
  • With most relational databases, if my app gets popular and I need my database to scale up to a  larger data set, I generally need to put it on bigger  machines. And this is known as scaling vertically.
  • On the other hand, with many NoSQL databases like Cloud Firestore, if I need to scale up to a larger  data set, my database can, behind the scenes and pretty much invisibly to me, distribute that data across several servers, and everything just kind of works. And this is known as scaling horizontally. 
  • Enviroments Like AWS or Google Cloud Platform are pretty easily add and remove the servers to the database with no downtime.
Starting with Cloud Firestore collection model:
  • In the realtime database world, we typically describe the data that stored in Firebase as a big JOSN tree.


  • It has keys and values, and those values can sometimes be objects that contain other keys and values.
  • Now, Cloud Firestore, like the Realtime Database, is a collection of objects. And all these objects are stored in a tree-like hierarchical structure.
  • Databases like the Firebase Realtime Database store everything as a big old JSON object, Cloud Firestore is a little more organized, in that it's made up of documents and collections. 

  • Documents are similar to JSON objects or dictionaries. They consist of key value pairs, which are referred to as fields in Cloud Firestore.
  • And the values of these fields can be any number of things, from strings, to numbers, to binary data, to smaller JSON looking objects that refer as maps.
  • Collections are basically collections of documents. You can think of them like a hash or a dictionary where the values are always going to be some kind of document.

Rules of Firestore:
  • Collections can only contain documents, no other types of data.
  • Documents can only be 1 MB in size.
  • A document cannot contain another document.
  • Documents can point to subcollections, but not other documents directly.
  • So it's very common to see a collection containing a bunch of documents, which then point to subcollections that contain other documents.
  • The very root of a Cloud Firestore tree can only contain collections means it cannot be document or any other type of data.
  • To access the data in Cloud Firestore, we need to specify the path that contains the documents and collections names.

  • In Cloud Firestore, queries are shallow by default, which means when you grab documents within a collection, you only grab those documents. You don't grab documents in any subcollections.
  • In a single line, it is a “Horizontally scalling NoSql database in the cloud”. 

Comments

Popular posts from this blog

How to kill a process running on particular port in Linux

  If port 8080 needs to be kill use below single command: kill -9 $(lsof -t -i:8080) Note: remove -9 from the command, if you don't want to kill the process violently. To list any process listening to the port 8080: lsof -i:8080 Use any port number that you want to kill.

How to Setup Virtual Environment in Python with venv

A virtual environment is the most used tool by the developers to isolate the dependencies for different projects. Suppose you have two projects say porj1 and proj2 . proj1 needs the Django dependency with version 3.2 but your proj2 needs the Django dependency with version 2.2. In this situation you need a virtual environment to keep the both version on your system separately.  How to create virtual environment in python:  Decide a directory where you want to create the virtual environment. You can use your project directory or any other directory as per your wish.  Run the below command. Here` awesome_proj_env ` is the folder where virtual environment will be created. if the folder does not exists then it will be created automatically. python3 -m venv awesome_proj_env    Activate the virtual environment: On Linux/Mac OSX: source awesome_proj_env/bin/activate  On Windows: awesome_proj_env \Scripts\activate.bat Deactivate the virtual environment in Pyth...

[Resolved] MySQL error code: 1175 during UPDATE in MySQL Workbench

 If WHERE clause does not have primary key in UPDATE query then this error comes. If you want to run the update query without having primary key in WHERE clause of UPDATE query then below command needs to be run to disable the safe mode. SET SQL_SAFE_UPDATES = 0; It is good to run  SET SQL_SAFE_UPDATES = 1;   after running your UPDATE query and again enable the safe mode. Example: SET SQL_SAFE_UPDATES=0; UPDATE table_name SET col_name=1; SET SQL_SAFE_UPDATES=1;