Approccio per lavorare con XML di grandi dimensioni - Oracle - Java - File

-1

Abbiamo un cliente che vuole una grande quantità di dati in formato XML. L'Xml è più o meno così:

Employee 
 |- Emp Criminal History
 |- Emp Address
    |- Address history  
 |- Emp Partner 
    |- Partner history    

Questa è una struttura eccessivamente semplificata e la struttura attuale è qualche altro livello annidato. La solita dimensione dei file con xml per un anno è di circa 100 MB

Con il sistema arcaico che abbiamo installato, il tomcat (server web) e il database (oracle) vivono su server diversi. La procedura in oracle prende una data da / a data e sputa un clob che si forma usando l'API di Oracle per creare xml. Ad esempio:

XMLSERIALIZE (
    XMLELEMENT( 
      XMLCONCAT(
       XMLAGG(

Per scrivere questi dati su disco sul server oracle è attivo, richiede molto tempo. Con l'architettura a cui sono legato, ho bisogno di una classe java per effettuare una chiamata a questo proc e quindi dal clob restituito da questo proc, analizzare ogni riga in modo che possa semplicemente scriverlo in un file xml. Ho eseguito un report per 6 mesi e conteneva circa 5 milioni di righe di xml che impiegavano circa 7 ore per essere eseguito (solo per scrivere dati sul disco sul server Oracle). L'ho eseguito durante la notte tramite una classe java e stamattina ho avuto un

java.lang.OutOfMemoryError: Java heap space

Mi manca ovviamente qualcosa.

Quali sono le cose che potrei seguire per ottenere il mio tempo di esecuzione a livelli ragionevoli, date le prestazioni ottimali delle query? Non ho idea dei benchmark per Oracle API - presumo dal momento che sono in giro da un po ', l'xml api non è un problema.

Java: 1.5. Oracle: 11.2

    
posta happybuddha 21.11.2018 - 02:51
fonte

0 risposte

Leggi altre domande sui tag