[MongoDB P1] Giới thiệu về CSDL MongoDB
Lời mở đầu
Hello các bạn, đây là bài viết đầu tiên trong series bài viết "Những gì mình biết về MongoDB", series nói về một NoSQL DB cực kỳ phổ biến là MongoDB.
Trong nội dung bài này mình sẽ chia sẻ một cái nhìn tổng quan về MongoDB ở các khía cạnh:
- NoSQL là gì?
- MongoDB là gì?
- Tại sao và khi nào nên dùng MongoDB
- Ưu/nhược điểm của mongodb
- Các tính năng nổi bật của mongodb
Nào hãy cùng mình bắt đầu nhé!
NoSQL là gì
Nếu bạn là dân IT thì chắc hẳn ở trường các bạn đã được học về Cơ sở dữ liệu quan hệ (Rational Database Management System - RDBS) với các tiêu chuẩn thiết kế chuẩn 1, chuẩn 2, chuẩn 3... Tuy nhiê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 viết tắt của Not-Only SQL hay None-Relational SQL).
Vậy đã có RDBMS rồi sao lại cần có NoSQL DB nữa, thì đây là lý do:
- NoSQL DB giải quyết những khuyết điểm và hạn chế của các loại RDBMS về tốc độ, tính năng, khả năng mở rộng,...
- NoSQL DB 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. Nó không bị hạn chế bởi một data model có định
- Với NoSQL DB bạn có thể mở rộng dữ liệu mà không lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra 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
- NoSQL DB bỏ qua tính toàn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và khả năng mở rộng.
- NoSQL DB phổ biến có thể kể đến MongoDB, Cassandra, Hbasse, Redis, CouchDB
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.
Điểm mạnh của mongodb
Không phải tự nhiên mà mongodb lại phổ biến đến vậy trong số các NoSQL DB, đơn giản vì nó có nhiều ưu điểm:
-
Mongod lưu trữ các bản ghi 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 khá 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
- 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
Ví dụ lưu trữ bản ghi dưới dạng Json:
{ _id: , Emp_ID: "10025AE336" Personal_details:{ First_Name: "Radhika", Last_Name: "Sharma", Date_Of_Birth: "1995-09-26" }, Contact: { e-mail: "radhika_sharma.123@gmail.com", phone: "9848022338" }, Address: { city: "Hyderabad", Area: "Madapur", State: "Telangana" } }
-
Khả năng mở rộng: MongoDB hỗ trợ scale với tính năng Sharding. Điều này giúp cho chúng ta có thể mở rộng cụm mongodb dễ dàng
-
Cộng đồng phát triển lớn
Khi nào nên sử dụng MongoDB
Chắc là đọc tới đây thì có lẽ các bạn, hay cty của các bạn đã chọn sử dụng mongodb rồi. Việc lựa chọn một loại DB 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 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 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)
- Cần hệ thống có khả năng mở rộng nhanh chóng và dễ dàng
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 bỡ ngỡ vì một số khái niệm của RDBMS sẽ khác với MongoDB.
Các bạn có thể xem một ánh xạ giữa các khái niệm tương đương của RDBMS với MongoDB như sau:
Trong phần sau chúng ta sẽ tìm hiểu sâu hơn một chút về kiến trúc hệ thống MongoDB như thế nào nhé!
All rights reserved