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

Blockchain in Theory - Blockchain, Bitcoin, Mining

   Blockchain is the software protocol that tell the Internet how to transfer money and assets. Blockchain is the layer and Bitcoin is the application. Just one of many cryptocurrency kinds of applications. When one user send email to another then both users do not have to know about the underlaying process except email address. Similarly,  User don't need to know anything other than other user's wallet address to send some bitcoin or other cryptocurrencies.  Any file on Internet may have multiple copies but money is something that should not be copied multiple times. This has been a longstanding problem in computing networks namely the double spend problem. Satoshi Nakamoto introduced white paper for digital cash system in 2008 to resolve the double spending problem and fortified by a ledger which enforces the money is only spent once. It took 15 years alone for corporate email as the main application to be a standard thing in our lives. And similarly the money Internet block

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.

Nudge Notes - Python Language Basics

  1. Datatypes in Python: None Numeric float -> 1.5 int -> 5 complex -> 2+5j bool -> True/false Sequence List -> [3,5,6,7,1] Tuple -> (3,5,6,7,1) Set -> {3,5,6,7,1} String -> "Akshay" Range  range(5) -> range(0, 5)  list(range(5)) -> [0,1,2,3,4] list(range(2,10,2)) -> [2,4,6,8] Dictonary product_price = {'book': 50, 'pen': 300, 'eraser': 10}  product_price.get('book') -> 50 2. Number Conversion in Python bin( 28 ) -> 0b 11100 oct( 28 ) -> 0o 34  hex( 28 ) ->  0x 1c 3. Swap two numbers in Python           a = 5       b = 6 Method #1:             a, b = b, a Method #2            a = a + b         b = a - b         a = a - b 4. "math" module in python     import math math.sqrt(25) -> 5.0 math.floor(2.5) -> 2.0 math.ceil(2.5) -> 3.0 math.pow(2, 3) -> 8.0 math.pi -> 3.141592653589793 math.e -> 2.718281828459045 5. How to import a module in python import math import math as