MongoDB là cơ sở dữ liệu phi quan hệ được nhiều người dùng quan tâm hiện nay. Tuy nhiên, một vài bạn đọc của Got It chưa thực sự hiểu rõ về cơ sở dữ liệu này. Bởi vậy, trong bài viết này chúng mình sẽ giúp bạn có cái nhìn tổng quan về MongoDB, MongoDB là gì cũng như tính năng nổi bật của nó nhé!
Mục lục
1. MongoDB là gì?
MongoDB là một cơ sở dữ liệu NoSQL, một dạng database hướng tài liệu. Chúng thường được sử dụng để lưu trữ dữ liệu khối lượng lớn. MongoDB không sử dụng cấu trúc dạng bảng như relational database. Thay vào đó, MongoDB sẽ lưu trữ dữ liệu dưới dạng Document JSON. Vì vậy, mỗi một collection sẽ các các kích cỡ và các document khác nhau. Bên cạnh đó, việc các dữ liệu được lưu trữ trong document kiểu JSON dẫn đến chúng được truy vấn rất nhanh.
Một chút thông tin bên lề về MongoDB: MongoDB được ra đời bởi MongoDB Inc. (một công ty phần mềm của Mỹ). Công ty được thành lập lần đầu tiên vào năm 2007 với tên gọi 10gen. Nó cũng là một PaaS (Platform as a Service) tương tự như Windows Azure và Google App Engine, sau đó đã được chuyển thành nguồn mở từ năm 2009.
MongoDB đã trở thành một trong những NoSQL database nổi trội nhất lúc bấy giờ, được dùng làm backend cho rất nhiều website như eBay, SourceForge và The New York Times.
2. Các feature của MongoDB
Hướng tài liệu
Vì MongoDB là cơ sở dữ liệu kiểu NoSQL. Nó 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, linh hoạt trong việc lưu trữ dữ liệu, thích ứng với tình hình và yêu cầu thực tế của doanh nghiệp.
Các ad hoc query
MongoDB hỗ trợ tìm kiếm bằng field, range query, regular expression và các phép tìm kiếm thông thường.
Indexing
Các index có thể được tạo để cải thiện hiệu suất của các tìm kiếm trong MongoDB. Bất kỳ field nào trong MongoDB document đều có thể được index.
Replication
“Nhân bản” là có một phiên bản giống hệt phiên bản đang tồn tại, đang sử dụng. Với cơ sở dữ liệu, nhu cầu lưu trữ lớn, đòi hỏi cơ sở dữ liệu toàn vẹn, không bị mất mát trước những sự cố ngoài ý muốn. Vì vậy, người ta nghĩ ra khái niệm “nhân bản”, nghĩa là tạo một phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, và lưu trữ chúng ở một nơi khác, đề phòng có sự cố.
Aggregation
Các Aggregation operation xử lý các bản ghi dữ liệu và trả về kết quả đã được tính toán. Các phép toán tập hợp nhóm các giá trị từ nhiều Document lại với nhau, và có thể thực hiện nhiều phép toán đa dạng trên dữ liệu đã được nhóm đó để trả về một kết quả duy nhất. Trong SQL, count(*) và GROUP BY là tương đương với Aggregation trong MongoDB.
Lưu trữ file
MongoDB được dùng như một hệ thống file tận dụng những function trên và hoạt động như một cách phân phối qua Sharding.
Cân bằng tải
Bằng cách sử dụng Sharding, MongoDB chia tỷ lệ theo chiều ngang để người dùng chọn một Shard key, xác định các dữ liệu được phân phối trong collection. Nhìn chung, dữ liệu được chia thành các phạm vi và được phân phối đồng đều dựa trên các Shard key. Nó chạy trên nhiều máy chủ, cân bằng tải hoặc sao chép dữ liệu để giữ hệ thống luôn hoạt động trong trường hợp có lỗi về phần cứng.
3. Một số thuật ngữ phổ biến được sử dụng trong MongoDB
_id
Đây là trường bắt buộc trong mọi tài liệu MongoDB. Trường _id đại diện cho một giá trị duy nhất trong tài liệu MongoDB. Trường _id giống như khóa chính của tài liệu. Nếu bạn tạo một tài liệu mới mà không có trường _id, MongoDB sẽ tự động tạo trường. Nếu chúng ta thấy ví dụ về bảng khách hàng ở trên, MongoDB sẽ thêm số nhận dạng duy nhất gồm 24 chữ số vào mỗi tài liệu trong bộ sưu tập.
Bộ sưu tập
Đây là một nhóm các tài liệu MongoDB. Tập hợp tương đương với một bảng được tạo trong bất kỳ RDMS nào khác như Oracle hoặc MS SQL. Một bộ sưu tập tồn tại trong một cơ sở dữ liệu duy nhất. Như đã thấy từ các bộ sưu tập giới thiệu không thực thi bất kỳ loại cấu trúc nào.
Con trỏ
Đây là một con trỏ đến tập kết quả của một truy vấn. Khách hàng có thể lặp lại qua một con trỏ để truy xuất kết quả.
Cơ sở dữ liệu
Đây là vùng chứa cho các bộ sưu tập như RDMS, trong đó nó là vùng chứa cho các bảng. Mỗi cơ sở dữ liệu có một bộ tệp riêng trên hệ thống tệp. Một máy chủ MongoDB có thể lưu trữ nhiều cơ sở dữ liệu.
Tài liệu
Bản ghi trong bộ sưu tập MongoDB về cơ bản được gọi là tài liệu. Đến lượt mình, tài liệu sẽ bao gồm tên trường và các giá trị.
Trường
Một cặp tên-giá trị trong tài liệu. Một tài liệu có không hoặc nhiều trường. Các trường tương tự như các cột trong cơ sở dữ liệu quan hệ.
Sơ đồ sau đây cho thấy một ví dụ về Trường với các cặp giá trị Khóa. Ví dụ bên dưới, CustomerID và 11 là một trong những cặp giá trị khóa được xác định trong tài liệu.
4. Ưu điểm của MongoDB là gì?
- Đầu tiên có thể nhắc đến là tính linh hoạt lưu trữ dữ liệu theo các kích cỡ khác nhau. Do dữ liệu dưới dạng hướng tài liệu JSON nên bạn có thể chèn vào thoải mái bất cứ thông tin gì bạn muốn.
- Khác với RDBMS, dữ liệu ở đây không bị ràng buộc và không phải tuân theo khuôn khổ nhất định. Điều này giúp bạn tiết kiệm thời gian cho việc kiểm tra sự thỏa mãn về cấu trúc nếu muốn chèn, xóa, cập nhật hay thay đổi các dữ liệu trong bảng.
- MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster – cụm các node chứa dữ liệu giao tiếp với nhau.
- Ưu điểm thứ tư là tốc độ truy vấn nhanh hơn nhiều so với hệ quản trị cơ sở dữ liệu quan hệ RDBMS do dữ liệu truy vấn được cached lên bộ nhớ RAM để lượt truy vấn sau diễn ra nhanh hơn mà không cần đọc từ ổ cứng.
- Cuối cùng cũng là một ưu điểm về hiệu suất truy vấn của MongoDB. Trường dữ liệu “_id” luôn được tự động đánh chỉ mục để đạt hiệu suất cao nhất.
4. Nhược điểm của MongoDB là gì?
Ngoài các ưu điểm vượt trội, vẫn còn một số hạn chế khi cài đặt và sử dụng bạn cần chú ý như sau:
- Dữ liệu trong MongoDB không bị ràng buộc như RDBMS. Nhưng người sử dụng lưu ý cẩn thận mọi thao tác để không xảy ra các kết quả ngoài ý muốn gây ảnh hưởng đến dữ liệu.
- Một nhược điểm mà “dân công nghệ” hay lo ngại là bộ nhớ của thiết bị. Chương trình này thường tốn bộ nhớ do dữ liệu được lưu dưới dạng key-value. Trong khi các collection chỉ khác về value nên sẽ lặp lại key dẫn đến thừa dữ liệu.
- Thông thường, dữ liệu thay đổi từ RAM xuống ổ cứng phải qua 60 giây thì chương trình mới thực hiện hoàn tất. Đây là nguy cơ bị mất dữ liệu nếu bất ngờ xảy ra mất điện trong vòng 60 giây đó.
5. Khi nào nên dùng MongoDB?
Mặc dù rất hữu dụng nhưng tùy theo tình huống khác nhau mà bạn sẽ cân nhắc có nên sử dụng chương trình này hay không, đó là trường hợp:
- Trang web của bạn có tính chất Insert bởi MongoDB có thể ghi với tốc độ cao và bảo mật an toàn.
- Một số hệ thống Big Data có yêu cầu truy vấn nhanh vì chương trình này có hiệu suất truy vấn dữ liệu khá cao.
- Bạn muốn tìm kiếm thông tin trong bộ nhớ “tràn ngập” những dữ liệu khác nhau, MongoDB có khả năng tìm kiếm thông tin liên quan nhanh.
- Máy chủ không có hệ quản trị cơ sở dữ liệu
Vì thế, trước khi dùng MongoDB, bạn cần phải cân nhắc kỹ lưỡng tính năng của nó có đáp ứng được trường hợp của bạn hay không để việc sử dụng không gặp khó khăn và đạt hiệu quả tốt nhất.
Trên đây là thông tin chi tiết nhất về cơ sở dữ liệu MongoDB. Chúng mình hy vọng, bạn sẽ có cái nhìn tổng quan nhất MongoDB là gì. Đồng thời bạn cũng có thể ứng dụng hiệu quả MongoDB vào các trường hợp cần thiết.