Tenho 35 milhões de documentos XML altamente estruturados, com um tamanho total de 500 GB. Um XSD está disponível para esses dados e o objetivo final é transformar os dados em um RDB. Todos os campos podem ser considerados varchar, número ou data; exceto talvez um ou dois campos CLOB. A estrutura XSD contém muitos relacionamentos 1-n e estruturas sub-aninhadas, portanto, é bastante complexa.
Os dados precisam ser carregados uma vez e, em seguida, transformados em um RDB uma vez, portanto, a velocidade das consultas de atualização/inserção é irrelevante. Além disso, a velocidade de carregamento/criação do índice não é tão importante, pois só precisa ser executada uma vez. Contanto que termine dentro de uma ou duas semanas, estou feliz.
No momento estou configurando o XMLDB registrando o XSD como Object Relational, com create objects e create tables configurados como true. Por enquanto, não adicionei nenhuma outra anotação significativa ao XSD e estou carregando apenas cerca de 50 MB de dados como teste. Estou usando todo um conjunto de consultas XMLTable/flwor para transformar os dados XML em tabelas RDB. Temo que escalar isso para 500 GB fará com que as consultas sejam executadas por toda a eternidade.
Como sou muito novo no XMLDB e há muitos ajustes e configurações possíveis na documentação do XMLDB, gostaria de saber se há alguns recursos/anotações/otimizações cruciais... devo procurar isso pode ter um impacto na velocidade geral das consultas finais ou em outras partes do processo.
Esta é uma pergunta muito ampla, mas qualquer dica é bem-vinda e, se houver mais informações que possam ser relevantes, pergunte!
Wouter obteve, esperançosamente, respostas úteis aqui:
https://community.oracle.com/message/12608939
Dito isto, sendo o Oracle ACE Director para esta tecnologia. Atualmente, a funcionalidade Oracle XMLDB está tão entrelaçada com o banco de dados Oracle que esta é uma funcionalidade OBRIGATÓRIA (instalação) para Oracle 12c e posteriores. É a base para muito no banco de dados, como segurança ACL, segurança do banco de dados, Database Vault, Oracle APEX, funcionalidade Multitenent, importação e exportação, DBMS_packages como DBMS_METADATA, implementações de desempenho Oracle (colunas AWR XMLtype etc etc), ferramentas DBA/Desenvolvedor como DB Expressar...
XML está (infelizmente?) em todo lugar hoje em dia. Para dar um exemplo, você está usando agora (ou seja, se você usa um celular...)