[Ror-es] Pasar una tabla en concreto a un sistema tipo CouchDB

Albert Callarisa
Thu Feb 18 09:52:03 GMT 2010


Los procesos son pesados pero sobretodo por el acceso a base de datos. El
coste computacional es bastante asequible con una cantidad de usuarios
decente. He hecho pruebas con 15000...

De todas maneras he englobado todo en una transacción y ha ido mucho más
deprisa, creo que de momento se quedará así ya que aguantará suficientes
usuarios. Cuando la aplicación funcione de verdad y empiece a llegar a un
límite prudencial ya me plantearé algun cambio, pero con la transacción ya
es aceptable.

Como tu decias, he hecho algunas pruebas locales con couchdb y si, los
insert/update no aportan ninguna mejora.

En el futuro, si necesito más, ya miraré como mejorarlo, pero creo que ya
serán temas de base de datos y no es cosa de esta lista jeje.

Gracias por la respuesta, Borja.



2010/2/18 Borja Martín 

> Buenas,
> tengo mis dudas de que vayas a ganar excesiva velocidad en los
> updates/inserts ya que donde realmente creo que podrías ganarla sería a la
> hora de recuperar los datos ya que couchdb usa internamente un árbol-b para
> guardar los documentos de las vistas, por lo que a la hora de crearlos
> deberá seguir manteniendo el árbol balanceado, pero vamos, sería cuestión de
> que te hagas tus propios benchmarks
> si son procesos tan pesados, a lo mejor lo que interesaría sería
> realizarlos de manera distribuida entre varias máquinas y así te tardarían
> menos aunque el 'esfuerzo' computacional sea el mismo, pero yo con estos
> temas ya me pierdo un poco
>
> Saludos
>
> 2010/2/18 Albert Callarisa 
>
>> Hola,
>>
>> Tengo una tabla en mi aplicación que relaciona cualquier cosa
>> (polimórfica) con productos y añade un atributo asociativo 'amount'.
>> La tabla tiene los siguientes campos: owner_id, owner_type, owner_field,
>> product_id y amount
>> el owner_field es porque un mismo owner (por ejemplo Construction) puede
>> tener varios conjuntos de productos (por ejemplo los que necesita para
>> construir y los que genera)
>>
>> En la aplicación tengo dos procesos periódicos que usan muchísimo esta
>> tabla, haciendo unos 30 inserts o updates por cada usuario y ésto puede
>> aumentar en función de los productos que tenga el usuario. He probado con
>> 15000 usuarios y el proceso pequeño me tarda 4 minutos. Lo quería lanzar
>> cada 5 minutos así que no es viable.
>>
>> Total, me he planteado pasar solamente esta tabla a couchdb porque me
>> parece que irá mucho más rápido el manejo de tantos cambios pero no estoy
>> del todo seguro. El cambió hará que no pueda hacer joins con esa tabla en el
>> SQL pero puedo hacerme una capa de código que trabaje con la tabla en el
>> couchdb. Tampoco soy ningún experto en couchdb, solo que tengo la impresión
>> de que iría mucho más rápido para hacer tantos inserts/updates
>>
>> Qué me recomendáis?
>>
>> Gracias.
>>
>> --
>> Albert Callarisa Roca
>> http://www.acroca.com
>>
>> _______________________________________________
>> Proudly free of Ruby Forum crossposting since 01/07/2009
>> Ror-es mailing list
>> 
>> 
>>
>>
>
>
> --
> def dagi3d(me)
>  case me
>    when :web then  "http://dagi3d.net"
>    when :twitter then "
>  end
> end
>
> _______________________________________________
> Proudly free of Ruby Forum crossposting since 01/07/2009
> Ror-es mailing list
> 
> 
>
>


-- 
Albert Callarisa Roca
http://www.acroca.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.simplelogica.net/pipermail/ror-es/attachments/20100218/ed2e809e/attachment.htm