Django com Mongodb

112 views
Skip to first unread message

willian firmino

unread,
Jan 24, 2012, 8:43:40 AM1/24/12
to Django Brasil
Olá a todos, gostaria de saber como esta hoje a integração do mongodb
com django mudou alguma coisa "melhorou, piorou" ?
Dá para usar em produção sem medo ?
Será que Tornado com asyncmongo ou cyclone com txmongo é mais
interessante que Django para trabalhar com nosql ?

willian firmino

unread,
Jan 25, 2012, 10:17:20 AM1/25/12
to Django Brasil
Fiz, esta pergunta por que estamos estudando a utilização dessas tecnologias em 3 projetos que estamos iniciando.

daniel gatis

unread,
Jan 25, 2012, 10:21:17 AM1/25/12
to django...@googlegroups.com
Cara,
Usei o mongo em um projeto hibrido com mysql e acho que esse cenário é o ideal porque nem tudo vale a pena colocar em um banco nosql.

2012/1/25 willian firmino <willian....@gmail.com>

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Thiago Avelino

unread,
Jan 25, 2012, 10:36:08 AM1/25/12
to django...@googlegroups.com

Se vc nao precisa do django admin recomendo mongoengine.

Send the of Android

willian firmino

unread,
Jan 25, 2012, 10:50:50 AM1/25/12
to django...@googlegroups.com
Daniel vou dar uma lida neste link já, e a ideia para estes sistemas seria apenas nosql e onde não der para utilizar o nosql iremos de Postgresql
Tiago você aconselha o uso do mongoengine com Django mesmo ou Tornado/Cyclone ?

gostaria de saber se desta forma [1] esta estável.

[1] http://christiano.me/2011/08/06/django-mongodb-engine/

Herberth Amaral

unread,
Jan 26, 2012, 5:46:30 AM1/26/12
to Django Brasil


On 25 jan, 10:21, daniel gatis <danielga...@gmail.com> wrote:
> Cara,
> Da uma lida aqui  http://www.allbuttonspressed.com/projects/django-nonrel.
> Usei o mongo em um projeto hibrido com mysql e acho que esse cenário é o
> ideal porque nem tudo vale a pena colocar em um banco nosql.
>

Se eu não me engano, todos esses projetos opensource do
allbuttonspressed foram descontinuados pelos autores originais. Isso
inclui o nonrel, djangoappengine, etc...

Dê uma olhada pra não ter surpresas depois :)

Thiago Avelino

unread,
Jan 26, 2012, 5:50:33 AM1/26/12
to django...@googlegroups.com
Sou commiter do mongoengine.org e estamos mando path, hoje na versao stable 0.5.2

https://github.com/hmarr/mongoengine/tags

[]'s

--
Thiago Avelino | www.avelino.us
@avelino0



2012/1/26 Herberth Amaral <herbert...@gmail.com>

Fernando

unread,
Jan 26, 2012, 7:10:44 AM1/26/12
to django...@googlegroups.com
2012/1/26 Herberth Amaral <herbert...@gmail.com>:

Depois do anúncio de parada do desenvolvimento, houve outro dizendo
que uma outra pessoa da comunidade ia dar continuidade, só não sei
como ficou a atividade depois disso.

> Dê uma olhada pra não ter surpresas depois :)
>

> --
> Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
> Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

--
http://about.me/fernandogrd

Osvaldo Santana Neto

unread,
Jan 26, 2012, 7:14:57 AM1/26/12
to django...@googlegroups.com
Oi Thiago,

Podia dar uma olhada na Issue #402 antes do release, né? :)

Valeu,
Osvaldo

Escrito num celular com corretor (ruim) ativado.

-- 
Osvaldo Santana Neto
Celular: 41-9244-1646

Thiago Avelino

unread,
Jan 26, 2012, 7:20:21 AM1/26/12
to django...@googlegroups.com
Osvaldo, ainda hoje vou olhar com calma ela :D


Valew...


[]'s

--
Thiago Avelino | www.avelino.us
@avelino0



2012/1/26 Osvaldo Santana Neto <osan...@gmail.com>

Gileno Alves

unread,
Jan 27, 2012, 9:59:01 AM1/27/12
to django...@googlegroups.com
É como o Fernando disse, os projetos foram descontinuados pela core do allbuttonspressed mas alguns projetos tem outros mantenedores que já davam o suporte ao projeto e vão continuar.

Eles explicam melhor neste post (o título é bem sugestível):



--
Gileno Filho, Web Developer

willian firmino

unread,
Jan 27, 2012, 11:46:27 AM1/27/12
to django...@googlegroups.com
É pessoal, acho que vou comparar o Tornado/mongodb e o Cyclone/txmongo com django/postgresql,  vou esperar as ferramentas de conexão django/nosql amadurecerem e quem sabe se tornarem  nativas do framework. esses sistemas que citei no inicio do tópico são sistemas simples mas que serão utilizados por anos.

andre fagundes

unread,
Jan 25, 2012, 12:50:55 PM1/25/12
to Django Brasil
Olá pessoal!

Pessoal tenho algumas duvidas, se alguem puder me ajudar eu agradeço
muito!

mongoengine e django-mongodb-engine + django-nonrel... qual a
diferença entre eles?

Sobre estes dois aplicativos, será que o django irá seguir o mesmo
padrão quando ele tiver suporte oficial?

mongoengine se usa sozinho? sem o django-nonrel? Quando eu configuro
"connect()" no settings e vou sincronizar as "tabelas", o django me
reclama que falta a configuração do db. Como se contorna isso?
raise ImproperlyConfigured("You haven't set the database ENGINE
setting yet.")
django.core.exceptions.ImproperlyConfigured: You haven't set the
database ENGINE setting yet.

Será que no Django 1.5 terá suporte ao mongodb? Eu dei uma olhadinha
no Django 1.4, e parece que não tem nada ainda.

E sobre a migração de uma sistema para outro (ex. sql para mongodb)...
o que vocês pensam sobre isso? Dificil? Alguem já passou por uma
dessa?

daniel gatis como faço para ter um projeto hibrido assim? vc usa
"Multiple databases" neh? Mas como fica nos models? Não vai dar
conflito quando usar StringField por exemplo?

É isso pessoal, e como eu disse, ficarei muito agredecido se alguem me
ajudar a solucionar estas duvidas!

Atenciosamente,

André Fagundes

On 25 jan, 13:50, willian firmino <willian.firmi...@gmail.com> wrote:
> Daniel vou dar uma lida neste link já, e a ideia para estes sistemas seria
> apenas nosql e onde não der para utilizar o nosql iremos de Postgresql
> Tiago você aconselha o uso do mongoengine com Django mesmo ou
> Tornado/Cyclone ?
>
> gostaria de saber se desta forma [1] esta estável.
>
> [1]http://christiano.me/2011/08/06/django-mongodb-engine/
>
> Em 25 de janeiro de 2012 13:36, Thiago Avelino
> <thiagoavelinos...@gmail.com>escreveu:
>
> > Se vc nao precisa do django admin recomendo mongoengine.
>
> > Send the of Android
> > On Jan 25, 2012 1:17 PM, "willian firmino" <willian.firmi...@gmail.com>
> > wrote:
>
> >> Fiz, esta pergunta por que estamos estudando a utilização dessas
> >> tecnologias em 3 projetos que estamos iniciando.
>
> >> Em 24 de janeiro de 2012 11:43, willian firmino <
> >> willian.firmi...@gmail.com> escreveu:

andre fagundes

unread,
Jan 26, 2012, 7:28:20 AM1/26/12
to Django Brasil
On 26 jan, 10:20, Thiago Avelino <thiagoavelinos...@gmail.com> wrote:
> Osvaldo, ainda hoje vou olhar com calma ela :D
>
> Valew...
>
> []'s
>
> --
> Thiago Avelino |www.avelino.us
> @avelino0
>
> 2012/1/26 Osvaldo Santana Neto <osant...@gmail.com>
>
> > Oi Thiago,
>
> > Podia dar uma olhada na Issue #402 antes do release, né? :)
>
> > Valeu,
> > Osvaldo
>
> > Escrito num celular com corretor (ruim) ativado.
>
> > --
> > Osvaldo Santana Neto
> > Celular: 41-9244-1646
> >http://triveos.com
>
> > Em 26/01/2012, às 08:50 AM, Thiago Avelino <thiagoavelinos...@gmail.com>
> > escreveu:
>
> > Sou commiter do mongoengine.org e estamos mando path, hoje na versao
> > stable 0.5.2
>
> >https://github.com/hmarr/mongoengine/tags
>
> > []'s
>
> > --
> > Thiago Avelino |www.avelino.us
> > @avelino0
>
> > 2012/1/26 Herberth Amaral <herberthama...@gmail.com>

Luiz Carlos Santos

unread,
Jan 30, 2012, 9:59:37 PM1/30/12
to django...@googlegroups.com

Herberth Amaral

unread,
Jan 31, 2012, 5:25:43 AM1/31/12
to Django Brasil
On Jan 25, 1:36 pm, Thiago Avelino <thiagoavelinos...@gmail.com>
wrote:
> Se vc nao precisa do django admin recomendo mongoengine.

Desculpa chegar tarde na discussão, hehehe, mas eu tenho um pequeno
conselho pra quem usa o mongoengine (ou qualquer outro Object-Document
Mapper).

Se você for usar mesmo o mongoengine, eu sugiro que use e abuse do
db_field quando tiver definindo seus documentos:
http://mongoengine.org/docs/v0.5/guide/defining-documents.html#field-arguments

O tamanho do nome dos campos influencia *muito* o consumo de memória
do mongo e eu já tive problemas com isso e com o mongoengine (não por
culpa do mongoengine, mas por presepada minha de não prestar atenção
mesmo).

O nome do campo e o valor são carregados em memória pra cada
documento, então se você tiver um bilhão de documentos, um caractere a
menos no nome de um campo significaria um GB a menos de memória
ocupada -- por isso a primeira regra de ouro do mongo, na minha
opinião, é mantenha o nome dos campos no menor tamanho possível.

Com relação à melhora do suporte do mongo no Python: eu usava o mongo
na época que o pymongo não suportava leitura de slave no replicaset e
isso mudou. Só isso eu já acho uma melhoria considerável :)

andre fagundes

unread,
Jan 27, 2012, 2:18:46 PM1/27/12
to django...@googlegroups.com
Olá pessoal!

Pessoal tenho algumas duvidas, se alguem puder me ajudar eu agradeço muito!

mongoengine e django-mongodb-engine + django-nonrel... qual a diferença entre eles?

Sobre estes dois aplicativos, será que o django irá seguir o mesmo padrão quando ele tiver suporte oficial?

mongoengine se usa sozinho? sem o django-nonrel? Quando eu configuro "connect()" no settings e vou sincronizar as "tabelas", o django me reclama que falta a configuração do db. Como se contorna isso?
raise ImproperlyConfigured("You haven't set the database ENGINE setting yet.")
django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE setting yet.

Será que no Django 1.5 terá suporte ao mongodb? Eu dei uma olhadinha no Django 1.4, e parece que não tem nada ainda.

E sobre a migração de uma sistema para outro (ex. sql para mongodb)... o que vocês pensam sobre isso? Difícil? Alguem já passou por uma dessa?


daniel gatis como faço para ter um projeto hibrido assim? vc usa "Multiple databases" neh? Mas como fica nos models? Não vai dar conflito quando usar StringField por exemplo?

É isso pessoal, e como eu disse, ficarei muito agradecido se alguem me ajudar a solucionar estas duvidas!

Atenciosamente,

André Fagundes

luan fonceca

unread,
Apr 2, 2012, 10:02:38 AM4/2/12
to django...@googlegroups.com
Eae galera, to iniciando um projeto com mongodb também, vim só agradecer por postarem alguns links...
com o avanço do projeto quem sabe a gente converse mais :D
se alguem tiver mais links a respeito postei bastante que não fará mal =]

Seria realmente ótimo se o django 1.4 ja viesse com o suporte à engine do mongo, mas quem sabe no 1.5 ne

willian firmino

unread,
Apr 2, 2012, 12:08:29 PM4/2/12
to django...@googlegroups.com
Olá luan, quais ferramentas além do Django vc esta usando, que engine esta utilizando para o mongodb ? vai fazer uso de todos os recursos do Django como por exemplo o admin ? 

--

luan fonceca

unread,
Apr 2, 2012, 3:42:36 PM4/2/12
to django...@googlegroups.com
cara tentei varias coisas pra fazer rodar... tentei usar pymongo, django_mongodb_engine, djangotoolbox...
mas to com uns problema pq tentei adaptar o models que era em sqlite pro mongo, entao muita coisa é diferente, entao vou refazer todo o models usando os campos do mongoengine e djangotoolbox.fields

desde o inicio do projeto eu ja decidi nao usar a admin do django... pq nao é tao flexivel quando criar uma app pra servir como admin etal.

Luciano Ramalho

unread,
Apr 2, 2012, 3:53:42 PM4/2/12
to django...@googlegroups.com
2012/4/2 luan fonceca <luanf...@gmail.com>:

> cara tentei varias coisas pra fazer rodar... tentei usar pymongo,
> django_mongodb_engine, djangotoolbox...
> mas to com uns problema pq tentei adaptar o models que era em sqlite pro
> mongo, entao muita coisa é diferente, entao vou refazer todo o models usando
> os campos do mongoengine e djangotoolbox.fields
>
> desde o inicio do projeto eu ja decidi nao usar a admin do django... pq nao
> é tao flexivel quando criar uma app pra servir como admin etal.

luan, eu gosto muito do MongoDB, acho que faz muito sentido em muitos
projetos, em certos casos específicos vai atender muito melhor que qq.
banco relacional.

Porém é bom vc ficar ligado que o problema de "conversão" não se
limita a campos diferentes e falta de suporte do admin do Django. Toda
a sua modelagem de dados terá que ser repensada e modificada, do
contrário vc não terá um bom resultado.

Um exemplo clássico que se usa em cursos de modelagem relacional é o
exemplo do pedido e os itens do pedido. Em um bd relacional
normalizado isso tem que ser implementado como uma tabela de pedidos e
uma outra tabela de itens de pedido, onde cada item tem uma chave
estrangeira apontando para o pedido ao qual ele pertence. Essa é a
forma normalizada de modelar uma relação de 1:N (um para N).

Pois bem, essa modelagem básica está totalmente errada no MongoDB,
porque o MongoDB não faz join. Existem alguma maneiras de modelar o
caso do pedido e seus itens no MongoDB, e a mais simples e em muitos
casos a melhor é justamente aquela que nem passa pela cabeça de nós
que fomos adestrados a achar o modelo relacional normalizado algo
"normal".

Um pedido é um documento, que contem dentro dele um array de
sub-documentos representando os itens. Nada de chave estrangeira e
multiplos registros em tabelas diferentes. Na verdade, uma modelagem
neste caso muito mais natural e próxima com o caso de uso real. E mais
eficiente para a busca de um pedido, pois todos os dados estão juntos,
sem precisar fazer join, que custa caro no BD porque envolve buscar
dados que estão em várias tabelas e portanto dispersos no banco de
dados.

O MongoDB é sensacional, mas a incompatibilidade dos campos é o menor
dos problemas que qualquer pessoa tem ao migrar de um banco relacional
para o MongoDB.

[ ]s
Luciano


--
Luciano Ramalho
Twitter: @luciano
Autor e instrutor da Academia Python na Globalcode
http://python.globalcode.com.br

luan fonceca

unread,
Apr 2, 2012, 5:58:04 PM4/2/12
to django...@googlegroups.com
Cara, muito obrigado, eu tinha +/- essa idéia de que teria que mudar toda a modelagem, mas para a minha solução um banco não-relacional é oq daria certo, obrigado mesmo por esse esclarecimento sobre modelagem :D

willian firmino

unread,
Apr 3, 2012, 7:13:09 AM4/3/12
to django...@googlegroups.com
Neste caso citado pelo Luciano, como o Django trabalha com a composição dos forms, da para aproveitar o poder dos modelforms utilizando o mongoengine ?

andre fagundes

unread,
Apr 3, 2012, 10:59:00 PM4/3/12
to django...@googlegroups.com
Boa noite a todos,

Pessoal um link muito bom, no qual utilizei foi este, ai fala de forms e utiliza o mongoengine, que recomendo! No final do texto da pra fazer download da amostra.

Para usar forms com mongoengine, uma app que vai ajudar demais e diminuir muito o trabalho é o mongodbforms, que assim como o monengine tambem funciona com django 1.4.

Agora usar mongodb com admin, isso eu nunca fiz, mas tem algumas apps para isso: mongoadmin e a django-mongonaut. Mas como eu disse eu não testei, e nem sei se fica bom.

E por ultimo, mas não menos importante, levem a serio o que o Herberth Amaral e o Luciano Ramalho falaram que as coisas vão funcionar sem grandes problemas.

Até a proxima!
Reply all
Reply to author
Forward
0 new messages