MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak skonfigurować MongoMapper i ActiveRecord w tym samym projekcie Ruby Rails?

Dołącz swój klejnot mongo_mapper do pliku Gemfile. Następnie w modelach, które powoli chcesz zacząć migrować do MongoMapper, po prostu dołącz to do swojego modelu:

include MongoMapper::Document

oto przykład modelu wydawcy Mongo

class Publisher
  include MongoMapper::Document

  key :_id, String
  key :mtd_uniques, Integer
  key :mtd_demo_uniques, Integer
  key :archive, Array
  key :ignore, Boolean
end

Mój model użytkownika (postgres):

class User < ActiveRecord::Base
  validates_presence_of :first_name, :last_name, :email, :type
  acts_as_authentic

  def self.inherited(child)
    child.instance_eval do
      def model_name
        User.model_name
      end
    end
    super
  end
end

Zaletą jest to, że wszystkie inne modele nadal używają ActiveRecord, więc możesz korzystać z 2 różnych baz danych, dopóki wszystko nie zostanie przeniesione do Mongo. To jest przykład z tego, czego używam. Duże agregacje danych przy użyciu MongoMapper i Model użytkownika przy użyciu postgres (aplikacja hostowana na Heroku)

Dla mojej konfiguracji zrzuciłem pliki konfiguracyjne w moim config.yml

development:
  adapter: MongoDB
  host: localhost
  database: my-dev-db

test:
  adapter: MongoDB
  host: localhost
  database: my-dev-db

staging:
  adapter: MongoDB
  host: remote-host (for me amazon ec2)
  database: my-staging-db

production:
  adapter: MongoDB
  host: remote-host (for me amazon ec2)
  database: my-production-db

i stworzył inicjator, który rozróżnia 2 bazy danych:

/initializers/database.rb

# load YAML and connect
database_yaml = YAML::load(File.read("#{Rails.root}/config/config.yml"))
puts "Initializing mongodb"
if database_yaml[Rails.env] && database_yaml[Rails.env]['adapter'] == 'MongoDB'
  mongo_database = database_yaml[Rails.env]
  MongoMapper.connection = Mongo::Connection.new(mongo_database['host'], 27017, :pool_size => 5, :timeout => 5)
  MongoMapper.database =  mongo_database['database']
end


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak włączyć konsolę HTTP w zestawie replik MongoDB 2.6?

  2. W Mongoose Model.find() i Model.find().exec() dają ten sam wynik. Po co więc zawracać sobie głowę używaniem Model.find().exec()?

  3. Jak uzyskać aktualną zajętość puli połączeń na kliencie korzystającym ze sterownika mongo .net?

  4. Co mam wybrać:MongoDB/Cassandra/Redis/CouchDB?

  5. MongoDb — Zmień typ z Int na Double