Cơ sở dữ liệu MongoDB là gì? Tổng quan về MongoDB

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é!

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.

MongoDB là một cơ sở dữ liệu NoSQL

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.

Một số feature quan trọng của MongoDB

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.

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

https://d1iv5z3ivlqga1.cloudfront.net/wp-content/uploads/2021/04/29235048/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
December 02, 2021
Share this post to:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
Tổng quan về Prompt Engineering

Tổng quan về Prompt Engineering

Tác giả: Công Anh (Software Engineer | Got It AI) Trong tech blog số này, Got It sẽ cùng bạn tìm hiểu về Prompt Engineering cũng như một số kỹ thuật cơ bản giúp đầu ra của Large Language Models (LLMs) tối ưu nhất có thể! Mục lụcChatGPT là gì? Hoạt động như thế nào?Prompt […]
Top 3 bộ phim về trí tuệ nhân tạo hay  nhất bạn không nên bỏ lỡ (Phần 2)

Top 3 bộ phim về trí tuệ nhân tạo hay nhất bạn không nên bỏ lỡ (Phần 2)

Trí tuệ nhân tạo đã trở thành một chủ đề hấp dẫn trong ngành điện ảnh, mang đến cho khán giả những câu chuyện đầy cảm xúc và suy ngẫm về tương lai của con người và công nghệ. Dưới đây là danh sách Top 3 phim về trí tuệ nhân tạo không nên bỏ […]
Các bước tạo một thư viện Python

Các bước tạo một thư viện Python

Tác giả: Minh (Software Engineer | CAI) Trong Tech Blog số này, Got It sẽ cùng bạn tìm hiểu về 6 bước để tạo và phân phối một thư viện Python. Cụ thể, chúng ta sẽ viết một CLI command tương tự cowsay cùng với một function để các package khác có thể import và […]
GPT là gì? Các ứng dụng của GPT trong thực tế

GPT là gì? Các ứng dụng của GPT trong thực tế

Trong lĩnh vực Trí tuệ Nhân tạo, GPT (Generative Pre-trained Transformer) đã nhanh chóng trở thành một khái niệm quan trọng và đột phá. Trong bài viết này, chúng ta sẽ khám phá GPT là gì, cách nó hoạt động, và những ứng dụng tuyệt vời mà nó mang lại trong lĩnh vực công nghệ. […]
Phân biệt trí tuệ nhân tạo và học máy

Phân biệt trí tuệ nhân tạo và học máy

Trong thời đại số hóa hiện nay, trí tuệ nhân tạo (AI) và học máy (Machine Learning) đang trở thành hai thuật ngữ phổ biến trong lĩnh vực công nghệ. Mặc dù có sự tương đồng, nhưng chúng không phải là hai khái niệm hoàn toàn tương đương. Bài viết này sẽ giúp bạn hiểu […]
Sử dụng pre-commit để thực thi PEP8 chỉ trong 3 bước

Sử dụng pre-commit để thực thi PEP8 chỉ trong 3 bước

Tác giả: Kiên (Software Engineer | CAI) Đảm bảo code tuân thủ đầy đủ các quy tắc được đề xuất trong PEP8 là một điều vô cùng quan trọng, đặc biệt là trong làm việc nhóm, khi mà yếu tố dễ đọc, dễ hiểu, và dễ bảo trì code được đặt lên hàng đầu. Dẫu […]