2012-06-20 20 views
7

Posso utilizzare MongoDB e PostgreSQL in un'unica app per rotaie? In particolare, alla fine voglio usare qualcosa come MongoHQ. Finora non sono riuscito a farlo funzionare in sperimentazione. E mi preoccupa il fatto che la documentazione di MongoDB dice specificamente che devo disabilitare ActiveRecord. Tutto il consiglio sarebbe apprezzato.MongoDB con PostgreSQL in app One Rails

risposta

10

Non è necessario disattivare ActiveRecord per utilizzare MongoDB. Controlla Mongoid e aggiungi la gemma più eventuali modelli accanto ai tuoi modelli ActiveRecord esistenti. Si noti che MongoHQ è solo un servizio di hosting per MongoDB e può essere utilizzato insieme a qualsiasi Object Document Mapper (ODM).

Per ulteriori dettagli, verificare http://mongoid.org/en/mongoid/docs/installation.html. Salta semplicemente il passaggio facoltativo "Come eliminare i record attivi".

+1

Se si legge la documentazione Mongoid in cui si riferisce alla rimozione di ActiveRecord, l'avvertenza specifica è 'Non è necessario ActiveRecord a meno che non si stia tentando di utilizzare Mongo in concerto con un database SQL. – Stennie

+0

@Stennie Esattamente. Quindi, se vuoi usarli in tandem, semplicemente non 'ActiveRecord'. –

+0

In realtà ero bloccato su MongoMapper e non avendo molto successo. Ed è stato nei documenti MongoDb in cui ti hanno insegnato a sbarazzarti di ActiveRecord [http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started] giocherò con mongoid e vedrò se avere migliore fortuna Non capisco questo ultimo commento di "just do not ActiveRecord" ... –

0

Su un sito client recente ho lavorato con un sistema di produzione che univa dati MySQL e MongoDB con una singola app Java. Ad essere onesti, è stato un incubo. Per unire i dati tra i due database sono richieste strutture dati Java complesse e un sacco di codice, che in realtà è il database che fa meglio.

Un caso di utilizzo per un sistema di due database consiste nell'avere i dati puramente transazionali nel database SQL e nell'aggregare i dati in MongoDB per la segnalazione, ecc. In realtà questo era stato il piano originale del cliente, ma lungo il modo in cui i database sono stati interrelati per i dati transazionali.

Il sistema è diventato così difficile da mantenere che è pianificato di essere scartato e sostituito con una soluzione solo MongoDB (utilizzando Meteor.js).

Postgres offre un eccellente supporto per i documenti JSON tramite il suo tipo di dati jsonb ed è completamente supportato in Rails 4.2, pronto all'uso. Ho anche lavorato con questo e lo trovo un gioco da ragazzi, e consiglierei questo approccio.

Questo permette un facile mix di SQL e NoSQL transazioni, ad esempio

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)) 

Non offre la piena funzionalità di manipolazione dei dati MongoDB, ma probabilmente è sufficiente per la maggior parte delle esigenze.

Alcuni link utili qui:
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

Ci sono anche i rapporti che esso può sovraperformare MongoDB su JSON:
http://www.slideshare.net/EnterpriseDB/the-nosql-way-in-postgres

Un'altra opzione sarebbe quella di spostare la vostra applicazione Rails interamente alla MongoDB e Rails ha un ottimo supporto per MongoDB.

Non consiglierei di eseguire due database, in base a osservazioni personali su come può andare male.

Problemi correlati