Pergunta

Meu aplicativo cria dados que, no XML, seriam assim:

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

É assim que estou armazenando esses "recursos" agora. Um recurso por arquivo XML. Tantos "termo" por "recurso" conforme necessário. O problema é que precisarei gerar cerca de 2 milhões desses recursos. Gerei quase 500.000 e meu Mac não está muito feliz com isso. Então, minha pergunta é: como devo armazenar esses dados?

  • Um banco de dados? Isso seria difícil, porque a estrutura dos dados não é corrigida ...
  • Talvez mesclar alguns recursos em arquivos XML maiores?
  • ...?

Não preciso alterar os dados assim que forem criados. No momento, estou acessando um recurso específico com o nome do arquivo desse recurso.

Quaisquer sugestões são muito apreciadas!

Foi útil?

Solução

Nem todos os bancos de dados são relacionais. Dê uma olhada, por exemplo, MongoDB. Ele armazena seus dados como objetos do tipo JSON, semelhantes aos seus recursos.

Um exemplo usando o 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}]}

Outras dicas

Se você não pode prever como seus dados serão organizados, talvez http://couchdb.apache.org/ pode ser interessante para você. É um banco de dados sem esquema.

De qualquer forma, o XML talvez não seja a melhor opção para grandes dados de dados.

Talvez experimentar JSON ou YAML funcione melhor? Eles precisam de menos espaço e são mais fáceis de analisar (no entanto, não tenho experiência em usar esses formatos em maior escala. Talvez eu esteja errado).

Você deve ter vários recursos por arquivo XML, mas somente se você tiver todos os recursos alterados ao mesmo tempo. Se você precisar enviar apenas um punhado de recursos para qualquer pessoa, continue fazendo o XML individual.

Mesmo nessa situação, você pode manter o arquivo XML grande e gerar sob demanda os menores do conjunto de dados original.

O uso de um banco de dados como o SQLITE3 permitiria que você tivesse tempos de busca mais rápidos e manipulação mais fácil dos dados, usando a sintaxe do SQL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top