Sử dụng song song kết nối tới postgresql và mongodb

Đăng bởi Lưu Đại vào ngày 15-11-2023
Dùng NoSQL khi trong dự án bạn phải lưu lại log của tất cả request vào database hay có những report theo tháng / tuần / ngày yêu cầu lấy data từ nhiều bảng được generate và lưu riêng vào database hoặc lưu lại lịch sử chỉnh sửa của một vài record quan trọng => Những data có cấu trúc thay đổi nhiều hoặc số lượng read / write lớn. 
1. Tạo 1 Rails project như bình thường config kết nối vs postgresql.

2. Thêm gem mongoid vào gem file và tạo file mongoid.yml.
development:
  clients:
    default:
      database: multidb_development
      hosts:
        - localhost:27017
      options:
        server_selection_timeout: 1

test:
  clients:
    default:
      database: multidb_test
      hosts:
        - localhost:27017
      options:
        read:
          mode: :primary
        max_pool_size: 1
config/mongoid.yml 

3. Tạo 1 model (không kế thừa application_record).
class Log
  include Mongoid::Document
  include Mongoid::Timestamps # auto generate created_at, updated_at when create / update record

  field :controller, type: String
  field :action, type: String
end
app/models/log.rb

4. Test thôi.
class ApplicationController < ActionController::Base
  before_action :write_log

  def write_log
    # Store log in mongo db
    Log.create(controller: controller_name, action: action_name)
  end
end
5. Code example.
- https://github.com/LuuDai-bit/multidb