Un repository (in italiano deposito o ripostiglio) è un ambiente di un sistema informativo (ad es. di tipo ERP), in cui vengono gestiti i metadati, attraverso tabelle relazionali; l'insieme di tabelle, regole e motori di calcolo tramite cui si gestiscono i metadati prende il nome di metabase.
Architettura Repository
Si tratta di uno stile architetturale che può essere utilizzato come base di un'architettura software. I sottosistemi che compongono il software accedono e modificano una singola struttura dati chiamata appunto repository. I vari sottosistemi sono fra loro "relativamente indipendenti", in quanto interagiscono solo mediante il repository. Il flusso di controllo è dettato o dal repository, mediante un cambiamento dei dati in esso memorizzati, o dai singoli sottosistemi (flusso di controllo indipendente).
Vantaggi dell'architettura Repository
- Modo efficiente di condividere grandi mole di dati
- Un sottosistema non deve preoccuparsi di come i dati sono prodotti o usati dagli altri sottosistemi.
- Gestione centralizzata di backup, sicurezza, controllo di accesso e recovery da errori.
- Facile aggiungere nuovi sottosistemi.
Svantaggi dell'architettura Repository
- I sistemi devono concordare un modello per i dati di compromesso, il che potrebbe influire negativamente sulle prestazioni.
- L'adozione di un nuovo modello per i dati diventa difficile e costosa: deve essere modificato interamente il repository ed aggiornati tutti i sottosistemi.
- La centralizzazione di backup e sicurezza non permette di gestire possibili requisiti specifici di alcuni sottosistemi.
- È difficile distribuire efficientemente il repository su più macchine separate, continuandolo a vedere come logicamente centralizzato. Si verrebbero infatti a creare problemi di ridondanza e consistenza dei dati.