Cliente de sincronización ee-database - Documentación de Entity Enricher

cliente de sincronización ee-database

El cliente de aplicación de código abierto para bases de datos de esquema. Ejecútelo junto a su propio PostgreSQL, empareje una vez, y mantendrá esa base de datos convergente con sus enriquecimientos: arrancando desde una instantánea y luego aplicando un feed delta en vivo a través de un único WebSocket saliente. Su cadena de conexión nunca sale de su máquina.

Entity Enricherservidor · bandeja de salidaee-databasesu máquinaSu base de datosPostgres · MySQL · SQLitebatch · concesión 120saplicar — una transaccióncommitack la siguiente ventana se envía de inmediato

Cada instrucción está protegida por revisión, de modo que un lote reentregado converge a las mismas filas. Un error de SQL revierte el lote y se detiene: un delta corrupto nunca se omite de forma silenciosa.

El cliente extrae estado, no operaciones: cada delta transporta la(s) fila(s) actual(es) completa(s) de una entidad modificada como un INSERT … ON CONFLICT … DO UPDATE idempotente, de modo que el destino converge incluso si se omitió un lote.

¿Por qué el cliente de sincronización?

Las bases de datos de esquema se pueden consumir de varias formas: n8n, Make.com, MCP, webhooks sin procesar o el feed delta REST. El cliente de sincronización es la vía totalmente automatizada: lo que menos hay que construir y lo que menos se filtra.

Cero flujos de trabajo que construir

Sin escenario de n8n, sin cron, sin código de pegamento. Empareje una vez y arranca desde el snapshot; luego aplica cada delta a medida que llega.

Su DSN nunca sale de su máquina

La cadena de conexión se pasa por la línea de comandos o se almacena localmente con modo 600: nunca se envía a Entity Enricher. El cliente solo se conecta hacia el exterior.

Seguro ante reejecuciones por diseño

Cada delta es un upsert idempotente y protegido por revisión. Si el cliente falla a mitad de un lote, el lote se vuelve a entregar cuando expira su lease y volver a aplicarlo converge a las mismas filas.

Falla de forma visible, nunca en silencio

Un error de SQL revierte el lote, informa del delta fallido en la página Bases de datos y sale con código distinto de cero: un delta corrupto nunca puede omitirse en silencio.

Inicio rápido

Primero registre una base de datos en un esquema, luego empareje un cliente y ejecútelo junto a su base de datos.

  1. 1

    Registre una base de datos

    En la página Bases de datos, registre una base de datos en el esquema que desea reflejar y revise sus claves de base de datos. Consulte Bases de datos para ver el modelo completo. Este paso declara el dialecto de destino que aplicará el cliente.

  2. 2

    Instale el cliente

    Descargue un binario firmado desde Versiones, o compile desde el código fuente (Go ≥ 1.23).

    go build -o ee-database .

    El código fuente y las versiones firmadas están en TOT-Concept/ee-database (MIT).

  3. 3

    Empareje desde su navegador

    Ejecute ee-database pair. Se abre una pestaña del navegador en /database/connect con un código corto: confírmelo y elija qué base de datos debe sincronizar este cliente.

    ee-database pair --server https://entityenricher.ai
    
    Open this URL in your browser to confirm pairing:
       https://entityenricher.ai/database/connect?code=7QX-KP2
    
      Code: 7QX-KP2
    
    Waiting for confirmation...

    ¿Prefiere un token? Emita uno en la página Bases de datos (Sync client → Pair a client) y páselo directamente: ee-database pair --server … <refresh-token>.

  4. 4

    Ejecútelo junto a su base de datos

    En la primera ejecución, el cliente obtiene el snapshot .sql y lo aplica; luego se conecta y transmite los deltas. --save-dsn almacena la cadena de conexión localmente para que las ejecuciones posteriores no necesiten argumentos.

    ee-database run --dsn "postgres://user:pass@localhost:5432/mydb" --save-dsn

    «Junto a» significa adyacente en la red, no en el servidor de base de datos: cualquier máquina o contenedor que pueda alcanzar el DSN funciona — incluido PostgreSQL gestionado en la nube (Azure, OVHcloud, AWS RDS…), que normalmente exige TLS: …/mydb?sslmode=require.

Cómo funciona la entrega: lease y ack

Los deltas salen de Entity Enricher a través de una estricta bandeja de salida FIFO por base de datos. El servidor concede la ventana visible durante 120 segundos y la envía como un único lote; el cliente aplica todo el lote en una sola transacción y responde ack , lo que hace avanzar el cursor y activa la siguiente ventana de inmediato. Un cliente que falla a mitad de un lote queda cubierto por la expiración de la concesión y un reenvío por parte del servidor: nada se pierde ni se confirma dos veces.

Instantánea = delta desde cero

El arranque inicial y el estado estable comparten la misma ruta de código. Omita el arranque inicial con --skip-bootstrap si su base de datos ya está inicializada.

Protegido por revisión

Cada sentencia lleva un _sync_revision para que una fila más antigua nunca sobrescriba a una más reciente, incluso fuera de orden.

Detenerse ante un fallo

Un error de SQL almacena el id del delta fallido en la página Bases de datos → tarjeta del cliente de sincronización, y el proceso sale con código distinto de cero para que su supervisor lo reinicie.

Bases de datos y dialectos

El dialecto de destino queda fijado por el registro de la base de datos de esquema en Entity Enricher: el cliente aplica el SQL que el servidor genere. PostgreSQL es el dialecto de lanzamiento; los controladores de MySQL y SQLite ya vienen incluidos para cuando lleguen sus generadores de SQL. La aplicación de varias sentencias se gestiona por controlador (protocolo simple de pgx, multiStatements de MySQL y SQLite sin CGO).

Seguridad

Solo salida

El cliente inicia el WebSocket a través de :443/wss. El host de su base de datos nunca acepta conexiones entrantes: sin puertos que abrir ni ingress que configurar.

Una credencial, una base de datos, un cliente

Una credencial está vinculada a una única base de datos de esquema. Emparejar de nuevo la rota y expulsa instantáneamente la conexión activa anterior.

Tokens de acceso de corta duración

El token de actualización de 365 días (almacenado con modo 600) se intercambia por tokens de acceso de 15 minutos que autentican el WebSocket. Revocarlo en la interfaz desconecta un cliente activo en ~1 segundo.

Se recomienda privilegio mínimo

Ejecute el cliente con un rol de base de datos dedicado y limitado al esquema sincronizado, de modo que un token comprometido no pueda tocar nada más.

Referencia de la CLI

ComandoQué hace
ee-database pair --server URLEmparejamiento por código de dispositivo confirmado en el navegador. Elija qué base de datos sincronizar.
ee-database pair --server URL <token>Empareje con un token emitido en la página Bases de datos (compatible con entornos headless).
ee-database run --dsn DSN [--save-dsn] [--skip-bootstrap]Arranque desde la instantánea (salvo que se omita), luego conéctese y aplique los deltas.
ee-database run … --create-missingCree primero la base de datos de destino cuando no exista, usando las propias credenciales del DSN (postgres necesita CREATEDB; mysql, el privilegio CREATE; los archivos sqlite se crean automáticamente de todos modos).
ee-database run … --create-missing --admin-dsn DSNInicialice a través de una conexión de administrador todo lo que nombra el DSN de destino: el rol o usuario que falta (con la contraseña del DSN) y la base de datos de su propiedad. Así, el DSN de destino no necesita permisos de creación; el DSN de administrador nunca se almacena.
ee-database run --allSincroniza todas las bases de datos emparejadas de forma concurrente desde un solo proceso (cada una necesita un DSN guardado).
ee-database statusMuestra el estado del emparejamiento, la URL del servidor y las bases de datos emparejadas.
ee-database disconnectOlvida las credenciales locales de un emparejamiento. Revoque en el servidor desde la interfaz.
ee-database versionVersión para imprimir.

Las credenciales se almacenan en modo 600, un perfil por cada base de datos emparejada, en ~/.config/ee-database/profiles/ — empareje una vez por base de datos, y --database NAME selecciona una cuando hay varias emparejadas. ¿Prefiere no usar automatización alguna? El mismo feed también es REST plano: GET /api/databases//changes y luego POST /api/databases//ack — consulte Bases de datos.

Código abierto

El cliente tiene licencia MIT y reside en un repositorio público para que cualquiera pueda auditar exactamente qué se ejecuta contra su base de datos.

Código fuente: github.com/TOT-Concept/ee-database

Versiones: github.com/TOT-Concept/ee-database/releases — cada binario se firma antes de su publicación.