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.
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).
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.
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
- https://github.com/LuuDai-bit/multidb