Saltar al contenido

Por qué SQLite, y por qué dentro del binario

La base de datos que no es un servidor: qué resuelve en una aplicación de escritorio, por qué se compila dentro en vez de usar la del sistema, y cuándo no hace falta.

Qué resuelve

La última fila importa tanto como las otras: si lo único que guardas son treinta preferencias, una base de datos es maquinaria de más. El nivel 44 trata esa alternativa.

Por qué SQLite

Cuatro razones, y las cuatro son de escritorio:

  • No hay servidor que instalar ni arrancar. Es una librería dentro de tu proceso. El usuario no instala nada, no hay puertos, no hay un proceso que pueda estar caído.
  • Es un solo fichero. Copiarlo es copiar la base entera, lo que hace las copias de seguridad y la exportación del nivel 39.3 triviales.
  • Está en todas partes y lleva décadas. Su corrección ante fallos de energía está probada a una escala que ninguna alternativa nueva puede igualar, y eso es exactamente lo que necesita el disco de un usuario.
  • Y su formato es abierto y estable. Si tu aplicación desaparece, los datos del usuario siguen siendo legibles con herramientas comunes. Es la respuesta a la pregunta del nivel 39.3.

Dentro del binario o del sistema

La decisión de empaquetado, y tiene una respuesta clara:

Compilarla dentro es lo correcto para una aplicación de escritorio, y es lo que hacen las librerías de Rust por omisión cuando se activa la característica correspondiente. La del sistema tiene sentido en un servidor gestionado por otros, que no es tu caso.

Cuándo no hace falta

Para no meter una base de datos por costumbre:

  • Preferencias y ajustes: un fichero. Nivel 44.
  • Documentos independientes del usuario: si tu aplicación abre y guarda ficheros como un editor, el formato es tuyo y no hay base que valga — aunque SQLite también sirve como formato de fichero de documento, que es un uso legítimo y poco conocido.
  • Contenido inmutable que se acumula: imágenes, adjuntos, ficheros grandes. Van al disco por su hash, con la base guardando solo las referencias. También nivel 44.
  • Una caché: si es reconstruible, un directorio de ficheros suele ser más simple.

La señal de que sí hace falta: cuando te encuentras escribiendo código para mantener sincronizados dos ficheros, o para buscar recorriendo todo, o para no perder consistencia si algo falla a mitad. Eso es una base de datos escrita a mano y peor.