O XML é o melhor formato de intercâmbio de dados ao importar grandes quantidades de dados como uma rotina com script no PHP?
Pergunta
Se eu tiver 50.000 a 100.000 SKUs de produtos com informações que o acompanham, incluindo especificações e descrições, que precisam ser atualizadas regularmente (pelo menos uma vez por dia), o XML é o melhor caminho a percorrer como um formato de intercâmbio de dados? O aplicativo está escrito no PHP e estou pensando em simples as chamadas mysql nativas do PHP (em vez de usar ganchos de aplicativos para despejar dados no local apropriado no banco de dados). O servidor será baseado em Linux e eu terei acesso total à raiz. Sei que essa é uma pergunta bastante genérica, e é por isso que fiz o Wiki da comunidade - estou procurando uma abordagem geral que seja considerada as melhores práticas. Se importa, o aplicativo é magento.
Solução
Você deve definir os parâmetros do "melhor" para o seu cenário.
XML é detalhado, o que significa duas coisas
- Você pode fornecer muitos detalhes sobre os dados, incluindo metadados
- O arquivo file vai ser grande
A outra vantagem que você ganha com XML é a análise/seleção mais avançada "pronta para uso" com ferramentas como o XPath.
Mas existem muitos outros formatos que você pode escolher, cada um com sua própria vantagem e desvantagem
E vários outros.
O que quero dizer é que você precisa descobrir o que é importante para o seu sistema (velocidade? Suporte de personagem? Readabilidade humana?) E escolher um formato que será compatível para os dois lados.
Outras dicas
O único lado real para XML é que ele é muito detalhado. Os arquivos XML geralmente são muito grandes em comparação com outros formatos. A vantagem é que é relativamente fácil de ler (para pessoas) e analisar (para software). Com apenas 100k registros (sem saber o tamanho de cada registro), acho que iria com o XML.
O JSON ocupa muito menos espaço que o XML, embora o XML Compress muito bem. O XML também tem a vantagem de muitas bibliotecas e ferramentas maduras.
Se você trocar dados com fontes de terceiros, poderá validar o XML com um esquema. Você não tem isso para JSON.
Pessoalmente, acabo usando o XML na maioria das vezes. Se o espaço for um problema, aplico compactação GZIP aos dados XML.
Atualmente, uso o XML como formato de importação em um projeto de comércio eletrônico. Atualmente, possui mais de 10.000 produtos, atributos e descrições e irá atingir os dados rapidamente. Eu não tenho nenhuma outra escolha nesse assunto, no entanto.
Usar sabão seria uma alternativa viável para apenas receber o XML bruto (embora eu ache que isso aumentaria o custo de desempenho, pois o SOAP usa XML como o formato de mensagens de qualquer maneira), no entanto, você pode obter seus dados como tipo de php nativo, Como uma matriz que você pode passar diretamente para o seu dal para inserir no banco de dados, passando a necessidade de construir um objeto simpxml.