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

Albert Callarisa
Thu Feb 18 13:54:15 GMT 2010


Gracias a todos por las respuestas.

Creo que el uso de couch o mongo no me aportará una mejora notable como para
que el esfuerzo de mover una tabla a un sistema así valga la pena. Creo que
de momento lo mejor será tirar así y si algun dia llego a una cantidad
grande de usuarios (15000 los aguantaré bien) entonces ya buscare
alternativas, ya sea tocando la base de datos o modificando un poco la
funcionalidad para no concentrarlo todo en un solo momento.

Gracias y un saludo.

2010/2/18 Albert Llop 

> Había leido mal y pensaba que hablabas de mongodb. Si quieres mejorar
> performance tengo entendido que mucho mucho mucho más rápido Mongo que
> Couch. Los colegas de Xing (en la presentación de la conferencia rails) en
> los benchmarks ponían a couch db bastante más lento que un mysql normal.
> Mongo db estaba por el estilo. Pasar a una BD no relacional no creo que te
> aporte ninguna mejora de performance, solo de escalabilidad pero... no creo
> que tu problema ande por ahí.
>
> En cualquier caso, el optimizar la tarea para que vaya más rápido no creo
> que te ayude a que el tema sea escalable. Si ahora tarda 4mins con 15.000
> usuarios, y lo optimizas a que tarde 1min, cuando llegues a los 60.000 ,
> estarás igual. Eso si es que el tiempo crece lineal y no exponencialmente.
> El tema sería hacer cálculos distribuidos, o simplemente intentar eliminar
> el tema de cálculos periódicos, o tener algo en plan "ir calculando
> constantemente al ritmo que pueda".
>
> Una ida de olla que supongo que no hará falta es calcular los valores
> dinámicamente. Guardar un campo DateTime y el valor que tenía en ese punto
> concreto, y a la hora de usarlo calcular su valor "actual" como el valor +/-
> lo que tendría que haber aumentado desde entonces. Con esto puedes
> actualizar el valor periódicamente, pero no es crítico.
>
> Vamos, solo una idea.
> Ánimo Albert!
> --
> { :name => "Albert Llop" }
>
>
> 2010/2/18 Marcelino Llano 
>
> echadle un vistazo a mongodb[1]
>> mejor documentado, integrado y creo que en general mejor solución
>> yo probé CouchDB hace unos meses y me pareció por terminar
>> no sé ahora
>>
>> [1] http://www.mongodb.org/display/DOCS/Home
>>
>> El 18/02/2010, a las 10:42, Borja Martín escribió:
>>
>> 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
>> 
>> 
>>
>>
>>
>>
>> Marcelino Llano
>> 
>>
>> Por favor, no imprimas este email o sus adjuntos si no es necesario.
>> Please, do not print this email or its attachments if it is not necessary.
>>
>>
>> _______________________________________________
>> Proudly free of Ruby Forum crossposting since 01/07/2009
>> Ror-es mailing list
>> 
>> 
>>
>>
>
> _______________________________________________
> 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/147f6f41/attachment.htm