Saltar al contenido

Tecnología · Base de datos en el dispositivo

Apps que funcionan sin conexión con SQLite

SQLite es una base de datos completa que vive dentro de la propia app, en un archivo del dispositivo. Con ella la app guarda, busca y calcula sin depender de la cobertura, y envía los cambios cuando la conexión vuelve. Diseñamos ese modelo de datos local, la sincronización con tu servidor y lo que hace falta para que nada se pierda por el camino.

Fig. 01Cajonera de datosPARTESFOTOSCLIENTESParte 0142CLIENTESGUARDAR · BUSCAR · SINCRONIZAREn bucle
El parte se apunta primero en el diario y después se guarda en su cajón, dentro del propio teléfono. Cuando vuelve la conexión, la barrera se levanta y los cambios pendientes cruzan hacia la oficina.

Situaciones

Qué puedes resolver con una base de datos en el dispositivo

Guardar en el dispositivo compensa cuando el trabajo no puede pararse porque falle la red: en un sótano, en una nave, en el campo o en un avión.

  • Una app que se queda en blanco sin cobertura

    Hoy cada pantalla pide los datos al servidor y, si no hay red, no hay app. Con los datos en el dispositivo se trabaja igual y se envía después.

  • Cambios que se pierden o se duplican

    Dos personas editan lo mismo, o un envío se corta a medias. Cada cambio se apunta en una cola con su orden y se aplica una sola vez, con una regla clara para los conflictos.

  • Listas largas que tardan en aparecer

    Catálogos, clientes o históricos que hoy se descargan cada vez. Guardados en el dispositivo, con sus índices, se buscan al momento y sin gastar datos.

  • Información sensible en un teléfono

    Datos de clientes, firmas o fotos que no deben quedar legibles si el aparato se pierde. La base de datos se cifra y la clave se guarda donde el sistema la protege.

El diario: cada cambio se apunta antes de darse por guardado

Qué conviene revisar al empezar

  • Qué datos hacen falta sin conexión y cuánto ocupan
  • Quién puede cambiar el mismo dato y qué pasa si lo hacen dos a la vez
  • Qué API ofrece tu servidor para recibir cambios y devolver los suyos
  • Qué datos son sensibles y cuánto deben conservarse en el dispositivo

Servicios

Qué desarrollamos con SQLite

Cuatro tipos de encargo. Los dos primeros son casi siempre uno solo: guardar en el dispositivo obliga a decidir cómo se sincroniza.

  • Módulo 1 · Cajonera

    Modelo de datos local

    Las tablas que la app necesita para trabajar sola: qué se descarga, qué se crea en el dispositivo y cómo se relaciona. Con escrituras que se completan enteras o no se hacen.

    Ejemplos de entregables

    • Partes de trabajo sin cobertura
    • Catálogo descargado para consultar
    • Borradores que no se pierden
  • Módulo 2 · Barrera

    Sincronización con tu servidor

    Una cola de cambios pendientes que sale cuando hay red, reintenta si falla y no duplica. Y una regla escrita para los conflictos: quién gana, o cuándo se pregunta a una persona.

    Ejemplos de entregables

    • Cola de cambios con reintentos
    • Regla de conflictos por campo
    • Descarga solo de lo que ha cambiado
  • Módulo 3 · Índice

    Búsquedas y consultas en el dispositivo

    Índices para que las listas largas respondan al momento, búsqueda de texto dentro de los registros y los cálculos que hoy se piden al servidor, hechos en el propio aparato.

    Ejemplos de entregables

    • Buscador de clientes sin conexión
    • Totales calculados en el dispositivo
    • Filtro sobre miles de referencias
  • Módulo 4 · Cerradura

    Cifrado, migraciones y copias

    La base de datos cifrada, los cambios de estructura entre versiones de la app sin perder lo guardado y un modo de recuperar los datos si un dispositivo falla antes de sincronizar.

    Ejemplos de entregables

    • Base de datos cifrada
    • Cambio de estructura entre versiones
    • Exportación de datos pendientes

Un ejemplo en funcionamiento

Tres partes sin cobertura

Ejemplo funcional con datos ficticios. Quita la cobertura, cierra un parte y añade otro: se guardan en el teléfono y esperan en la cola. Devuélvela y mira cómo salen, y qué pasa cuando la oficina ha tocado el mismo parte.

Ejemplo funcional · datos de muestra

Conexión

La oficina, mientras tanto

Regla si hay conflicto

Cola de cambios

    En el teléfono (SQLite)

    ParteEstadoEnviado

    En la oficina (simulada)

    ParteEstado

    La base de datos de este ejemplo vive en la memoria de tu navegador y la oficina está simulada: nada se envía. El orden de las operaciones, la cola y la regla de conflictos son los que se programan en una app real.

    Integración

    Cómo encaja con tus sistemas

    La base de datos del dispositivo no sustituye a la de tu empresa: es una copia de trabajo de la parte que cada persona necesita. La verdad sigue estando en tu servidor.

    De dónde viene

    • Lo que se crea en el dispositivopartes, fotos, firmas
    SQLiteSQLite en el dispositivoguarda, busca y pone en cola

    A dónde llega

    • Cola de sincronizacióncambios pendientes
    • Tu ERP o CRMregistros confirmados
    • Búsquedas localesresultados al momento

    Dependencias que conviene revisar

    • Si tu API puede devolver solo lo que ha cambiado desde una fecha
    • Cuánto espacio ocupan los datos y las fotos en el dispositivo
    • Qué ocurre con los datos locales al cerrar sesión o cambiar de usuario
    • Qué exige la protección de datos sobre lo que se guarda en el aparato

    Cómo trabajamos y qué entregamos

    Cómo trabajamos un encargo con SQLite

    1. 01

      Revisión inicial

      Miramos qué datos maneja la app, de dónde vienen, quién los cambia y qué falla hoy cuando no hay red.

    2. 02

      Alcance

      Escribimos qué se guarda en el dispositivo, cómo se sincroniza, qué regla resuelve los conflictos y qué queda fuera.

    3. 03

      Primera entrega

      El recorrido principal funcionando sin conexión en tus dispositivos, con la cola de cambios a la vista.

    4. 04

      Validación

      La pruebas en modo avión, con cortes a mitad de un envío y con dos personas cambiando el mismo dato.

    5. 05

      Documentación

      El modelo de datos, la regla de conflictos, cómo se migra entre versiones y cómo se recuperan los datos de un dispositivo.

    Qué recibes al cerrar el encargo

    • El código de la capa de datos en tu repositorio
    • El esquema de la base de datos y sus migraciones
    • La regla de conflictos, escrita y probada
    • La lista de lo que queda fuera y por qué

    Preguntas

    Preguntas sobre SQLite

    ¿Falta la tuya? Escríbela a info@veodar.com y te respondemos con una pregunta concreta, no con un dossier.

    ¿SQLite es una base de datos de verdad o una versión reducida?

    Es una base de datos relacional completa, con consultas SQL, transacciones e índices. Lo que la distingue es que no necesita un servidor: es una biblioteca dentro de la app y un archivo en el dispositivo. Por eso es la que usan por dentro los propios sistemas de iPhone y Android.

    ¿La sincronización viene incluida?

    No. SQLite guarda y consulta; enviar los cambios a tu servidor y recibir los suyos hay que diseñarlo. Es la parte que más cuidado necesita y la que decide si una app sin conexión es de fiar, así que se define y se prueba antes que las pantallas.

    ¿Qué pasa si dos personas cambian el mismo dato sin conexión?

    Depende de la regla que se haya escrito, y esa regla la decides tú con nosotros: que gane el último cambio, que gane la oficina, que se combinen campo a campo o que la app pregunte. Lo que no puede pasar es que uno de los dos cambios desaparezca sin que nadie lo sepa.

    ¿Los datos están seguros si se pierde el teléfono?

    Si la base de datos se cifra y la clave se guarda en el almacén protegido del sistema, lo guardado no se puede leer sin desbloquear el aparato. Además se decide qué datos no deben quedarse en el dispositivo más de lo necesario.

    ¿Cuántos datos puede guardar?

    Mucho más de lo que una app suele necesitar: el límite práctico lo pone el espacio libre del dispositivo, no SQLite. Lo que conviene acotar es qué se descarga, porque no tiene sentido llevar en el teléfono lo que esa persona no va a usar.

    ¿Sirve con cualquier tecnología de app?

    Sí. Hay bibliotecas maduras para React Native, para Swift y para Kotlin, y es también la base de datos habitual en las aplicaciones de escritorio. El modelo de datos y la regla de sincronización se diseñan igual; cambia la biblioteca que los ejecuta.

    Actualizado:

    Otras tecnologías

    Con qué se combina

    Todas las tecnologías
    • Desarrollo de apps con React NativeUna sola base de código para iPhone y Android, con módulos nativos donde hacen falta. Creamos apps nuevas y continuamos las que ya tienes.
    • Desarrollo de apps Android con KotlinApps nativas para el parque de dispositivos que tienes: móviles, tabletas y terminales de trabajo, con tareas en segundo plano y periféricos.
    • Backend con Node.jsAPIs, conexiones entre sistemas y procesos en segundo plano. Automatizamos el intercambio de información entre tu web y tus herramientas de gestión.

    Empezar

    Cuéntanos dónde se queda tu app sin cobertura.

    Con saber qué trabajo se interrumpe cuando falla la red y qué datos intervienen nos basta para una primera respuesta.

    Qué ayuda a valorarlo

    • Qué debe poder hacerse sin conexión
    • Qué datos intervienen y quién los cambia
    • Qué API tiene tu servidor
    • Con qué tecnología está hecha la app

    ¿Antes de escribir? Mira cómo presupuestamos un proyecto o las soluciones por área de la empresa.

    Fig. 07Manipulador MorseH · O · L · A