2010-04-21 9 views
20

Estoy considerando usar MongoDB (mongo-mapper) para una parte de mi aplicación de rieles. No estoy listo para ir a MongoDB porque hay demasiadas gemas útiles que dependen de una base de datos tradicional.¿Cómo mezclar mongodb y un db tradicional en Rails?

Dicho esto, hay partes de mi aplicación que serían geniales para aprovechar una base de datos de documentos.

¿Alguien ha tenido éxito mezclando los dos enfoques? ¿Cómo se vinculan los modelos activerecord con los modelos mongomapper?

+0

¿En qué gemas estás pensando? Actualmente estoy migrando mi aplicación de MySQL a MongoDB. Estaba pensando en hacer un enfoque híbrido como el suyo, pero cuanto más aprendía sobre MongoDB, más me daba cuenta de que obtendría enormes beneficios (en mi caso) solo por migrar todo. Algunas de las gemas que desea dejar atrás podrían no ser necesarias en el mundo NoSQL. –

+0

Esto es lo que estoy usando ahora: acts_as_versioned, formtastic, ide, paperclip, cancan. Creo que * muchos de estos necesitarán ajustes significativos para poder trabajar con mongo – Jonathan

+1

Tanto el dispositivo como el clip funcionan con Mongoid. Devise solía trabajar con MongoMapper, pero creo que lo sacaron. No sé acerca de cancan, pero Mongoid tiene soporte para versiones básicas: http://mongoid.org/docs/extras – MrKurt

Respuesta

9

MongoMapper aún no implementa ActiveModel, pero creo que hay algunas bifurcaciones en github que lo hacen. Podrías usar Mongoid en cambio (que sí lo hace) y tus relaciones entre los documentos de Mongoid y las entradas de ActiveRecord funcionarían mágicamente. Sé que varias personas lo están haciendo.

Dicho esto, no me gustaría mezclarlos a menos que, por alguna razón, tenga que tener un RDBMS.

+0

Parece que Mongoid implementando ActiveModel hace parecer que es el camino a seguir. Voy a intentarlo este fin de semana. Informaré de nuevo. Gracias – Jonathan

+0

Fui con Mongoid, y porté a un enfoque NoSql todo. Muy feliz con el resultado. – Jonathan

+1

MongoMapper ahora implementa ActiveModel a partir de la versión 0.9, de acuerdo con las preguntas frecuentes actuales. –

2

http://railscasts.com/episodes/194-mongodb-and-mongomapper http://www.mongodb.org/display/DOCS/Object+Mappers+for+Ruby+and+MongoDB http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails http://www.mongodb.org/display/DOCS/Ruby+Language+Center

Necesitas mixin MongoMapper con la clase del modelo Esto le da libertad para definir los pares clave-valor que no sea activerecord

include MongoMapper::Document 

Muerto sencilla pienso .

+0

¿Pero las modelos no tienen que heredar de MongoID? Eso no es posible ahora porque esos modelos heredan de AR ¿no? –

+0

¿Cómo se ve esto? http://blog.memamsa.com/2010/07/09/mixing-in-mongodb – ramonrails

Cuestiones relacionadas