Cloud Firestore
name: "Guizmo",
age: 3,
color: "black"
name: "Rouco",
age: 8,
color: "black and white",
chip: true
Cloud Firestore
name: "Guizmo",
age: 3,
color: "black"
name: "Rouco",
age: 8,
color: "black and white",
chip: true
cats
Cloud Firestore vs Realtime Database
1
Modelo de datos. Cloud Firestore usa documentos y colecciones. Realtime Database usa una gran árbol JSON.
Cloud Firestore vs Realtime Database
2
Consultas. En Cloud Firestore puedes combinar consultas y retornar únicamente el documento encontrado. Realtime Database devuelve todo el árbol de información (subtree) al que pertenece el resultado.
Cloud Firestore vs Realtime Database
3
Pricing. En Cloud Firestore pagas principalmente por las operaciones de lectura, escritura y borrado. En Realtime Database por el ancho de banda y almacenamiento físico.
SQL vs NoSQL
id | username | last_login |
---|---|---|
321 | "juanwmedia" | 1599040732 |
322 | "guizmo" | 1599040759 |
333 | "nino" | 1599040788 |
Users table
SQL vs NoSQL
id | username | last_login |
---|---|---|
321 | "juanwmedia" | 1599040732 |
322 | "guizmo" | 1599040759 |
333 | "nino" | 1599040788 |
Users table
id | title | user_id |
---|---|---|
111 | "Super post" | 321 |
112 | "ABC of black cats" | 321 |
113 | "Cats are awesome 😺" | 333 |
Posts table
SQL vs NoSQL
SELECT * FROM posts, users
WHERE post.id = 112
AND users.id = posts.user_id
SQL vs NoSQL
users
username: "juanwmedia",
lastlogin: 1599040732
username: "guizmo",
lastlogin: 1599040759
username: "nino",
lastlogin: 1599040788
SQL vs NoSQL
users
id: 321
username: "juanwmedia",
lastlogin: 1599040732
id: 322
username: "guizmo",
lastlogin: 1599040759
is_admin: true
id: 333
username: "nino",
lastlogin: 1599040788
posts
id: 111
title: "Super post",
user_id: 321
username: "juanwmedia"
id: 112
title: "ABC of black cats",
user_id: 321
username: "juanwmedia"
id: 113
title: "Cats are awesome 😺",
user_id: 321
username: "nino"
Reglas a tener en cuenta
Estructurar datos
users
id: 321
username: "juanwmedia",
lastlogin: 1599040732,
posts: {
post_111: {
title: "Super post",
username: "juanwmedia"
content: ...
},
post_112: {
title: "ABC of black cats",
username: "juanwmedia"
content: ...
}
}
Accesibilidad de la información.
Nula escalabilidad.
👍
👎
Estructurar datos
users
id: 321
username: "juanwmedia",
lastlogin: 1599040732
posts
id: 111
title: "Super post",
username: "juanwmedia"
id: 112
title: "ABC of black cats",
username: "juanwmedia"
Control del tamaño del documento principal.
No se pueden eliminar de forma sencilla.
👍
👎
Estructurar datos
Genial para relaciones many to many.
Mostrar la información de forma anidada o jerárquica.
👍
👎
users
id: 321
username: "juanwmedia",
lastlogin: 1599040732
id: 322
username: "guizmo",
lastlogin: 1599040759
is_admin: true
id: 333
username: "nino",
lastlogin: 1599040788
id: 111
title: "Super post",
user_id: 321
username: "juanwmedia"
id: 112
title: "ABC of black cats",
user_id: 321
username: "juanwmedia"
id: 113
title: "Cats are awesome 😺",
user_id: 321
username: "nino"
posts
Índices
Creados de forma automática por cada campo y sub-campo de un documento.
Permiten que todas las consultas básicas sean super rápidas.
nombre | ID |
---|---|
Gabriel | 1CiJAH4TgPojQA3CXUje |
Gerardo | 1oegzA0nt0vPrPYl2NlT |
Guizmo | 8ZmLY5iJQurmayfrQ02e |
Javier | LavXShkGvqYVyCy17HL7 |
Juan | SMxn0ZcR5jfD6LF3AMO3 |
Manuel | VRysMXmgmEpF35H6pkGT |
Miguel | os5RD698ie4bVHhR2P7B |
Índices
Se crean bajo demanda.
Permiten realizar consultas compuestas y complejas a mayor velocidad.
nombre | Edad | ID |
---|---|---|
Gabriel | 23 | 1CiJAH4TgPojQA3CXUje |
Gerardo | 55 | 1oegzA0nt0vPrPYl2NlT |
Guizmo | 2 | 8ZmLY5iJQurmayfrQ02e |
Javier | 76 | LavXShkGvqYVyCy17HL7 |
Juan | 40 | SMxn0ZcR5jfD6LF3AMO3 |
Manuel | 32 | VRysMXmgmEpF35H6pkGT |
Miguel | 65 | os5RD698ie4bVHhR2P7B |
¿Qué son las Cloud Functions?
Un pequeño servidor Node responde realizando algún tipo de trabajo y devolviendo una respuesta.
Cloud Functions: a tener en cuenta