Domanda

La mia applicazione crea pezzi di dati che, in XML, sarebbe simile a questa:

<resource url="someurl">
   <term>
      <name>somename</name>
      <frequency>somenumber</frequency>
   </term>    
   ...
   ...
   ...
</resource>

Questo è come mi sto memorizzazione di queste "risorse" ora. Una risorsa per file XML. Come molti "termine" per "risorsa", se necessario. Il problema è, avrò bisogno di generare circa 2 milioni di queste risorse. Ho generato quasi 500.000 e il mio Mac non è molto felice. Quindi la mia domanda è: Come devo conservare questi dati

  • Un database? che sarebbe difficile, perché la struttura dei dati non è fisso ...
  • Forse si fondono alcune risorse in file XML più grandi?
  • ...

Non ho bisogno di cambiare i dati una volta che è stato creato. In questo momento sto l'accesso a una risorsa specifica con il nome di file di risorse.

Tutti i suggerimenti sono molto apprezzate!

È stato utile?

Soluzione

Non tutti i database sono relazionali. Date un'occhiata a, per esempio MongoDB . Memorizza i dati come oggetti JSON-simili, simili alle vostre risorse.

Un esempio usando la shell:

$ mongo
> db.resources.save({url: "someurl", 
                     terms: [{name: "name1", frequency: 17.0},
                             {name: "name2", frequency: 42.0}]})
> db.resources.find()
{"_id" :  ObjectId( "4b00884b3a77b8b2fa3a8f77"), 
 "url" : "someurl" , 
 "terms" : [{"name" : "name1" , "frequency" : 17},
            {"name" : "name2" , "frequency" : 42}]}

Altri suggerimenti

Se il vostro non è possibile prevedere come i dati sta per essere organizzato, forse http: //couchdb.apache. org / può essere interessante per voi. Si tratta di una base di dati dello schema-less.

In ogni modo, XML non è forse la scelta migliore per la grande amout di dati.

Forse cercando JSON o YAML lavora fuori meglio? Hanno bisogno di meno spazio e sono più facili da analizzare (non ho però alcuna esperienza sull'uso di tali formati su scala più ampia. Forse mi sbaglio).

Si dovrebbe diverti granché avere diversi resourses per file XML, ma solo se si aspetta di avere tutte le risorse toguether allo stesso tempo. Se è necessario inviare solo una manciata di resourses a nessuno, quindi continuare a fare l'XML individuale.

Anche in quella situazione, si potrebbe tenere il file XML di grandi dimensioni, e generare a richiesta quelli più piccoli dal set di dati originale.

Utilizzando un database come SQLite3 permetterebbe di avere più veloci i tempi di ricerca e una più facile manipolazione dei dati, utilizzando la sintassi SQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top