Xin chào tất cả các bạn, mình là Quân, hôm nay mình sẽ giới thiệu một cách tổng quan và gọn gàng nhất về cơ sở dữ liệu NoSQL và MongoDB nhé.
Những nội dung trong bài:
- Giới thiệu về cơ sở dữ liệu NoSQL.
- Giới thiệu về MongoDB.
- Tản mạn kết luận.
1. Giới thiệu về cơ sở dữ liệu NoSQL
NoSQL:
- NoSQL là một dạng cơ sở dữ liệu mã nguồn mở không sử dụng các câu lệnh T-SQL để truy vấn thông tin.
- NoSQL viết tắt bởi: None-Relational SQL, hay có nơi thường gọi là Not-Only SQL.
- Với NoSQL, có thể mở rộng dữ liệu một cách thoải mái mà không phải lo lắng về khóa ngoại hay là khóa chính, hoặc các công việc như là kiểm tra ràng buộc như hệ quản trị cơ sở dữ liệu truyền thống.
- Ưu điểm: NoSQL giải quyết được các vấn đề dữ liệu lớn (big data) về các hệ thống thông tin hoặc là phân tán dữ liệu.
- Nhược điểm: cũng từ ưu điểm trên, do không hạn chế việc mở rộng dữ liệu nên nó tồn tại một số nhược điểm như là: sự phụ thuộc vào từng bản ghi, tính nhất quán hoặc là đặc tính toàn vẹn dữ liệu.
- Có rất nhiều các hệ quản trị cơ sở dữ liệu NoSQL được tạo ra bởi các công ty lớn, như hình dưới đây:
2. Giới thiệu về MongoDB
MongoDB:
- MongoDB là một mã nguồn mở và là một tập tài liệu dùng cơ chế NoSQL để truy vấn, nó được viết bởi ngôn ngữ C++. Chính vì được viết bởi C++ nên nó có khả năng tính toán với tốc độ cao.
- MongoDB thích hợp cho các ứng dụng tầm trung trở lên. Nếu tỉ lệ lượng dữ liệu ghi vào CSDL của ứng dụng lớn hơn lượng đọc thì đây càng là lựa chọn hợp lý.
- MongoDB là một CSDL có khả năng mở rộng, hiệu suất cao, mã nguồn mở và hướng văn bản.
- Ưu điểm:
– Schema linh hoạt: Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau.
– Cấu trúc đối tượng rõ ràng: Tuy rằng cấu trúc của dữ liệu là linh hoạt nhưng đối tượng của nó được xác định rất rõ ràng. Sử dụng bộ nhớ nội tại, nên truy vấn sẽ rất nhanh.
– Không có các join: Điều này cũng góp phần tạo nên tốc độ truy vấn nhanh trên MongoDB.
– MongoDB rất dễ mở rộng và phù hợp cho các ứng dụng realtime thời gian thực.
- Nhược điểm:
– Điều đầu tiên phải kể đến ở đây là MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.
– MongoDB sử dụng sẽ hao tốn tài nguyên của hệ thống nhiều hơn RDBMS. Nhưng đến thời điểm hiện tại thì vấn đề này không còn là điều lo ngại nữa vì các máy tính mặt bằng chung cấu hình đều khá cao rồi.
- Một số trường hợp ứng dụng MongoDB:
– Khi website của chúng ta có tính chất INSERT cao, bởi vì mặc định MongoDB có sẵn cơ chế ghi với tốc độ cao và an toàn.
– Khi website của chúng ta của ở dạng real-time nhiều, nghĩa là nhiều người cùng thao tác với ứng dụng trong thời gian thực. Ví dụ như ứng dụng chat hay stream trực tuyến chẳng hạn.
– Với website có nhiều dữ liệu, giả sử ứng dụng web của chúng ta có đến 10 triệu bản ghi thì khá khó khăn để query được với Mysql. Chọn MongoDB vì MongoDB có khả năng tìm kiếm thông tin liên quan cũng khá nhanh nên trường hợp này nên dùng nó.
3. Tản mạn kết luận
- Với những ưu điểm của MongoDB nói riêng hay là NoSQL nói chung thì trong tương lai nó sẽ phát triển mạnh mẽ và dần dần thay thế các hệ quản trị CSDL quan hệ truyền thống trong các ứng dụng dữ liệu lớn (big data).
- Dĩ nhiên để thay thế hoàn toàn thì không được, bởi vì các ứng dụng web vừa và nhỏ nếu được xây dựng bằng MySQL hay các hệ cơ sở dữ liệu quan hệ SQL thì tốc độ truy vấn sẽ nhanh hơn nhiều so với việc sử dụng NoSQL, MongoDB.
- Hơn thế nữa, một ứng dụng không chỉ xây dựng trên một Database duy nhất mà nó còn có thể kết hợp cả SQL lẫn NoSQL.
Trên đây là chút ít kiến thức mình học hỏi được về NoSQL và MongoDB. Bài tiếp theo sẽ đi vào việc Cài đặt MongoDB và tool quản trị cơ sở dữ liệu MongoDB Compass trên Linux Mint, Ubuntu.
Cảm ơn các bạn đã xem bài viết của mình.
Xin chào và hẹn gặp lại các bạn ở những bài viết tiếp theo.
Best Regards – Trung Quân – Green Cat
Tài liệu tham khảo:
https://vi.wikipedia.org/wiki/NoSQL
“Thanks for awesome knowledges.”