Diferencia entre revisiones de «PDM Avanzado FireBase Datos Sincronizados na nube»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página creada con «=Introdución= * FireBase é unha plataforma xestionada por Google que permite, entre outras vantaxes, dispoñer dunha API para <u>gardar e sincronizar</u> datos na nube e…»)
 
(Proxecto Android)
(No se muestran 4 ediciones intermedias del mismo usuario)
Línea 25: Línea 25:
  
 
:* '''Cloud Firestore''' é a opción mais nova cunha serie de vantaxes con respecto a opción anterior, coma:
 
:* '''Cloud Firestore''' é a opción mais nova cunha serie de vantaxes con respecto a opción anterior, coma:
::* Tipo de almacenamento: Coleccións de documentos.
+
::* 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
 
::: 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 [https://firebase.google.com/docs/firestore/client/query-data?hl=es-419 filtros máis complexos].
 
::: Permite realizar consultas sobre os datos con [https://firebase.google.com/docs/firestore/client/query-data?hl=es-419 filtros máis complexos].
Línea 33: Línea 33:
  
  
<br />
+
* No caso de base de datos RealTime Database emprega arquivos [https://es.wikipedia.org/wiki/JSON 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.
=Proxecto Android=
 
 
 
* Máis información [https://firebase.google.com/docs/android/setup 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.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
* Indicar que FireBase non emprega unha base de datos de tipo relacional para gardar os datos, senon que emprega [https://es.wikipedia.org/wiki/JSON json], 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 ([https://firebase.google.com/docs/database/web/structure-data?hl=es-419 exemplo obtido deste enlace]):
 
: Imaxinemos que temos un chat e queremos gardar esta información ([https://firebase.google.com/docs/database/web/structure-data?hl=es-419 exemplo obtido deste enlace]):
Línea 132: Línea 117:
  
 
<br />
 
<br />
 +
 
=Creación do proxecto FireBase=
 
=Creación do proxecto FireBase=
  
Línea 148: Línea 134:
  
  
 +
 +
<br />
 +
=Proxecto Android=
 +
 +
* Máis información [https://firebase.google.com/docs/android/setup 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 [https://firebase.google.com/docs/android/setup?hl=es-419 engadir o FireBase ao proxecto de Android].
  
  
  
 +
* Como estamos a empregar unha base de datos de tipo Cloud Firestore, debemos seguir [https://firebase.google.com/docs/firestore/quickstart?hl=es-419 estes pasos].
  
  
  
  
 +
https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array
  
  
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2019).
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2019).

Revisión del 09:28 13 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

  • 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

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

  • 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.



  • Como estamos a empregar unha base de datos de tipo Cloud Firestore, debemos seguir estes pasos.



https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array



-- Ángel D. Fernández González -- (2019).