Controladores

Controlador SQLite

Esta documentación explica la implementación del controlador SQLite y cómo los parámetros de conexión se corresponden con los campos de la interfaz de usuario en la aplicación Gigantic.

Parámetros de Conexión

Campo UIImplementación TécnicaDescripciónRequeridoValor por Defecto
Ruta de la Base de Datosdb en la configuración de sqliteLa ruta del archivo a la base de datos SQLiteNinguno (debe ser especificado)

Detalles Técnicos

La implementación del controlador SQLite utiliza la biblioteca Node.js sqlite3 con funcionalidad de envoltura asíncrona personalizada para las conexiones SQLite.

Aspectos técnicos clave:

  • La conexión se realiza directamente a una ruta de archivo en lugar de a una base de datos en red
  • Utiliza sentencias PRAGMA para la extracción de metadatos (table_info, foreign_key_list)
  • La extracción de esquemas incluye nombres de tablas, información de columnas y tipos de datos
  • La generación de DDL utiliza el campo sql de la tabla sqlite_master
  • Las relaciones de clave foránea se detectan consultando PRAGMA foreign_key_list
  • No se requiere autenticación para los archivos SQLite (acceso al sistema de archivos)
  • Utiliza clases de envoltura asíncronas para proporcionar una interfaz basada en Promesas a sqlite3

Proceso de Conexión

Las conexiones SQLite se realizan utilizando una ruta de archivo:

  1. El controlador toma como entrada una ruta de archivo de base de datos
  2. Abre el archivo de base de datos SQLite utilizando la biblioteca sqlite3
  3. El agrupamiento de conexiones no es aplicable ya que SQLite utiliza bloqueo a nivel de archivo

Opciones de Autenticación

Tipo de AutenticaciónMapeo UIDescripción
NingunaÚnica opción disponibleNo se necesita autenticación para los archivos SQLite

Nota: El controlador SQLite no requiere autenticación ya que trabaja directamente con archivos en el sistema de archivos.

Endpoints de API Utilizados

Las conexiones SQLite se utilizan principalmente en:

  • Creación de Tap (descubrimiento de fuente de datos desde archivos SQLite)
  • Creación de Sink (destino de datos para datos anonimizados como archivos SQLite)
  • Ejecución de Pipeline (extracción de datos desde y carga hacia archivos SQLite)

Dependencia de Controlador Node.js

El controlador SQLite depende de la biblioteca Node.js sqlite3:

  • Biblioteca: sqlite3
  • Propósito: Conectarse a archivos de base de datos SQLite
  • Características: Acceso a bases de datos basado en archivos, soporte PRAGMA, sentencias preparadas

Parámetros Personalizados

El controlador SQLite soporta parámetros personalizados adicionales que pueden especificarse en formato YAML para ajustar finamente el comportamiento y las opciones de rendimiento de la conexión a la base de datos.

Parámetros de Conexión a la Base de Datos

# Parámetro básico de conexión
path: "/ruta/a/la/base/de/datos.db"
 
# Banderas de Modo de Conexión
mode:
  - OPEN_READWRITE  # Abrir base de datos en modo lectura-escritura
  - OPEN_CREATE     # Crear base de datos si no existe
  - OPEN_READONLY   # Abrir base de datos en modo solo lectura
 
# Opciones de Comportamiento de la Base de Datos
timeout: 5000  # Tiempo de espera de consulta en milisegundos
retry: 3       # Número de intentos de reintento para base de datos bloqueada

Parámetros de Rendimiento y Optimización

# Configuración de Caché
cacheSize: 2000   # Número de páginas a cachear (negativo = KB, positivo = páginas)
pageSize: 4096   # Tamaño de página en bytes para la base de datos
 
# Modo Sincrónico
synchronous: "NORMAL"  # Opciones: OFF, NORMAL, FULL, EXTRA
 
# Modo Diario
journalMode: "WAL"  # Opciones: DELETE, TRUNCATE, PERSIST, WAL, MEMORY, OFF
 
# Modo de Bloqueo
lockingMode: "NORMAL"  # Opciones: NORMAL, EXCLUSIVE
 
# Modo de Transacción
transactionMode: "IMMEDIATE"  # Opciones: DEFERRED, IMMEDIATE, EXCLUSIVE

Parámetros de Seguridad

La configuración de seguridad para SQLite se maneja principalmente a través del sistema de archivos del sistema operativo, ya que SQLite no tiene un mecanismo de autenticación integrado. Las configuraciones relevantes se centran en la validación de conexiones y manejo de archivos.