Mi vengono in mente tre soluzioni: EAV, XML e Sparse Columns. Quest'ultimo è specifico del fornitore e potrebbe non esserti utile.
Qualunque metodo tu scelga, potresti prendere in considerazione l'idea di memorizzare i dati della richiesta originale in un formato non elaborato, in una tabella o in un file flat. Semplifica il tentativo di provare nuovi modi di archiviare i dati, ti consente di ricaricare i dati se scopri un errore nel modo in cui analizzi le tue richieste e offre opportunità per analizzare le richieste API utilizzando l'elaborazione batch o "big data" strumenti se ritieni che il tuo data warehouse non sia in grado di gestire i dati in modo efficiente.
Considerazioni EAV
EAV / KVS, come descritto sopra, è probabilmente l'implementazione più semplice.
Sfortunatamente sarà anche molto costoso - per ottenere qualsiasi tipo di query efficiente sulle chiavi di uso comune dovrai avere indici sulla colonna chiave, che potrebbero essere molto frammentati. La richiesta di chiavi particolari sarebbe estremamente costosa.
Potresti essere in grado di ridurre il costo dell'indicizzazione o delle scansioni dell'indice supportando il tuo negozio EAV con visualizzazioni materializzate (molti fornitori supportano questo) per eseguire query su chiavi o valori che ti interessano.
XML
La maggior parte dei sistemi di database aziendali offre una gestione XML molto matura, tra cui convalida, indicizzazione e query sofisticate.
Caricare la richiesta API nel database come XML fornirebbe una tupla per richiesta, che logicamente potrebbe essere un po 'più appetibile per te che avere un numero sconosciuto di righe in una tabella EAV.
Se questo sia efficiente dipenderebbe molto dal tuo fornitore RDBMS e dalla tua implementazione.
Il più grande svantaggio è che questo è probabilmente l'unico modo per gestire i dati più complicato della manipolazione di stringhe della richiesta originale!
Colonne sparse / tabelle tradizionali
È possibile che tu possa caricare i tuoi dati in una struttura di tabella tradizionale, con una colonna per chiave.
La funzionalità Colonne sparse di SQL Server è un'ottima alternativa a un archivio EAV. Una tabella con colonne sparse si comporta in modo analogo a una tabella normale, tranne per il fatto che può avere fino a 30.000 colonne e i valori NULL nelle colonne sparse non occupano spazio nella tabella.
La loro combinazione con indici filtrati (un'altra caratteristica specifica di SQL Server) può fornire un'alternativa estremamente efficiente a un archivio EAV se si esegue frequentemente query per un paio di colonne e / o valori specifici.
L'utilizzo di una tabella tradizionale con altri fornitori può essere praticabile: IBM supporta oltre 700 colonne per tabella e Oracle circa 1000 e funzionalità come la compressione o il trattamento Oracle dei null finali potrebbero significare che è possibile archiviare i dati API in modo abbastanza efficiente.
L'ovvio svantaggio di questo approccio è che quando si aggiungono nuove chiavi all'API, è necessario modificare di conseguenza lo schema.