Almacenamiento en MBAAS

=Almacenamiento en MBAAS= El almacenamiento en las aplicaciones actuales es algo completamente necesario, para ser de más utilidad y personalizable. Lo que guardamos son los Logs, mensajes de descripción, que permiten en el desarrollo tener más información de un error o situación, que pueda servir al programador a solucionarlo. En nuestro caso, podemos configurar la máxima cantidad de Logs o mensajes que se necesiten para enviar, los datos al servidor, por medio de una variable, y otra variable que indica si estamos en tiempo de desarrollo, de estarlo se envían.

¿Qué es MBAAS?
Corresponde a sus siglas en ingles de "Mobile Backend As A Service". Se trata de un modelo que permite vincular aplicaciones, mobiles en este caso, con almacenamiento en la nube y otros servicios de análisis y almacenamiento de datos.

Ejemplo de una implementación del Almacenamiento MBAAS con Parse
El almacenamiento de los datos se hace como una tarea Asíncrona en AsyncRemoteLogToParse.java y cuenta con una interface RemoteLogCapable.java implementada en ParseLogger.java que es la que envía la información al servidor. private void flushLogsToParseServer(final List logsToParse) { ParseObject.saveAllInBackground(logsToParse, new SaveCallback {           @Override            public void done(ParseException e) {                if (e == null) {                    Log.d(LOG_TAG, String.format("Logs guardados correctamente. Total : %s", logsToParse.size));                } else {                    Log.e(LOG_TAG, "Error guardando los logs al parse", e);                }            }        }); }

La claseRemotePojo.java, es el tipo de dato usado para guardar información en el servidor Parse.

Se trabajo con un sistema de Logger,es decir que cada vez que la Aplicación, requiera hacer un Log para dejar un rastro al programador, este lo hace en el servidor Parse perteneciente a la App y almacenándolo, entonces lo que se termina guardando es un LOG_TAG.

La clase RemoteLogger.java es la clase que es llamada para poder guardar un Log en el servidor, lo anterior es lo que se necesita para saber como funciona, y si se quiera cambiar de servidor, poder finalmente lograrlo.

Un ejemplo de una llamada a esta funcion RemoteLogger.e(LOG_TAG,"Error al conectarse al servidor. ParseUser es null"); /* TODO: cambio por la clase REMOTELOGGER... * */

Que finalmente llega a ser una invocación a esta función, que es la que ejecuta la tarea Asíncrona.

private static void addLog(String level, String tag, String msg, Throwable throwable) { RemoteLogPojo logPojo = new RemoteLogPojo(level, tag, msg, getStackTraceString(throwable)); logPojos.add(logPojo); //Flusheamos al parse cada x líneas o cada 1 minuto if (logPojos.size >= MAX_LOG_COUNT_TO_FLUSH || (System.currentTimeMillis - latestUpdate.getTime > Constants.ONE_MINUTE)) { Log.d(LOG_TAG, "Flushing logs to parse"); new AsyncRemoteLogToParse.execute(logPojos.toArray(new RemoteLogPojo[logPojos.size])); logPojos = new ArrayList<>; latestUpdate = new Date; } else { Log.d(LOG_TAG, String.format("Cantidad de remotelogs: %s", logPojos.size)); }       }

Optional:¿Porqué Pojo, de donde sale?
Siguente:Menú "hamburger" lateral