Attualmente sto usando JSON (compresso tramite gzip) nel mio progetto Java, nel quale ho bisogno di memorizzare un gran numero di oggetti (centinaia di milioni) su disco. Dispongo di un oggetto JSON per riga e non consente interruzioni di riga all'interno dell'oggetto JSON. In questo modo posso eseguire lo streaming dei dati fuori linea per riga senza dover leggere l'intero file in una sola volta.Alla ricerca di un formato di serializzazione fortemente digitato, multi-lingua, veloce, veloce
Si scopre che l'analisi del codice JSON (utilizzando http://www.json.org/java/) è un sovraccarico maggiore rispetto a quello di estrarre i dati non elaborati dal disco o decomprimerlo (cosa che faccio al volo).
Idealmente, quello che mi piacerebbe è un formato di serializzazione fortemente tipizzato, dove posso specificare "questo campo oggetto è un elenco di stringhe" (ad esempio), e poiché il sistema sa cosa aspettarsi, può deserializzarlo velocemente. Posso anche specificare il formato semplicemente dando a qualcun altro il suo "tipo".
Dovrebbe anche essere multipiattaforma. Io uso Java, ma lavoro con persone che usano PHP, Python e altri linguaggi.
Quindi, per ricapitolare, dovrebbe essere:
- fortemente tipizzato
- streamable (cioè leggere un po 'di file a poco senza dover caricare tutto in RAM in una sola volta.)
- piattaforma Croce (tra cui Java e PHP)
- veloce
- libera (come nel discorso)
Eventuali puntatori?
Se estrarre i dati grezzi dal disco è più veloce, perché non farlo? Perché scherzare con JSON se è più lento? –
Ok, quindi analizzare il json è più lento della decompressione o della lettura dei dati dal disco. E allora? È troppo lento per quello che devi fare? O stai ottimizzando solo per il gusto di farlo? – Breton
Breton: è troppo lento per quello che devo fare, non è un'ottica prematura. – sanity