7. Conceptos básicos
¿Es LO MÁS importante?
NO. Lo más importante son las reglas
de negocio de los usuarios/clientes
¿Entonces por qué muchas veces empezamos
diseñando e implementando la base de datos?
8. Conceptos básicos
¿Cómo persistir los datos?
Al usuario/cliente probablemente no le interese
BBDD NoSQL
BBDD
Relacionales
Archivos
Binarios
XML
CSV
Almacenamiento Cloud
Servicios Web
9. Conceptos básicos
¿Cómo persistir los datos?
¿Cómo podemos persistir en Android?
Preferencias
Parejas: clave -> valor
Configuraciones, recordar acciones, etc.
Almacenamiento de archivos
Almacenamiento interno o externo
Archivos arbitrarios (imágenes, json, xml, texto, binarios, etc.)
Datos estructurados
Base de datos SQL
Colecciones de datos estructurados y relacionados
10. Tipo de Persistencia
¿Cómo realizar la persistencia en móvil?
Almacenamiento en el propio móvil
Especio limitado. Acceso rápido. Alto coste consultas complejas
1.- Local
11. Tipo de Persistencia
¿Cómo realizar la persistencia en móvil?
El móvil sólo muestra datos, que lee de un servidor
Cada acceso a datos requiere un consulta
Alta latencia. Muy sensible a desconexiones
2.- Remota en un servidor
12. Tipo de Persistencia
¿Cómo realizar la persistencia en móvil?
Copia local de alguna información del servidor
Comunicación con el servidor para sincronizar
Funcional (más o menos) desconectado. Latencia según acierto.
3.- Mix (Cacheo/Hoarding)
13. ¿Qué es persistencia?
Retos de la persistencia en móviles
¿Cómo diseñar la persistencia de datos?
Mecanismos de persistencia de datos en Android
SQLite
ORMLite
Parse
Servicios REST
Índice
15. Retos
Computación y memoria limitada
Consultas complejas lentas
Mejor preprocesar datos en el servidor
Desnormalizar BBDD si es posible
Alto consumo de batería
16. Retos
Restricciones de comunicación
Dificultad para sincronizar
Minimizar número de conexiones
Sólo datos relevantes para la aplicación
Sólo modificaciones a los datos
Preprocesar datos
17. Retos
Desconexiones habituales
Modo off-line. ¿Qué ocurre?
No funciona nada
Funcionamiento limitado (sólo lectura)
Funcionamiento completo (conflictos)
Recuperación conexión
Sincronización de datos
Resolución de conflictos
19. El camino sin reflexionar
Diseñar y crear la BBDD
Escribir SQL donde haga falta leer o modificar datos
Utilizar cursores para recorrer los resultados
Con el paso del tiempo
¿Y si cambio el nombre o tipo de una columna?
¿Y si añado una tabla nueva?
¿Y si cambio BBDD local por servicios web externos?
Diseño de la persistencia
20. Originario del ámbito J2EE
Aplicable a cualquier tipo de software OO
Patron DAO
Data Access Object
21. Patrón DAO
¿Qué es?
Interfaz con métodos de persistencia para Bussiness Objects
Independiente del mecanismo de persistencia (BBDD, XML, Servicios
Web, etc.)
Sólo entran y salen Bussiness Objects y tipos primitivos
Excepciones independientes de la persistencia
23. Patrón DAO
Beneficios e Inconvenientes
Beneficios
Separación lógica aplicación y gestión persistencia
Evolución/Migración persistencia sin cambiar lógica aplicación
Centralización de las tareas de persistencia (mejor mantenimiento)
Inconvenientes
Capa extra quizá innecesaria en aplicaciones pequeñas
Mueve objetos enteros -> Sobrecarga (si no se diseña bien)
Dificulta integración con frameworks ActiveRecord u ORM
24. Patrón DAO
Estructura habitual
Un objeto DAO por Bussiness Object/Tabla
Métodos habituales en el interfaz
List<BO> getAll() / findAll()
BO getById(Long id) / findById(Long id)
insert(BO theObject)
delete(BO
theObject)
update(BO
theObject)
Y todos los que hagan falta….
25. Patrón DAO
Métodos Genéricos vs Métodos Específicos
Ejemplo: Aplicación tipo Google Calendar (vista calendario + vista detalle)
Métodos genéricos
List<Event> getAllEvents()
Event insertEvent(Event e)
Event updateEvent(Event e)
Métodos genéricos
List<Event> getAllEventsWithScheduleInfo()
updateScheduleInfo(long eventId, Date start, Date end)
Event insertEvent(String title, Date start, Date
end)
Event getEventWithDetailnfo()
Event updateEvent(Event e)
26. DAO permite varias persistencias. ¿Para qué?
Conectado vs Desconectado
Desarrollo vs Producción
Lite vs Premium
Conexión rápida vs Conexión lenta
¿Cómo cambiar entre persistencias?
UsuariosDAO usuariosDAO = new UsuariosSQliteDAO();
UsuariosDAO usuariosDAO = new UsuariosRESTDAO();
¡Disperso por toda la aplicación!
¿Cómo cambiar de persistencia?
27. Patrón DAO
Abstract Factory Pattern
Factoría -> encargado de crear objetos
Agrupar y encapsular factorías individuales (una por DAO)
29. La persistencia es un detalle (importante)
Varias opciones/tecnologías de implementación
Elija una, pero no hipoteques tu futuro
Mecanismos de Persistencia en Android
Conclusiones