Tengo un script de ruby leyendo una tabla enorme (~ 20m filas), haciendo un poco de procesamiento y llevándolo a Solr para fines de indexación. Esto ha sido un gran cuello de botella en nuestro proceso. Estoy planeando acelerar las cosas aquí y me gustaría lograr algún tipo de paralelismo. Estoy confundido acerca de la naturaleza multithreading de Ruby. Nuestros servidores tienen ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux]
. Desde this blog post y this question at StackOverflow, es visible que Ruby no tiene un enfoque de enhebrado múltiple "real". Nuestros servidores tienen múltiples núcleos, por lo que usar parallel gem parece ser otro enfoque para mí.Programación de Ruby Parallel/Multithread para leer la gran base de datos
¿Qué enfoque debo seguir? Además, cualquier entrada en sistemas paralelos de lectura de bases de datos sería muy apreciada.
¿Cómo se accede a la base de datos? ¿Puedes mostrarnos algún código? –
Utilizo mysql gem para obtener N (~ 500) registros a la vez utilizando el límite de MySQL, los parámetros de compensación. Procesar por lotes y alimentarlos por lotes a Solr. ¿Se necesita más información? –