[pyar] Django y CouchDB, ¿cómo pensarlo?
Mariano Guerra
mariano en marianoguerra.org
Jue Feb 14 13:35:52 ART 2013
Quoting Andrés Gattinoni (2013-02-14 15:55:32)
> 2013/2/12 Martin Albisetti <argentina en gmail.com>
>
> En Ubuntu One fuimos uno de los primeros en usar CouchDB a gran
> escala
>
> Muchas gracias por este, y por los demás comentarios de todos! Me han dado
> mucho para pensar!
>
> Definitivamente no estoy casado con CouchDB, fue una primera opción porque me
> resultaba cómodo el tema de almacenar todo en JSON. Pero voy a explorar otros
> motores a ver si alguno me convence más.
>
> De todas formas, el escenario que estoy pensando no va a necesitar escalar
> mucho. Incluso haciéndolo con MySQL, seguramente funcionarÃa sin dramas, pero
> ya que tengo la oportunidad y que por el tipo de información parece adecuado,
> tengo ganas de salir un poco de mi comfort zone y probar algo nuevo :)
>
> Me viene muy bien lo que decÃs, MartÃn, sobre el tema de las bases de datos y
> los archivos. En mi caso no me servirÃa tener una DB por usuario, porque la
> idea es que haya una única DB igual para todos, a la que todos puedan
> contribuir y es probable que unos pocos usuarios creen los recursos y la
> mayorÃa sólo los consulte. Pero capaz puedo pensar algún otro criterio para
> fragmentar la información.
>
> Rescato también la opinión de varios de que para manejar los usuarios,
> autenticación, etc. me conviene utilizar una DB relacional.
>
> Otra cosa que todavÃa no he tenido oportunidad de investigar, y que me podrÃa
> hacer reconsiderar el motor de base de datos, es qué pasa con estas DBs No-SQL
> y las búsquedas. En lo que vengo leyendo, veo que Couch, por ejemplo, me
> servirÃa muy bien para tener los recursos taggeados y hacer un map reduce de
> los tags, etc. Pero qué pasa si necesito hacer búsquedas full text en varios
> campos de los recursos? Me servirÃa? Y funcionarÃa mejor que, digamos, una DB
> MySQL con Ãndices fulltext o que un motor como Sphinx [0]?
personalmente yo he usado couchdb para dos proyectos en serio y varios prototipos
y siempre me sirvio, de hecho hace un anio que esta corriendo en produccion en
un lugar y lo unico que me causo problemas fue no haber habilitado la compactacion
automatica de las vistas que hizo que se llenara el disco de un server.
para full text search yo use couchdb-lucene y me funciono muy bien:
http://guide.couchdb.org/draft/
http://wiki.apache.org/couchdb/Full_text_search
esto es medio viejo pero quizas te sirve:
http://marianoguerra.blogspot.de/2009/10/mapeo-de-busquedas-de-couchdb-lucene-en.html
http://marianoguerra.blogspot.de/2009/10/haciendo-andar-couchdb-lucene-04-en.html
uno de los proyectos era un gestor de documentos y anduvo bien.
lo que te puedo decir de contra es:
* tenes que tener bien definidas las queries que le vas a hacer ya que no se
pueden hacer muchas queries ad-hoc, eso limita un poco o te lleva a hacer la
mitad de la logica en el server y no en couchdb, digamos, map/reduce no es muy
flexible pero si sirve para tu caso termina siendo muy util y simple.
esto te puede dar una idea de lo que se puede hacer si venis de sql:
http://guide.couchdb.org/draft/cookbook.html
* siempre configura compactacion automatica de bases de datos *Y* de vistas,
desde 1.2 es mucho mas facil ya que lo podes configurar desde couchdb.
https://wiki.apache.org/couchdb/Compaction#Automatic_Compaction
que esto sea periodico y en un horario donde no haya mucha actividad asi no te
afecta
* tene un disco grande, couchdb usa bastante el disco durante cualquier tipo
de actividad (insert, update, delete), el espacio no se reclama hasta que
compactes y mientras compacta necesitas al menos el tamanio de la bd que estas
compactando (como peor caso) como espacio libre en disco, esto puede ser un problema
cuando te estas quedando sin disco y no tenes espacio libre para liberar espacio...
lo que podes hacer es copiar la bd a otra maquina, compactar alla y traer
la version compactada, siempre teniendo en cuenta de usar la misma version
de couchbd para no tener problemas.
no es que te diga que couchdb es perfecta, pero anda bastante bien para los
casos que la he usado.
por lo que he leido no te recomendaria mongodb, hay mucha gente que se quemo con mongo, algunos ejemplos
* diegobasch.com/ill-give-mongodb-another-try-in-ten-years
* http://hackingdistributed.com/2013/01/29/mongo-ft/
* https://gist.github.com/mapopa/3619146
la que me gustaria probar de las nosql pero no tengo tiempo/excusa es riak,
quizas te sirve, quizas no, el tema es que se recomienda correr en un cluster
de al menos 3 nodos por lo que no es muy amistoso para cosas chicas.
una que tiene pinta pero es demasiado nueva es rethinkdb http://www.rethinkdb.com/
espero que sirva de algo,
saludos!
More information about the pyar
mailing list