Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » Bases de Datos » Aprovechamiento de conexiones Responder al tema
Nuevo tema


Página 1 de 1  [ 2 mensajes ] 
 
Nota 2008-11-24 04:36 @233

Perlero Nuevo
Registrado: 2008-10-29 10:25 @475
Mensajes: 36
Aprovechamiento de conexiones
Hola,
soy nueva en el foro. Fui una perl(a) hace muchos años y ahora vuelvo a las andadas.
Mi duda es la siguiente:
Tengo un perl que se conecta a dos bases de datos, una Oracle y otra Essbase.
Depende de lo que lea en Oracle ejecutará en Essbase una tarea u otra (pueden llegar a ser hasta 8 tareas).

Idealmente la mejor solución que se me ocurre es:
--abrir conexiones a ambas bases de datos
--seleccionar el tipo de tareas a realizar
--ejecutar las tareas
--desconectar de bases de datos

--ejecutar las tareas ---> es aquí donde viene el problema,
se supone que cada tarea puede llevar hasta 15 minutos, por lo tanto hacerlo en secuencial me parece poco eficiente....

Yo nunca he trabajado con tareas paralelas en perl, leyendo el CPAN que tampoco conocía he visto lo del fork() y tal...
No sé, me parece que no debo usar el CPAN para una solución de un cliente que quizá no quiera nada con el CPAN donde creo haber entendido que cada uno es responsable del código que se baja...

En fin, que necesito asesoramiento para poder optar por la mejor opción, pero sobre todo que no me complique la vida a mi como programadora :),

Mis preguntas serían,
¿debo usar el fork() del CPAN si o si?
¿no tendré problemas varios usando perl con tareas en paralelo?
¿debería optar por una solución secuencial o quizá hay otra forma de implementar paralelismo en perl (sin CPAN)?

¡Ups me olvidaba!, lo he titulado "aprovechamiento de conexiones" porque todas estas preguntas vienen al intentar aprovechar las conexiones pero otra solución en caso de no utilizar las mismas conexiones podría ser:

1 Programa perl:
conecta a bd Oracle
selecciona lista de tareas
desconecta bd Oracle
inicia programas para cada tarea (hasta 8 perl)

2 programa tarea 1
conecta a bd Essbase
ejecuta comandos
desconecta de bd Essbase

3 programa tarea 2
conecta a bd Essbase
ejecuta comandos
desconecta de bd Essbase

y así... hasta 8 dependiendo de la select inicial...

¿¿¿Opinión al respecto???

Espero haberlo explicado bien,
Gracias,
Mercedes


Nota 2008-11-24 06:53 @328
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10216
Re: Aprovechamiento de conexiones
Bienvenida a los foros de Perl en Español, Moraita.

Moraita escribió:
Tengo un perl que se conecta a dos bases de datos, una Oracle y otra Essbase.
Depende de lo que lea en Oracle ejecutará en Essbase una tarea u otra (pueden llegar a ser hasta 8 tareas).

Idealmente la mejor solución que se me ocurre es:
--abrir conexiones a ambas bases de datos
--seleccionar el tipo de tareas a realizar
--ejecutar las tareas
--desconectar de bases de datos

--ejecutar las tareas ---> es aquí donde viene el problema,
se supone que cada tarea puede llevar hasta 15 minutos, por lo tanto hacerlo en secuencial me parece poco eficiente....

Pero es que depende de otro factor más importante: el hardware y sistema operativo donde corre el motor de base de datos. Si, por ejemplo, el servidor de base de datos solo tiene un procesador, da igual si le mandas 8 tareas de forma simultánea: tardará lo mismo que si se lo mandas uno a uno (bueno, en realidad, tardará más, por aquello del cambio de contexto entre tareas).

Debes primero saber las limitaciones físicas y lógicas de tu servidor de base de datos. Cuántos procesadores o núcleos y cuántas peticiones simultáneas es capaz de soportar.

Si, llegado al extremo, es capaz de soportar todas las peticiones que necesitas ejecutar, una buena manera de hacer peticiones simultáneas es usando fork() o procesos independientes, claro.


Moraita escribió:
Yo nunca he trabajado con tareas paralelas en perl, leyendo el CPAN que tampoco conocía he visto lo del fork() y tal...

El fork() no es de CPAN, sino que es una primitiva del lenguaje. Y depende del sistema operativo en donde te encuentres, para que funcione bien o de forma simulada.

En CPAN, además, hay muchos módulos que ayudan y simplifican su uso. Por ejemplo los de la familia Parallel::.

Moraita escribió:
No sé, me parece que no debo usar el CPAN para una solución de un cliente que quizá no quiera nada con el CPAN donde creo haber entendido que cada uno es responsable del código que se baja...

¡Ah! Entonces también pondrán pegas cada vez que te actualices las DLL de .Net y las librerías Java...

Espero que alguien con más experiencia en Oracle te pueda dar mejores consejos...

Oracle Parallel Processing

_________________
JF^D Perl programming


Responder al tema  [ 2 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO