Hướng dẫn sử dụng mongodb năm 2024

MongoDB, được biết đến như cơ sở dữ liệu NoSQL phổ biến nhất, là cơ sở dữ liệu định hướng tài liệu mã nguồn mở. Thuật ngữ 'NoSQL' có nghĩa là 'không có mối quan hệ' (Non-relational). Điều đó có nghĩa là MongoDB không dựa trên cấu trúc cơ sở dữ liệu quan hệ giống như bảng mà cung cấp một cơ chế hoàn toàn khác để lưu trữ và truy xuất dữ liệu. Định dạng lưu trữ này được gọi là BSON (tương tự như định dạng JSON).

Cấu trúc tài liệu MongoDB đơn giản:

Cấu trúc đơn giản của mongoDB

CSDL SQL sẽ lưu trữ dữ liệu ở định dạng bảng. Dữ liệu này được lưu trữ trong một mô hình dữ liệu được xác định trước, điều này sẽ không linh hoạt lắm đối với các ứng dụng đang phát triển nhanh trong thế giới thực ngày nay. Các ứng dụng hiện đại cần phải được kết nối với nhau, xã hội hóa và có tính tương tác hơn. Các ứng dụng ngày nay đang ngày càng lưu trữ nhiều dữ liệu và các dữ liệu đó đang cần phải được truy cập với tốc độ cao hơn.

Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) không phải là lựa chọn chính xác khi xử lý dữ liệu lớn do thiết kế của chúng không thể mở rộng theo quy mô ngang. Nếu CSDL chạy trên một máy chủ thì nó sẽ đạt đến giới hạn mở rộng. Cơ sở dữ liệu NoSQL có khả năng mở rộng hơn và cung cấp hiệu suất vượt trội. MongoDB là một cơ sở dữ liệu NoSQL có thể mở rộng quy mô bằng cách thêm ngày càng nhiều máy chủ và tăng hiệu suất với mô hình tài liệu linh hoạt của nó.

2. Sự khác nhau giữa RDBMS và MongoDB

Sự khác biệt giữa RDBMS & mongoDB

  • RDBMS có thiết kế lược đồ điển hình hiển thị số lượng bảng và mối quan hệ giữa các bảng này trong khi MongoDB là “document-oriented (dữ liệu tổ chức tự do không theo lược đồ). MongoDB sẽ sử dụng các “collections”, “documents” và không có khái niệm về lược đồ hoặc mối quan hệ.
  • Các giao dịch phức tạp không được hỗ trợ trong MongoDB vì các hoạt động tham gia phức tạp không khả dụng.
  • MongoDB cho phép cấu trúc tài liệu rất linh hoạt và có thể mở rộng. Ví dụ: một dữ liệu document của một tập hợp (collection) trong MongoDB có thể có hai trường (fields) trong khi tài liệu khác trong cùng một collection có thể có bốn.
  • MongoDB nhanh hơn so với RDBMS do các kỹ thuật lưu trữ và lập chỉ mục (indexing) hiệu quả.
  • Có một vài thuật ngữ có liên quan trong cả hai CSDL. Cái được gọi là “Table” (Bảng) trong RDBMS được gọi là “Collection” (Tập hợp) trong MongoDB. Tương tự, một Row (Hàng) được gọi là Document (Tài liệu) và Column (Cột) được gọi là Field (Trường). MongoDB cung cấp '_id' mặc định (nếu không được cung cấp rõ ràng) là số thập lục phân 12 byte đảm bảo tính duy nhất của mọi tài liệu. Nó tương tự như Primary key (Khóa chính) trong RDBMS.

3. Các tính năng chính của MongoDB

Các tính năng của mongoDB

  • Document Oriented: MongoDB lưu trữ subject chính với số lượng documents tối thiểu chứ không phải bằng cách chia nó thành nhiều cấu trúc quan hệ như RDBMS. Ví dụ: nó lưu trữ tất cả thông tin của một máy tính trong một tài liệu duy nhất được gọi là Máy tính và không nằm trong các cấu trúc quan hệ riêng biệt như CPU, RAM, Đĩa cứng, v.v.
  • Indexing: Nếu không lập chỉ mục, CSDL sẽ không truy vấn hiệu quả vì phải quét mọi tài liệu của tập hợp để chọn những tài liệu phù hợp cho việc truy vấn đó. Vì vậy, để tìm kiếm hiệu quả, Indexing là điều bắt buộc và MongoDB sử dụng nó để xử lý khối lượng dữ liệu khổng lồ trong thời gian rất ngắn.
  • Scalability: MongoDB mở rộng quy mô theo chiều ngang bằng cách sử dụng sharding (phân vùng dữ liệu trên các máy chủ khác nhau). Dữ liệu được phân vùng thành các khối dữ liệu bằng “shard key” và các khối dữ liệu này được phân phối đều trên các phân đoạn nằm trên nhiều máy chủ vật lý. Ngoài ra, các máy mới có thể được thêm vào cơ sở dữ liệu đang chạy.
  • Replication and High Availability: MongoDB tăng tính khả dụng của dữ liệu với nhiều bản sao dữ liệu trên các máy chủ khác nhau. Bằng cách cung cấp bản dự phòng, nó bảo vệ cơ sở dữ liệu khỏi các lỗi phần cứng. Nếu một máy chủ gặp sự cố, dữ liệu có thể được truy xuất dễ dàng từ các máy chủ đang hoạt động khác cũng có dữ liệu tương tự được lưu trữ trên chúng.
  • Aggregation: Các hoạt động tổng hợp xử lý các bản ghi dữ liệu và trả về kết quả tính toán. Nó tương tự như mệnh đề GROUPBY trong SQL. Một vài biểu thức tổng hợp là tổng, trung bình, tối thiểu, tối đa, v.v

4. Các trường hợp cần sử dụng MongoDB

MongoDB được thường được sử dụng nhiều hơn RDBMS trong các trường hợp sau:

  • Big data: Nếu bạn có lượng dữ liệu khổng lồ được lưu trữ trong các bảng, hãy nghĩ đến MongoDB thay vì CSDL RDBMS. MongoDB có giải pháp tích hợp để phân vùng và phân mảnh cơ sở dữ liệu của bạn.
  • Unstable Schema: Thêm một cột mới trong RDBMS thì khá khó khăn trong khi MongoDB vì không có lược đồ nên thêm một trường mới sẽ rất dễ dàng mà không ảnh hưởng đến các tài liệu cũ.
  • Distributed data: Vì nhiều bản sao dữ liệu được lưu trữ trên các máy chủ khác nhau, việc khôi phục dữ liệu sẽ nhanh chóng và an toàn ngay cả khi có lỗi phần cứng.

5. Các ngôn ngữ được hỗ trợ trong MongoDB:

MongoDB hiện cung cấp hỗ trợ trình điều khiển chính thức cho tất cả các ngôn ngữ lập trình phổ biến như C, C ++, Rust, C #, Java, Node.js, Perl, PHP, Python, Ruby, Scala, Go và Erlang.

6. MongoDB được sử dụng phổ biến bởi các công ty lớn

MongoDB đã được sử dụng làm phần mềm phụ trợ bởi một số trang web và dịch vụ lớn bao gồm EA, Cisco, Shutterfly, Adobe, Ericsson, Craigslist, eBay và Foursquare.