Mongodb và Mongoid with Rails (Part 1/n)

Chào các bạn, lại là mình đây.

Với một chủ đề khác, tuy không thể nói là mới gì, tuy nhiên cũng đáng để chúng ta chú ý đôi chút.

Những năm gần đây, các bigdata ngày càng nhiều, CSDL để lưu trữ big data cũng rất nhiều, tuy nhiên cái tên có thể dễ làm bạn quan tâm đến đó là MongoDB.

Với thời gian sử dụng MongoDB với Rails cũng khá lâu, hôm nay mình xin chia sẻ nhiều điều về nó đối với Rails app, từ cài đặt, cho đến các thông tin liên quan để bạn có thể bước đầu sử dụng ngay.

MongoDB được MongoLab phát triển bởi code C++, sử dụng syntax làm việc theo kiểu javascript.

Nó là CSDL dữ liệu phục vụ cho lưu trữ bigdata nên tốc độ đọc ghi cực kỳ nhanh và hiệu quả với việc lưu trữ dữ liệu bán cấu trúc và phi cấu trúc.

Hiện nay version mới nhất của MongoDB là 3.2, các bạn có thể cài đặt mongodb tại địa chỉ sau:

https://www.mongodb.com/download-center?jmp=docs

Sau khi cài đặt xong chúng ta đã có thể sử dụng với Rails app, để có thể Rails app làm việc dễ dàng với mongodb chúng ta sử dụng một data-mapper là mongoid, nay đã chuyển về phát triển chính thức bởi mongodb,

Nói một cách dễ hiểu hơn thì với bình thường bạn làm việc trên Rails app sử dụng ORM là ActiveRecord (để làm việc với MySQL, Postgresql, …) thì mongoid sẽ giúp ta làm việc cục kỳ đơn giản với MongoDB.

Với Rails app chỉ đơn giản như sau:

Bundle.

Khởi tạo file config (giống như file database.yml đó)

=> Khi đó ta sẽ được file mongoid.yml trong folder config.

Vậy là bước đầu cho việc sử dụng đã ngon lành.

Việc tiếp theo là sử dụng như thông thường thôi.

Nếu bạn muốn tạo model, thì cũng là lệnh:

Khi đó ta sẽ được một model có dạng như sau:

Cùng nhìn sơ qua cấu trúc của file này nhé:

ở đây có các include như sau phổ biến trong Mongoid

Sử dụng Class với các tính chất là Document.

Để tận dung tốt khả năng lưu trữ dữ liệu bán cấu trúc và phi cấu trúc, 1 mo dun khá lợi hại đó là:

Khi sử dụng trong Model thì nó sẽ tự động cài đặt phương thức method missing cho những field dù bạn không khai báo vẫn có thể làm việc và lưu trữ bình thường.

Đối với ActiveRecord luôn có mặc định timestamps khi tạo một model, ở đây nếu muốn sử dụng các bạn có thể thông qua việc include mo dun:

Nếu bình thường dữ liệu sẽ được lưu trữ ở collection có tên là modelnames (dạng số nhiều) tương tự như ActiveRecord (AR) thôi.

Từ khóa Field để chỉ các trường bạn sẽ lưu trữ (giống như cột trong AR thôi).

Một điều đáng chú ý của Mongoid là chúng ta không cần migrate gì cả, chỉ việc khai báo và sử dụng mà thôi.

Rất nhanh chóng. Đây cũng là một điểm mình rất thích khi sử dụng với Rails app, làm cho ứng dụng rất đa năng và dễ dàng thay đổi, nói chung có thể làm tăng tốc độ phát triển dự án.

Id mặc định của các Model theo Mongoid là ObjectId (BSON) có dạng như sau:

Không giống với AR, tuy nhiên id này được mongodb mặc định sinh ra và hoàn toàn tự động, không bao giờ trùng lắp.

Trong AR, các quan hệ được khai báo khá dễ dàng thì mongoid cũng vậy.

Cách hoạt động giống với AR mà chúng ta vẫn thường dùng. Các bạn có thể xem thêm tài liệu tại đây:

https://docs.mongodb.com/ruby-driver/master/tutorials/6.1.0/mongoid-relations/

Vì đơn giản là chúng ta chỉ cần dám chuyển sang sài Mongoid mà thôi, vì hầu như nó giống AR khá nhiều.

Bài đầu tiên cơ bản là mục đích giới thiệu, nếu quá dài quá chi tiết tôi nghĩ các bạn sẽ thấy khá ngán ngẩm khi đọc tuy nhiên một điều tôi xin chia sẻ là hãy sử dụng thử và cảm nhận.

Một điều chắc các bạn hết sức lo lắng là liệu mongoid có làm việc tốt với các gem nổi tiếng hay không? Câu trả lời là .

Nó làm việc tốt 100%. Từ gem devise, cancan, will_paginate… cho đến các kỹ thuật phức tạp khác như dataTable, , tôi đã sử dụng và nó hoạt động rất ổn.

Cuối bài viết, nếu bạn sử dụng và có vấn đề gì có thể liên hệ comment để được trợ giúp.

Thân,

 

Tiến An

Admin tại RubySG.com

You may also like...