Client di sincronizzazione ee-database - Documentazione di Entity Enricher

client di sincronizzazione ee-database

Il client di applicazione open source per i database dello schema. Eseguilo accanto al tuo PostgreSQL, esegui l'associazione una volta, e manterrà quel database allineato con i tuoi enrichment — con bootstrap da uno snapshot, poi applicando un feed delta in tempo reale su un unico WebSocket in uscita. La tua stringa di connessione non lascia mai la tua macchina.

Entity Enricherserver · outboxee-databasela tua macchinaIl suo databasePostgres · MySQL · SQLitebatch · lease 120sapplica — una transazionecommitack finestra successiva inviata immediatamente

Ogni istruzione è protetta da revisione, quindi un batch riconsegnato converge sulle stesse righe. Un errore SQL annulla il batch e lo interrompe: un delta problematico non viene mai saltato silenziosamente.

Il client preleva stato, non operazioni: ogni delta trasporta la riga (o le righe) corrente completa di un'entità modificata come INSERT … ON CONFLICT … DO UPDATE idempotente, così la destinazione converge anche se un batch è stato perso.

Perché il client di sincronizzazione?

I database dello schema possono essere consumati in diversi modi — n8n, Make.com, MCP, webhook grezzi o il feed delta REST. Il client di sincronizzazione è il percorso completamente automatizzato: il meno da costruire e il meno da esporre.

Nessun workflow da costruire

Nessuno scenario n8n, nessun cron, nessun codice di collegamento. Abbinatelo una volta e si inizializza dallo snapshot, quindi applica ogni delta man mano che arriva.

Il tuo DSN non lascia mai la tua macchina

La stringa di connessione viene passata sulla riga di comando o memorizzata localmente in modalità 600 — non viene mai inviata a Entity Enricher. Il client si connette solo verso l'esterno.

Sicuro per il replay per costruzione

Ogni delta è un upsert idempotente e protetto da revisione. Se il client si interrompe a metà batch, il batch viene riconsegnato dopo la scadenza del suo lease e la riapplicazione converge sulle stesse righe.

Errori sempre segnalati, mai silenziosi

Un errore SQL annulla il batch, segnala il delta non riuscito nella pagina Database ed esce con codice diverso da zero — un delta problematico non può mai essere ignorato silenziosamente.

Avvio rapido

Registrate prima un database su uno schema, poi abbinate un client ed eseguitelo accanto al vostro database.

  1. 1

    Registrate un database

    Nella pagina Databases, registrate un database sullo schema che volete rispecchiare e verificatene le chiavi del database. Consultate Databases per il modello completo. Questo passaggio dichiara il dialetto di destinazione che il client applicherà.

  2. 2

    Installate il client

    Scaricare un binario firmato da Release, oppure compilare dal sorgente (Go ≥ 1.23).

    go build -o ee-database .

    Il codice sorgente e le release firmate si trovano su TOT-Concept/ee-database (MIT).

  3. 3

    Associa tramite il browser

    Eseguite ee-database pair. Si apre una scheda del browser su /database/connect con un codice breve: confermatelo e scegliete quale database questo client deve sincronizzare.

    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...

    Preferite un token? Emettetene uno nella pagina Databases (Sync client → Pair a client) e passatelo direttamente: ee-database pair --server … <refresh-token>.

  4. 4

    Eseguitelo accanto al vostro database

    Alla prima esecuzione il client recupera lo snapshot .sql e lo applica, quindi si connette e trasmette i delta in streaming. --save-dsn memorizza la stringa di connessione in locale, così le esecuzioni successive non richiedono argomenti.

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

    «Accanto» significa adiacente in rete, non sul server del database: funziona qualsiasi macchina o container in grado di raggiungere il DSN — incluso PostgreSQL gestito in cloud (Azure, OVHcloud, AWS RDS…), che di solito impone il TLS: …/mydb?sslmode=require.

Come funziona la consegna: lease e ack

I delta escono da Entity Enricher attraverso una rigorosa outbox FIFO per database. Il server concede in lease la finestra visibile per 120 secondi e la invia come un unico batch; il client applica l'intero batch in un'unica transazione e risponde ack , il che fa avanzare il cursore e attiva immediatamente la finestra successiva. Un client che si arresta a metà batch è coperto dalla scadenza del lease e da un nuovo invio lato server — nulla va perso o viene sottoposto a commit due volte.

Snapshot = delta da zero

Il bootstrap e lo stato a regime condividono lo stesso percorso di codice. Saltare il bootstrap con --skip-bootstrap se il database è già popolato.

Protetto da revisione

Ogni istruzione contiene un _sync_revision in modo che una riga più vecchia non sovrascriva mai una più recente, anche fuori ordine.

Interruzione in caso di errore

Un errore SQL memorizza l'id del delta non riuscito nella pagina Database → scheda del client di sincronizzazione, e il processo esce con codice diverso da zero affinché il supervisore lo riavvii.

Database e dialetti

Il dialetto di destinazione è determinato dalla registrazione del database dello schema in Entity Enricher — il client applica qualunque SQL il server generi. PostgreSQL è il dialetto iniziale; i driver MySQL e SQLite sono già inclusi in vista del rilascio dei rispettivi generatori SQL. L'applicazione di istruzioni multiple è gestita per singolo driver (protocollo semplice pgx, multiStatements di MySQL e SQLite senza CGO).

Sicurezza

Solo in uscita

Il client avvia il WebSocket su :443/wss. L'host del database non accetta mai connessioni in entrata — nessuna porta da aprire, nessun ingress da configurare.

Una credenziale, un database, un client

Una credenziale è associata a un singolo database dello schema. Un nuovo abbinamento la ruota ed elimina istantaneamente la connessione attiva precedente.

Token di accesso di breve durata

Il refresh token valido 365 giorni (memorizzato in modalità 600) viene scambiato con token di accesso da 15 minuti che autenticano il WebSocket. La revoca dall'interfaccia disconnette un client attivo entro ~1 secondo.

Consigliato il privilegio minimo

Eseguire il client con un ruolo del database dedicato e limitato allo schema sincronizzato, in modo che un token compromesso non possa toccare nient'altro.

Riferimento CLI

ComandoChe cosa fa
ee-database pair --server URLAbbinamento tramite device-code confermato dal browser. Scegliere quale database sincronizzare.
ee-database pair --server URL <token>Abbinatelo con un token emesso nella pagina Databases (adatto all'uso headless).
ee-database run --dsn DSN [--save-dsn] [--skip-bootstrap]Eseguire il bootstrap dallo snapshot (se non saltato), quindi connettersi e applicare i delta.
ee-database run … --create-missingCrea prima il database di destinazione se non esiste, utilizzando le credenziali del DSN stesso (postgres richiede CREATEDB, mysql il privilegio CREATE; i file sqlite vengono comunque creati automaticamente).
ee-database run … --create-missing --admin-dsn DSNInizializza tramite una connessione amministrativa tutto ciò a cui fa riferimento il DSN di destinazione: il ruolo/utente mancante (con la password del DSN) e il database di sua proprietà. Il DSN di destinazione non necessita quindi di alcun diritto di creazione; il DSN amministrativo non viene mai memorizzato.
ee-database run --allSincronizza tutti i database associati contemporaneamente da un unico processo (ciascuno richiede un DSN salvato).
ee-database statusMostra lo stato dell'associazione, l'URL del server e i database associati.
ee-database disconnectElimina le credenziali locali di un'associazione. Revoca lato server dall'interfaccia.
ee-database versionVersione per la stampa.

Le credenziali sono memorizzate in modalità 600, un profilo per ogni database associato, in ~/.config/ee-database/profiles/ — associare una volta per ciascun database, e --database NOME ne seleziona uno quando più database sono associati. Preferisce nessuna automazione? Lo stesso feed è disponibile come semplice REST: GET /api/databases//changes quindi POST /api/databases//ack — vedere Databases.

Open source

Il client è rilasciato con licenza MIT e risiede in un repository pubblico, così chiunque può verificare esattamente ciò che viene eseguito sul proprio database.

Sorgente: github.com/TOT-Concept/ee-database

Release: github.com/TOT-Concept/ee-database/releases — ogni binario è firmato prima della pubblicazione.