none
Gravar XML em mongodb RRS feed

  • 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

    terça-feira, 4 de junho de 2013 15:02

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

    http://www.sedna.org/

    Parecido com o Mongo, mas baseado em XML ao inves de JSON.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    sexta-feira, 14 de junho de 2013 13:56
    Moderador

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

    terça-feira, 11 de junho de 2013 02:56
  • 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

    http://www.sedna.org/

    Parecido com o Mongo, mas baseado em XML ao inves de JSON.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    sexta-feira, 14 de junho de 2013 13:56
    Moderador