Hola, voy entre lineas...

2008/7/3 Pablo A. Allois <[EMAIL PROTECTED]>:
> Diego,
>
> Te hago un par de preguntas antes.
>
> Realmente necesitas transacciones ?

Si, por lo menos en alguna parte... imagina que importo facturas e
items, no puedo dejar un factura con la mitad de los items si falla.
Lo que no me molesta mucho es que se importe solo una parte de los
datos si falla, si esos datos no estan relacionados.

> Que volumen de datos estas manejando ?

Puede variar mucho, pero el maximo que suponemos que pueden llegar a
poner esta entre 200.000 y 300.000 filas en el csv. Es es 50.000
usuarios y cada uno con algunas relaciones. Igual en casos normales
deberia ser 20 veces menos que eso, pero tenemos que aunque sea pensar
en eso.

> Los datos que traes y los que actualizas ... los podes relacionar alguna
> columna que sea clave unica, no ?

No completamente unica, depende de la configuracion (ej: el usuario
puede decidir hacer el match por nombre)

>
>
> Saludos!
>
>
> -----Mensaje original-----
> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Diego Jancic
> Enviado el: Jueves, 03 de Julio de 2008 02:40 p.m.
> Para: [EMAIL PROTECTED]
> Asunto: [dbms] Proceso sin bloqueos
>
> Hola,
>
> Leonardo: Creo que corte la explicacion por la mitad, lo que quiero
> hacer es meter todo dentro de una transaccion, y como la transaccion
> bloquea la tabla que usa mientras esta activa (la transaccion) me va a
> bloquear a todos los usuarios que quieran usar esta tabla.
>
> Hernan: Parece buena idea, a excepcion de performance. Para hacer lo
> que decis deberia usar un cursor o algo asi y creo que va a ser medio
> lento...
> Igual se me ocurre que podria hacer lo mismo que tengo ahora pero
> usando un TOP n y corriendolo varias veces (es decir, hacerlo en
> batches mas pequeños)
> Creo que de esa forma podria "calibrar" el tiempo que se bloquea, para
> equilibrar velocidad de import versus tiempo de tabla bloqueada.
>
> Gracias!
> Diego
>
> 2008/7/3 Hernán Zaldívar <[EMAIL PROTECTED]>:
>> Siempre que hagas un bulk va a bloquear todo y es por proteccion... si le
> sacas el bloqueo se pueden producir errores no muy buenos...
>>
>> Y si actualizas uno a uno en vez de bulk? Uno a uno va bloqueando de a un
> registro a la vez y soltandonlo cuando lo termina de usar.. esto es rapido
>>
>> -----Mensaje original-----
>> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Leonardo
> Micheloni
>> Enviado el: Jueves, 03 de Julio de 2008 2:13 p.m.
>> Para: Hernán Zaldívar
>> Asunto: [dbms] Proceso sin bloqueos
>>
>> Hola Diego,
>>  No entiendo qué querés decir con "bloquear toda la aplicación web"
>>
>> On Thu, Jul 3, 2008 at 1:04 PM, Diego Jancic <[EMAIL PROTECTED]> wrote:
>>> Hola gente!,
>>> Tengo un problema (posiblemente de diseño), tengo una app web que
>>> permite importar algunas cosas (usuarios, permisos, etc) desde csv. Ya
>>> esta funcionando todo en un proceso aparte, lo que se hace es:
>>> 1 - importar cada linea del csv a una tabla temporal, sin hacer mucho
>>> procesamiento
>>> 2 - ejecutar bulk inserts para los nuevos usuarios
>>> 3 - ejecutar bulk updates para actualizar los usuarios existentes
>>> 4 - ejecutar bulk inserts para los nuevos permisos
>>> 5 - ejecutar bulk updates para actualizar los permisos existentes
>>> 6 - ....
>>>
>>> Como puedo hacer para ejecutar los pasos 2, 3, 4, 5, ..., n sin
>>> bloquear a toda la aplicacion web ?
>>> Posiblemente tarde poco el import, pero bloquear todo durante algunos
>>> segundos no es muy bueno que digamos...
>>>
>>> Alguna idea?
>>>
>>> Gracias,
>>> Diego
>>>
>>>
>>
>>
>>
>> --
>> Leonardo Micheloni.
>> Ayudando a organizar las primeras jornadas ágiles de Latinoamérica
>>
>> http://agiles2008.org/
>>
>> Blog Personal
>>
>> http://leomicheloni.blogspot.com/
>>
>>
>>
>
>
>
>
>

Responder a