Analizar XML grande con Nokogiri

Así que estoy intentando analizar un archivo XML de más de 400k usando Nokogiri.

El archivo XML tiene este formato básico:

<?xml version="1.0" encoding="windows-1252"?>
<JDBOR date="2013-09-01 04:12:31" version="1.0.20 [2012-12-14]" copyright="Orphanet (c) 2013">
 <DisorderList count="6760">

  *** Repeated Many Times ***
  <Disorder id="17601">
  <OrphaNumber>166024</OrphaNumber>
  <Name lang="en">Multiple epiphyseal dysplasia, Al-Gazali type</Name>
  <DisorderSignList count="18">
    <DisorderSign>
      <ClinicalSign id="2040">
        <Name lang="en">Macrocephaly/macrocrania/megalocephaly/megacephaly</Name>
      </ClinicalSign>
      <SignFreq id="640">
        <Name lang="en">Very frequent</Name>
      </SignFreq>
    </DisorderSign>
  </Disorder>
  *** Repeated Many Times ***

 </DisorderList>
</JDBOR>

Aquí está el código que he creado para analizar y devolver cada identificación y nombre de DisorderSign en una base de datos:

require 'nokogiri'

sympFile = File.open("Temp.xml")
@doc = Nokogiri::XML(sympFile)
sympFile.close()
symptomsList = []

@doc.xpath("////DisorderSign").each do |x|
    signId = x.at('ClinicalSign').attribute('id').text()      
    name = x.at('ClinicalSign').element_children().text()
    symptomsList.push([signId, name])
end

symptomsList.each do |x|
    Symptom.where(:name => x[1], :signid => Integer(x[0])).first_or_create
end

Esto funciona perfectamente en los archivos de prueba que he usado, aunque eran mucho más pequeños, alrededor de 10000 líneas.

Cuando intento ejecutar esto en el archivo XML grande, simplemente no termina. Lo dejé encendido de la noche a la mañana y parecía que solo se había cerrado. ¿Hay alguna razón fundamental por la que el código que he escrito haga que esta memoria sea muy intensiva o ineficiente? Me doy cuenta de que almaceno todos los pares posibles en una lista, pero eso no debería ser lo suficientemente grande como para llenar la memoria.

Gracias por cualquier ayuda.

Respuestas a la pregunta(4)

Su respuesta a la pregunta