Firebase, una bona alternativa?

Ara que Google ha anunciat la fi de les Fusion Tables per a finals de 2019, sembla un bon moment per explorar les bases de dades alternatives que incorpora (de forma experimental) AppInventor.

Els blocs d’AppInventor corresponents (Per a CloudDB i Firebase) permeten desar i recuperar dades en forma similar a TinyDB i TinyWebDB. L’accés previst és, doncs, mitjançant parelles del tipus {”tag”:”valor”}. Tot i que els valors poden ser més complexos que una simple variable (una llista, per exemple), les funcionalitats estan molt allunyades del que seria una base de dades com cal.
En realitat, les bases de dades de Firebase van més enllà d’aquest ús limitat. No es comporten de forma similar a Fusion Tables, on cada Fusion Table és una única taula d’una base de dades i s’hi accedeix amb consultes SQL. Firebase incorpora bases de dades del tipus no-SQL.
Tot i que AppInventor ofereix una base de dades per defecte, resulta més pràctic crear una base de dades pròpia, en què es pugui treballar prèviament creant taules amb els corresponents camps i registres.

Google ofereix accés a Firebase de forma gratuïta en el seu pla Spark als seus usuaris. Es poden crear diversos projectes, cadascun amb una única base de dades. En la imatge podeu veure dues taules d’exemple (Alumnes i Nivells) amb alguns registres entrats manualment :
Ja hem comentat que el component experimental Firebase d’AppInventor no és adient per a consultar una base de dades, perquè no contempla la possibilitat de tags amb dades anidades. Si n’hi ha, retorna les dades anidades en un format semblant a un JSON (però que no ho és), que requereix un processament no-standard.
Resulta més convenient fer les consultes mitjançant el component Web d’AppInventor. Amb URLs simples, es retorna un JSON que es pot manipular fàcilment per obtenir les dades anidades a qualsevol nivell.

Així, no es poden fer directament consultes tipus SQL (queries) directament sobre la base de dades. S’ha de descarregar el JSON del tag sobre el que es vol fer la consulta i consultar en local les parelles {“tag”:”valor”}. Es poden afegir, esborrar o modificar registres amb el bloc putText del component Web.

Un cop fetes algunes proves, el funcionament per accedir a les dades resulta satisfactori, a l’espera que l’equip de desenvolupadors d’AppInventor pugui implementar un component d’accés més senzill i complet, amb autentificació i accés a dades anidades.

2 comentaris

  1. Jaume Dellunde Autor de l'article

    En la pàgina de tutorials d’App Inventor n’hi ha un on s’aporta una solució a l’esmentat problema d’autenticació en les bases de dades “Firebase”. Així, un cop les dades estan protegides i es poden establir permisos, Firebase es comporta com una base de dades “de veritat” a la qual es pot accedir des d’App Inventor (fins i tot amb dades lleugerament sensibles).
    La solució d’autenticació que planteja el tutorial passa per incloure un component “WebViewer” que carrega un fitxer HTML de l’espai de recursos “Media” de l’App. Aquest fitxer HTML inclou el codi Javascript necessari per dur a terme l’autenticació d’usuaris a Firebase.

    Aquest procediment per executar codi javascript des d’App Inventor és vàlid més enllà de l’ús proposat en el tutorial, tal com podeu comprovar en aquest altre tutorial. Si App Inventor no disposa dels blocs de codi que volem, doncs, podem incloure una funcionalitat similar mitjançant codi Javascript (no caldria escriure el codi, hi ha milers de procediments al nostre abast i només cal cercar-los.