Scrivere una biblioteca per accedere ai dati DBMS persistenti: a cosa dovrei prestare attenzione?

2

Sto lavorando a questo progetto che, per determinati motivi, avrà bisogno di leggere i dati persistenti da un DBMS (*). I dati non sono oggetti serializzati con informazioni di classe, rappresentazione di puntatori ecc., È molto più "semplice": principalmente array di numeri interi o float e uno schema di persistenza più coinvolto per stringhe e blob binari. Si trova in una directory su disco con più file al suo interno. Il mio progetto è in C ++ e questa è la lingua che userò per eseguire il caricamento (il DBMS non è scritto in C ++, anche se potrebbe esserlo stato, la persistenza non ha "affinità linguistica").

Ora, potrei semplicemente scrivere un codice veloce e (un po ') sporco per le mie specifiche esigenze di recupero; ma stavo pensando di scrivere una libreria autonoma e flessibile, che avrebbe quindi consentito un'utilità leggera per l'ispezione / sbirciare i dati persistenti o l'esportazione dei dati in un altro formato, senza che fosse visualizzata l'intera app originale.

Poiché non ho ancora scritto questo tipo di libreria (ho rilasciato alcuni FOSS, ma non di questo tipo), speravo di ottenere qualche consiglio su come affrontare questo lavoro; come rendere l'interfaccia della libreria il più intuitiva e diretta possibile; e seguendo le migliori / migliori pratiche di altri codici di libreria di questo tipo.

Inoltre, più specificamente, so che Boost (e in futuro, lo standard C ++) ha un componente di serializzazione, e si potrebbe guardare a quello che sto facendo come una sorta di de-serializzazione selettiva - anche se una cosa semplicistica , dal momento che non esiste alcuna struttura di classi complesse che debba essere ricostruita, puntatori, ecc. Devo pensare a questo compito come a deserializzazione, o non sarebbe un modello utile?

Note:

  • È un'applicazione FOSS e sarà una libreria FOSS, quindi la licenza non è un problema e quindi l'accesso al codice sorgente.
  • Sono in contatto con gli sviluppatori principali, ma questo tipo di lavoro non è una priorità per loro, quindi non parteciperanno.

(*) - È MonetDB ei dati persistenti sono essenzialmente le colonne della tabella (e alcuni metadati su di essi ). Il formato non è ben documentato (in realtà, non è affatto documentato se non tramite la fonte).

    
posta einpoklum 22.11.2016 - 21:21
fonte

1 risposta

2

È un compito di deserializzazione. Ogni volta che recuperi i dati e crei o inizializzi oggetti utilizzando tali dati, si tratta di un tipo di deserializzazione. Più puoi nascondere i dettagli del formato dei dati, meglio è, molto probabilmente.

Questo non significa che devi necessariamente usare Boost. La risposta corretta probabilmente dipende da più informazioni di quelle che puoi pubblicare qui. È una domanda troppo ampia.

    
risposta data 23.11.2016 - 23:41
fonte