2012-05-03 21 views
7

Trabajando en un proyecto de Django que requiere una tienda NoSQL y creo que me he asentado en Mongo. He visto muchos temas que hablan de Mongo y Django, pero ninguno menciona a Django-nonrel, y no veo por qué podría haber sido descalificado, pero no tengo experiencia con ninguno de ellos.Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native

Idealmente, me gustaría conservar la tienda de SQL para cosas simples, autenticación de usuario, grupos, etc., y usar Mongo para los datos más grandes.

También me gustaría tener mis objetos almacenados en Mongo como clases, en un estilo Django-ORM, para que pueda tener una "sensación" similar, pero eso no es crítico.

Por último, ¿alguna de las anteriores me permite usar el soporte de múltiples bases de datos de Django para cualquier cosa, o todas mis consultas de mongo están efectivamente 'fuera de banda' de Django ORM?

Si me faltan otros factores que puedan ser importantes, siéntete libre de darme pistas. Sé muy poco en este campo.

+3

Sí, es posible trabajar con Django y MongoDB, que haya hecho lo mismo un par de años atrás. No he probado Django-nonrel, pero si quiere usar SQL para cosas simples, debe apegarse al Django original. Debes saber ahora que Django no tiene un backend de Mongo, pero si quieres mantener el Django ORM feel, deberías probar [mongoengine] (http://mongoengine.org/). –

+1

En segundo lugar la recomendación para mongoengine. – Justin

Respuesta

5

Django-nonrel es el camino a seguir para Django en MongoDB. Hay django-mongodb.org, pero eso solo se construyó encima de Django-nonrel. Hay un poco de actividad de mongodb en la lista de correo django-nonrel.

Almacenar sus clases mongo como objetos Django ORM funciona bien, ese es el punto.

No he intentado utilizar el soporte de varias bases de datos junto con SQL. No he visto a muchas personas usarlo así, y sospecho que lo más probable es que no funcione. Hay algo de trabajo en mover django-nonrel para ser oficialmente parte de Django 1.4, sospecho que funcionará una vez que esté completo.

Usar django-nonrel para auth funciona bien. El problema principal son las relaciones de muchos a muchos. El módulo de autenticación usa eso para permisos de objetos por usuario, eso no funciona. Si no lo necesita, probablemente podría escapar sin usar el SQL en absoluto.

+0

No pude hacer que Django-nonrel funcione a pesar de seguir una variedad de fuentes de documentación al pie de la letra. Está "sobre todo" ahí, porque tengo un proyecto de Django, y casi puedo hacer que syncdb funcione, pero lo mejor que tengo es que comience antes de que falle ... mierda, algún error relacionado con ObjectID . En resumen, terminé usando mongoengine, lo que me permite especificar una conexión en la configuración y definir los objetos de clase "tipo Django" a los que me refiero. Tu respuesta no 'funcionó', pero como te tomaste el tiempo para al menos intentarlo, me imagino que vale algo, así que es aceptado. – bmelton

0

Agregando a Dragonx respuesta. El problema con django-nonrel es que el módulo de autenticación no funciona.

Puede realizar uniones de muchos a un mamy usando el operador $ lookup. djongo hace automáticamente para usted. Traduce la sintaxis de SQL en consultas de agregación de mongodb y rellena el modelo de objetos, al igual que otros controladores de SQL.

El módulo de autenticación funciona bien en djongo

Cuestiones relacionadas