Confronto: PgArachne vs. PostgREST
| Funzionalità | PgArachne (+ Funzioni Universali) | PostgREST |
|---|---|---|
| Velocità di configurazione | Alta. Le funzioni universali permettono CRUD istantaneo simile a PostgREST. | Alta. Genera automaticamente endpoint per tutte le tabelle. |
| Flessibilità logica | Illimitata. Capacità di combinare CRUD universale con funzioni RPC specifiche. | Limitata. La maggior parte della logica deve risiedere nei filtri URL o nelle Viste del Database. |
| Gestione degli schemi | Nativa. Accesso via schema.funzione. | Piatta/Globale. Richiede il cambio di profili negli header HTTP per cambiare schema. |
| Astrazione | Opzionale. Puoi esporre i dati direttamente (proxy) o incapsularli in modo sicuro. | Bassa. L’API è essenzialmente uno specchio dello schema del database. |
| Pronto per AI e LLM | Estrema. JSON-RPC e capacità di definire funzioni «Tool» specificamente per agenti AI. | Media. L’AI deve lottare con la sintassi rigida dei parametri URL. |
| File statici | Sì. Serve HTML/JS/CSS direttamente da un singolo binario. | No. Devi configurare e gestire un Nginx esterno davanti ad esso. |
| Tempo reale (SSE) | Sì. Endpoint SSE integrato per PostgreSQL NOTIFY. | No. Richiede wiring dedicato (LISTEN/NOTIFY + servizio separato). |
| Supporto Multi-Database | A livello di server (N:1). Una singola istanza di PgArachne si connette al server (IP:Porta) e può servire tutti i database ospitati lì. | Per Database (1:1). Un’istanza è legata a un database specifico. Servire più database richiede l’esecuzione di più istanze su porte diverse. |
| Autenticazione | JWT e Chiavi API. Supporta nativamente entrambi i mondi. | Principalmente JWT. |
| Rate limiting | Sì. Limite di login integrato (configurabile). | No. Richiede proxy o middleware esterno. |
Perché «PgArachne Ibrido» è il Vincitore?
Grazie alle Funzioni Universali (che agiscono come un emulatore), ottieni il meglio di entrambi i mondi:
- Fase di Avvio (MVP): Distribuisci PgArachne con poche funzioni proxy (come quelle in
universal_table_access.sql) e in pochi minuti hai un’API funzionale per tutte le tabelle. In questa fase, si comporta esattamente come PostgREST. - Fase di Produzione: Man mano che l’applicazione cresce, inizia a scrivere funzioni
dedicate per operazioni sensibili (es.
process_payment). Questo aumenta la sicurezza e le prestazioni senza cambiare lo stack tecnologico sottostante. - Frontend e AI: Allo stesso tempo, la tua applicazione gira sulla stessa porta dell’API (grazie al servizio di file statici) e gli agenti AI possono chiamare le tue funzioni direttamente via JSON-RPC.
Nota: Le «Funzioni Universali» sono un set di funzioni PL/pgSQL standard che puoi aggiungere al tuo database per abilitare operazioni generiche di Lettura, Creazione, Aggiornamento ed Eliminazione su qualsiasi tabella.