Diferencia entre revisiones de «PDM Avanzado FireBase Datos Sincronizados na nube»
Ir a la navegación
Ir a la búsqueda
Línea 146: | Línea 146: | ||
− | + | * Unha vez creado o proxecto temos que [https://firebase.google.com/docs/android/setup?hl=es-419 engadir o FireBase ao proxecto de Android]. | |
Revisión del 19:14 12 jun 2019
Introdución
- FireBase é unha plataforma xestionada por Google que permite, entre outras vantaxes, dispoñer dunha API para gardar e sincronizar datos na nube en tempo real.
- Podemos ver neste enlace os prezos e características para os diferentes plans.
- No caso do plan gratuíto, dispoñemos entre outras características, de:
- 1GB de almacenamento.
- 200 conexión simultáneas.
- 10GB ao mes de descarga.
- Podemos consultar neste outro enlace os límites anteriores tamén os límites a nivel de programación das coleccións que emprega FireBase para gardar información.
Tipos de bases de datos
- Máis información neste enlace.
- Permite dous tipos de bases de datos:
- Realtime Database é a base de datos orixinal de Firebase.
- Tipo de almacenamento: árbore json
- As bases de datos se limitan á disponibilidade zonal nunha soa rexión
- O escalamiento necesita fragmentación (se aumentamos o número de conexións ou escrituras por segundo necesitamos dividir a información en varias bases de datos)
- Cloud Firestore é a opción mais nova cunha serie de vantaxes con respecto a opción anterior, coma:
- Tipo de almacenamento: Base de datos NoSQL orientada aos documentos. Coleccións de documentos.
- Os datos complexos e xerárquivos son máis doados de organizar e escalar. Emprega subcoleccións dentro dos documentos
- Permite realizar consultas sobre os datos con filtros máis complexos.
- As bases de datos son aloxadas en diferentes servidores de diferentes rexións.
- O escalamiento non necesita fragmentación.
- No caso de base de datos RealTime Database emprega arquivos json para gardar os datos, polo que teremos que ter coidado coa forma de gardar a información para acceder a ela da forma correcta.
- Imaxinemos que temos un chat e queremos gardar esta información (exemplo obtido deste enlace):
1 {
2 "chats": {
3 "one": {
4 "title": "Historical Tech Pioneers",
5 "messages": {
6 "m1": { "sender": "ghopper", "message": "Relay malfunction found. Cause: moth." },
7 "m2": { ... },
8 // a very long list of messages
9 }
10 },
11 "two": { ... }
12 }
13 }
- Fixarse que a nivel de EE/R <=> relacional, os datos terían a relación de:
- 1 CHAT (id,título) => N MENSAXES (m1,m2,...)
- 1 PARTICIPANTE (nome) => N MENSAXES (Cada mensaxe é enviado por un participante do chat)
- PARTICIPANTE <=> CHAT (un participante pode participar en múltiples chats)
- Se na organización json anterior queremos obter o título de todos os chats teríamos que descargar a árbore completa (cando obtemos unha referencia a un nodo en Firebase, temos que descargar todo o que colga del) incluído todas as mensaxes.
- Para evitalo poderíamos optar pola seguinte organización:
1 {
2 // Chats contains only meta info about each conversation
3 // stored under the chats's unique ID
4 "chats": {
5 "one": {
6 "title": "Historical Tech Pioneers",
7 "lastMessage": "ghopper: Relay malfunction found. Cause: moth.",
8 "timestamp": 1459361875666
9 },
10 "two": { ... },
11 "three": { ... }
12 },
13
14 // Conversation members are easily accessible
15 // and stored by chat conversation ID
16 "members": {
17 // we'll talk about indices like this below
18 "one": {
19 "ghopper": true,
20 "alovelace": true,
21 "eclarke": true
22 },
23 "two": { ... },
24 "three": { ... }
25 },
26
27 // Messages are separate from data we may want to iterate quickly
28 // but still easily paginated and queried, and organized by chat
29 // conversation ID
30 "messages": {
31 "one": {
32 "m1": {
33 "name": "eclarke",
34 "message": "The relay seems to be malfunctioning.",
35 "timestamp": 1459361875337
36 },
37 "m2": { ... },
38 "m3": { ... }
39 },
40 "two": { ... },
41 "three": { ... }
42 }
43 }
- Como podemos observar a organización é parecida a ter un modelo relacional, xa que temos as entradas cos CHATS, as entradas cos PARTICIPANTES e as entradas coas MENSAXES.
- Loxicamente dita organización pode variar en función das necesidades de consulta de información.
Creación do proxecto FireBase
- O primeiro que temos que facer é crear un proxecto na consola FireBase.
- PDM FireBase 2.jpg
Cambiamos a ubicación onde estamos (Europa) onde se van gardar os datos.
- PDM FireBase 3.jpg
Se todo foi ben prememos o botón de 'Continuar'.
Nota: Analytics é unha ferramenta de Google para obter informes sobre o uso do noso sitio web ou como no caso de aplicacións Web, permite rexistrar eventos que se produzan dende a nosa aplicación (teremos que programar dito rexistro na aplicación móbil). Por exemplo, seleccionar un produto dunha lista sería un bon evento para rexistrar.
Proxecto Android
- Máis información neste enlace.
- Temos que crear un proxecto Android cun MinSDK API 16 (Jelly Bean) ou superior.
- Deberemos empregar a versión de Gradle 4.1 ou superior.
- Os emuladores onde fagamos as probas teñen que ter unha imaxe con Google Play.
- Unha vez creado o proxecto temos que engadir o FireBase ao proxecto de Android.
-- Ángel D. Fernández González -- (2019).