2012-06-20 11 views
7

¿Puedo usar MongoDB y PostgreSQL en una aplicación de rieles? Específicamente, eventualmente querré usar algo como MongoHQ. Hasta ahora no he logrado que esto funcione en la experimentación. Y me preocupa que la documentación de MongoDB específicamente dice que tengo que desactivar ActiveRecord. Cualquier consejo sería apreciado.MongoDB con PostgreSQL en la aplicación One Rails

Respuesta

10

No necesita deshabilitar ActiveRecord para usar MongoDB. Consulte Mongoid y simplemente agregue la gema más cualquier modelo junto con cualquiera de sus modelos ActiveRecord existentes. Debe tener en cuenta que MongoHQ es solo un servicio de alojamiento para MongoDB y se puede utilizar junto con cualquier Object Document Mapper (ODM).

Para obtener más información, marque http://mongoid.org/en/mongoid/docs/installation.html. Simplemente omita el paso opcional "Deshacerse del registro activo".

+1

Si lee la documentación de Mongoid donde se refiere a deshacerse de ActiveRecord, la advertencia específica es 'No necesita ActiveRecord a menos que esté tratando de usar Mongo en concierto con una base de datos SQL. – Stennie

+0

@Stennie Exactamente. Por lo tanto, si desea utilizarlos en tándem, simplemente no 'ActiveRecord'. –

+0

Estaba realmente atrapado en MongoMapper y no tenía mucho éxito. Y fue en los documentos de MongoDb donde te instruyeron para que te deshagas de ActiveRecord [http://www.mongodb.org/display/DOCS/Rails+3+++Getting+Started] Jugaré con mongoid y veré si ten mejor suerte No entiendo este último comentario de "simplemente no ActiveRecord" ... –

0

En un sitio de cliente reciente trabajé con un sistema de producción que combinaba datos de MySQL y MongoDB con una sola aplicación de Java. Para ser honesto, fue una pesadilla. Para unir datos entre las dos bases de datos se necesitaban complejas estructuras de datos de Java y muchos códigos, que en realidad son las bases de datos las que mejor funcionan.

Un caso de uso para un sistema de dos bases de datos es tener datos transaccionales puros en la base de datos SQL y agregar los datos en MongoDB para generar informes, etc. De hecho, este había sido el plan original en el cliente, pero la forma en que las bases de datos se interrelacionaron para datos transaccionales.

El sistema se ha vuelto tan difícil de mantener que se planea eliminar y reemplazar con una solución exclusiva de MongoDB (utilizando Meteor.js).

Postgres tiene un excelente soporte para documentos JSON a través de su tipo de datos jsonb, y es totalmente compatible con Rails 4.2, listo para usar. También he trabajado con esto y me resulta muy fácil, y recomendaría este enfoque.

Esto permite una mezcla fácil de SQL y NoSQL transacciones, por ejemplo

select id, blast_results::json#>'{"BlastOutput2","report","results","search","hits"}' 
from blast_caches 
where id in 
(select primer_left_blast_cache_id 
from primer3_output_pairs where id in (185423,185422,185421,185420,185419)) 

No ofrece las funciones de manipulación de datos completos MongoDB, pero probablemente es suficiente para la mayoría de las necesidades.

Algunos enlaces útiles aquí:
http://nandovieira.com/using-postgresql-and-jsonb-with-ruby-on-rails
https://dockyard.com/blog/2014/05/27/avoid-rails-when-generating-json-responses-with-postgresql

También hay informes de que puede superar a MongoDB en JSON:
http://www.slideshare.net/EnterpriseDB/the-nosql-way-in-postgres

Otra opción sería mover su aplicación Rails enteramente a MongoDB , y Rails tiene muy buen soporte para MongoDB.

No recomendaría ejecutar dos bases de datos, basadas en observaciones personales sobre cómo puede salir mal.

Cuestiones relacionadas