2012-05-03 20 views
7

Lavorare su un progetto Django che richiede un negozio NoSQL e credo di aver scelto Mongo. Ho visto molti argomenti che parlano di Mongo e Django, ma nessuno che abbia menzionato Django-nonrel, e non riesco a capire perché potrebbe essere stato squalificato, ma non ho esperienza con nessuno di loro.Django-nonrel vs Django-mongodb vs Mongokit vs pymongo nativo

Idealmente, mi piacerebbe conservare l'archivio SQL per le cose semplici, l'autenticazione utente, i gruppi, ecc. E utilizzare Mongo per i dati più grandi.

Mi piacerebbe anche avere i miei oggetti memorizzati in Mongo come classi, in uno stile Django-ORM, in modo da poter avere un 'feel' simile, ma non è fondamentale.

Infine, qualcuna di queste opzioni mi consente di utilizzare il supporto multi-database di Django per qualsiasi cosa, o tutte le mie domande di mongo sono effettivamente "fuori banda" dall'ORM Django?

Se ci sono altri fattori che mi mancano potrebbe essere importante, sentitevi liberi di identificarmi. So poco in questa arena.

+3

Sì, è possibile lavorare con Django e MongoDB, ho fatto io stesso un paio di anni fa. Non ho provato Django-nonrel, ma se vuoi usare SQL per cose semplici, devi attenersi al Django originale. A questo punto dovresti sapere che Django non ha un backend Mongo, ma se vuoi mantenere il Django ORM senti che dovresti provare davvero [mongoengine] (http://mongoengine.org/). –

+1

I secondo la raccomandazione per il mongoengine. – Justin

risposta

5

Django-nonrel è la strada da percorrere per Django su MongoDB. C'è django-mongodb.org, ma è appena costruito su Django-nonrel. C'è un bel po 'di attività mongodb in corso sulla mailing list django-nonrel.

Memorizzare le classi mongo come oggetti Django ORM funziona bene, questo è il punto.

Non ho provato a utilizzare il supporto multi-database insieme a SQL. Non ho visto molte persone usarlo in quel modo, e sospetto che molto probabilmente non funzioni. C'è del lavoro su come spostare django-nonrel per essere ufficialmente parte di Django 1.4, sospetto che funzionerà dopo che sarà completo.

Utilizzare django-nonrel per auth funziona correttamente. Il problema principale sono le relazioni molti-a-molti. Il modulo auth usa quello per i permessi degli oggetti per utente - che non funziona. Se non ne hai bisogno, probabilmente potresti andare via senza usare l'SQL.

+0

Non ho potuto far funzionare Django-nonrel nonostante abbia seguito una varietà di fonti di documentazione alla lettera. È "principalmente" lì, nel senso che ho un progetto Django, e posso quasi persino far funzionare syncdb, ma il meglio che ho ottenuto è che inizi prima che non riesca a ... crap, qualche errore riguardante ObjectID . In breve, ho finito con l'uso di mongoengine, che mi permette di specificare una connessione nelle impostazioni e definire oggetti di classe "tipo Django" a cui posso riferirmi. La tua risposta non ha funzionato, ma dal momento che hai preso il tempo di provare almeno, ho capito che vale qualcosa, quindi è accettato. – bmelton

0

Aggiunta alla risposta di dragonx. Il problema con django-nonrel è che il modulo auth non funziona.

È possibile eseguire join many-to-mamy utilizzando l'operatore di ricerca $. djongo fa automaticamente per te. Converte la sintassi SQL in query di aggregazione mongodb e popola il modello a oggetti, come altri driver SQL.

Il modulo di autenticazione funziona bene su djongo

Problemi correlati