Usuário com melhor resposta
Gravar XML em mongodb

Pergunta
-
Bom dia.
Estou na etapa inicial do desenvolvimento de uma solução que necessita trabalhar com um grande fluxo de arquivos no formato XML.
Eu preciso armazenar estes arquivos e posteriormente, fazer sua leitura para geração de arquivos com seus dados. Dado que são vários arquivos XML, pensei em armazená-los em um banco de dados de arquivo, mongo-db, e quando precisar gerar os arquivos recupero os mesmos e processo.
- é viável fazer uso de um banco de dados neste formato, do ponto de vista que os dados no mongo são no formato Json, eu precisaria converter antes de gravar, ou seria mais simples converter no momento de recuperar o arquivo?
- considerando que o número de arquivos que será processado no momento do uso dos arquivos seja grande, ~400 arquivos, continua sendo viável?
Se alguem puder ajudar, agradeço.
Att,
Desenvolvedor - Senior
Respostas
-
MongDB nao é banco de dados de arquivo.. MongoDB (do "humongous") é uma aplicação de código aberto, de alta performance, sem esquemas, orientado a documentos.(fonte wikipedia)
Pode parecer mas existe uma diferença enorme... Pois bem, voce precisa armazenar varios documentos XML.. XML é só uma representaçao de uma estrutrura de dados em formato texto... assim como JSON
>- é viável fazer uso de um banco de dados neste formato, do ponto de vista que os dados no mongo são no formato Json, eu precisaria converter antes de gravar, ou seria mais simples converter no momento de recuperar o arquivo?
Depende.. voce vai precisar fazer algum tipo de pesquisa nesses XMLs armazenados? Ou vc vai ter algo do tipo ID + XMLfile?
Se voce precisar armazenar somente o arquivo XML vc pode usar o GRIDfs (http://docs.mongodb.org/manual/core/gridfs/) que transforma um arquivo em formato BSON (Json binario), mas este tera que ser recomposto antes de poder ser lido novamente...
Se voce precisar realizar consultas no XML arquivado, entao nao tem jeito... Converta o XML em JSON.. Existe dezenas de bibliotecas prontas que fazem isso, como esta daqui:
http://james.newtonking.com/projects/json/help/index.html?topic=html/ConvertingJSONandXML.htm
Note que a converaso é feita sem perdas nos dois sentidos (XML->Json, Json->XML)
>- considerando que o número de arquivos que será processado no momento do uso dos arquivos seja grande, ~400 arquivos, continua sendo viável?
400 arquivos de que tamanho? Lembre-se que existe um limite de 16MB por ducumento na versao de 64bits e 4MB na versao 32bits... mas 400 é praticamente nada. MongoDB foi pensado em administrar milhoes de documentos.
Agora se voce quiser somente armazenar XML existem Bases NOSQL especificas para isso, como o SEDNA
Parecido com o Mongo, mas baseado em XML ao inves de JSON.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
Sogi informatique ltée- Editado William John Adam TrindadeModerator sexta-feira, 14 de junho de 2013 13:57
- Marcado como Resposta Celso Marigo Junior sexta-feira, 14 de junho de 2013 13:59
Todas as Respostas
-
Não trabalho, nem nunca trabalhei com MongoDB, trabalho com SQL Server, mas sempre que se falava em armazenar arquivos, ele nem era cogitado para isso, e olha que o mesmo possui tipos específicos para tal.
Por que você não armazena em um diretório, em questões de performance seria melhor.
Você pode salvar um identificador na estrutura diretório/subdiretório/arquivo
Leandro
-
MongDB nao é banco de dados de arquivo.. MongoDB (do "humongous") é uma aplicação de código aberto, de alta performance, sem esquemas, orientado a documentos.(fonte wikipedia)
Pode parecer mas existe uma diferença enorme... Pois bem, voce precisa armazenar varios documentos XML.. XML é só uma representaçao de uma estrutrura de dados em formato texto... assim como JSON
>- é viável fazer uso de um banco de dados neste formato, do ponto de vista que os dados no mongo são no formato Json, eu precisaria converter antes de gravar, ou seria mais simples converter no momento de recuperar o arquivo?
Depende.. voce vai precisar fazer algum tipo de pesquisa nesses XMLs armazenados? Ou vc vai ter algo do tipo ID + XMLfile?
Se voce precisar armazenar somente o arquivo XML vc pode usar o GRIDfs (http://docs.mongodb.org/manual/core/gridfs/) que transforma um arquivo em formato BSON (Json binario), mas este tera que ser recomposto antes de poder ser lido novamente...
Se voce precisar realizar consultas no XML arquivado, entao nao tem jeito... Converta o XML em JSON.. Existe dezenas de bibliotecas prontas que fazem isso, como esta daqui:
http://james.newtonking.com/projects/json/help/index.html?topic=html/ConvertingJSONandXML.htm
Note que a converaso é feita sem perdas nos dois sentidos (XML->Json, Json->XML)
>- considerando que o número de arquivos que será processado no momento do uso dos arquivos seja grande, ~400 arquivos, continua sendo viável?
400 arquivos de que tamanho? Lembre-se que existe um limite de 16MB por ducumento na versao de 64bits e 4MB na versao 32bits... mas 400 é praticamente nada. MongoDB foi pensado em administrar milhoes de documentos.
Agora se voce quiser somente armazenar XML existem Bases NOSQL especificas para isso, como o SEDNA
Parecido com o Mongo, mas baseado em XML ao inves de JSON.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
Sogi informatique ltée- Editado William John Adam TrindadeModerator sexta-feira, 14 de junho de 2013 13:57
- Marcado como Resposta Celso Marigo Junior sexta-feira, 14 de junho de 2013 13:59