Tìm hiểu về CSDL MongoDB

Tìm hiểu về CSDL MongoDB
 
Lời mở đầu
 
   Xin chào các bạn thành viên của Sharecode.vn, bài viết ngày hôm nay mình xin giới thiệu về "[MongoDB] - CSDL MongoDB", bài này sẽ chia sẻ về NoSQL DB rất phổ biến và thường xuyên được dùng trong lập trình là MongoDB.
 
   Trong nội dung bài này mình cùng với các bạn cùng tìm hiểu để có một cái nhìn tổng quan về MongoDB về các mặt:
  • NoSQL là gì?
  • MongoDB là gì?
  • Lý do nên dùng MongoDB
  • Ưu điểm và nhược điểm của mongodb
  • Những tính năng nổi trội của mongodb

 

   Nào chúng ta cùng bắt đầu thôi!
 
 
NoSQL là gì?
 
   Nếu bạn là dân lập trình thì có thể các bạn đã tìm hiểu về cơ sở dữ liệu quan hệ (Rational Database Management System - RDBS) với những tiêu chuẩn thiết kế chuẩn 1, chuẩn 2, chuẩn 3... Tuy nhiên cùng với nó luôn tồn tại song song với các loại hệ quản trị CSDL quan hệ RDBMS (Relational Database Management System còn có các loại hệ quản trị CSDL phi quan hệ, gọi là NoSQL DB (NoSQL là từ được viết tắt của Not-Only SQL hay None-Relational SQL).
 
   Tại sao đã có RDBMS rồi mà lại cần có NoSQL DB để làm gì, thì đây là chính là lý do:
  • NoSQL DB giải quyết những khiếm khuyết và hạn chế của các loại RDBMS về tính năng, tốc độ, khả năng mở rộng,...
  • NoSQL DB không bị hạn chế bởi một data model cố định.Vì nó có thể sử dụng cho các loại dữ liệu có cấu trúc, bán cấu trúc hay phi cấu trúc. 
  • Với NoSQL DB bạn có khả năng mở rộng dữ liệu một cách dễ dàng mà không cần quan tâm tới những công việc như tạo khóa ngoại, khóa chính, tìm kiếm ràng buộc .v.v .
  • NoSQL DB sử dụng schema động cho các dữ liệu phi cấu trúc, giúp cho việc tích hợp dữ liệu với các loại ứng dụng khác nhau một đơn giản và nhanh chóng hơn
  • Để đổi lấy hiệu suất nhanh và khả năng mở rộng thì NoSQL DB đã phải bỏ qua các transaction và tính toàn vẹn của dữ liệu.
  • Một số NoSQL DB phổ biến được sử dụng nhiều hiện nay đó là MongoDB, Hbasse, CouchDB, Redis.

 

MongoDB là gì?
 
   Giờ thì chúng ta sẽ tiếp tục tìm hiểu MongoDB là gì? MongoDB là phần mềm cơ sở dữ liệu dạng NoSQL, có mã nguồn mở hỗ trợ đa nền tảng được thiết kế theo hướng đối tượng. Các bảng (trong MongoDB gọi là collection) có cấu trúc linh hoạt cho phép tổ chức và lưu trữ dữ liệu theo một cách linh động không bắt buộc có tính cấu trúc chặt chẽ như các CSDL SQL khác.
 
   Từ cách tiếp cận đó, mongodb có thể được sử dụng để lưu các dữ liệu có cấu trúc phức tạp. Các dữ liệu phức tạp có thể được lưu vào các bảng (trong mongodb thì khái niệm bảng - table được gọi là collection) dưới dạng json nên mang lại tính khả dụng và hiệu suất cao.
 
Ưu điểm của mongodb
 
   Mongodb được rất nhiều người tin dùng hiện nay ở trong số các NoSQL DB, đơn giản vì nó có nhiều điểm mạnh sau:
 
  • Mongodb lưu trữ các bản ghi rất dễ tái sử dụng như các tài liệu dạng json và được lưu trữ dưới dạng file nén BSON. Các bản ghi này có thể được truy vấn trực tiếp dưới dạng Json và điều này mang lại nhiều lợi ích:
  • Nó là dạng lưu trữ data tự nhiên
  • Cả dữ liệu cấu trúc và phi cấu trúc đều có thể được lưu trữ trong cùng 1 cấu trúc bản ghi
  • Có thể sử dụng dữ liệu json lồng nhau để lưu các dữ liệu phức tạp một cách hiệu quả
  • Json giúp cho việc thêm/bớt các trường dữ liệu trở nên đơn giản hơn rất nhiều,rất rất nhiều so với các NoSQL khác.
  • Ví dụ lưu trữ bản ghi dưới dạng Json:
 
  • Khả năng tùy biến mở rộng một cách linh hoạt
  • Cộng đồng phát triển lớn, số người dùng đông đảo nên không lo việc sẽ dead trong tương lai gần
 
Khi nào nên sử dụng MongoDB
 
   Khi các bạn đang tìm hiểu bài viết này thì có lẽ các bạn sẽ nhắm tới MongoDB để phục vụ cho học tập và công việc sau này của các bạn. Thì việc lựa chọn một loại DB được phụ thuộc vào rất nhiều yếu tố cả về kỹ thuật tới các chi phí phát triển và vận hành về sau.
 
   Tuy nhiên các bạn có thể tham khảo thêm một số trường hợp sau mà mình thấy phù hợp để sử dụng mongodb như:
 
  • Sử dụng document để lưu trữ dữ liệu, dễ dàng thêm bớt, mở rộng dữ liệu tùy ý.
  • Dữ liệu của bạn quá phức tạp hoặc có dạng phi cấu trúc.
  • Ứng dụng có tính chất Insert nhiều (write-intensive).
  • Cần hệ thống có cơ chế dự phòng cao (High Availabity) (phục vụ công việc).
  • Cần hệ thống có khả năng mở rộng nhanh chóng và dễ dàng (phục vụ công việc).
 
Một số thuật ngữ của MongoDB
 
   Khi bạn đã quen làm việc với RDBMS thì chuyển sang MongoDB ban đầu sẽ có chút khó làm quen bởi vì một số khái niệm và cơ chế của RDBMS sẽ khác với MongoDB.
 
   Các bạn có thể xem một số khái nhiệm tưởng tương giữa RDBMS với MongoDB như sau:
 
 
   Hẹn gặp lại các bạn ở các bài viết tiếp theo nhé!
 
 HỖ TRỢ TRỰC TUYẾN