MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB là gì và nó hoạt động như thế nào?

MongoDB là cơ sở dữ liệu NoSQL phổ biến nhất và được sử dụng rộng rãi. Nó là một DB hướng tài liệu mã nguồn mở. NoSQL được sử dụng để đề cập đến "không quan hệ". Điều này có nghĩa là cơ sở dữ liệu MongoDB không dựa trên quan hệ bảng như RDBMS vì nó cung cấp cơ chế lưu trữ và truy xuất dữ liệu riêng biệt.

Định dạng lưu trữ mà MongoDB sử dụng được gọi là BSON. Cơ sở dữ liệu được duy trì bởi MongoDB Inc. và được cấp phép theo Giấy phép Công cộng phía Máy chủ (SSPL).

Dưới đây là cấu trúc tài liệu MongoDB đơn giản:

{
  title: 'FossLinux',
  by: 'Abraham',
  url: 'https://www.fosslinux.com',
  type: 'NoSQL'
}

Nó hoạt động như thế nào?

MongoDB hoạt động ở hai lớp, cụ thể là:

  • Lớp dữ liệu
  • Lớp ứng dụng

Lớp ứng dụng thường được gọi là Lớp trừu tượng cuối cùng. Nó chứa hai phần: phụ trợ, phần máy chủ và giao diện người dùng, phần giao diện người dùng. Phần giao diện người dùng là nơi hiển thị nơi nhà phát triển, với sự hỗ trợ của MongoDB, tương tác với thiết bị di động hoặc web. Phần phụ trợ bao gồm máy chủ chủ yếu được sử dụng để thực hiện logic phía máy chủ. Bên cạnh đó, phần máy chủ chứa trình điều khiển và trình bao mongo hỗ trợ tương tác của máy chủ MongoDB bằng cách sử dụng các truy vấn.

Các truy vấn được gửi đến máy chủ nằm trong lớp dữ liệu. Máy chủ MongoDB nhận sau đó chuyển các truy vấn đến bộ máy lưu trữ, nơi các hoạt động đọc và ghi trên các tệp dữ liệu tương ứng được thực hiện. Mục tiêu chính của công cụ lưu trữ là quản lý dữ liệu.

Lưu ý: Máy chủ MongoDB không thực hiện các hoạt động ghi và đọc.

Hình ảnh bên dưới minh họa cách hoạt động của MongoDB:

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

Các tính năng chính của nó bao gồm:

1. Lập chỉ mục

Các chỉ mục nhằm cải thiện tốc độ và hiệu suất tìm kiếm của cơ sở dữ liệu. Các trường trong tài liệu của cơ sở dữ liệu này có thể được lập chỉ mục bằng chỉ mục / chỉ mục chính và phụ. Nếu không lập chỉ mục, mọi tài liệu trong cơ sở dữ liệu phải được quét để chọn những tài liệu phù hợp với truy vấn, điều này đôi khi có xu hướng không hiệu quả. Do đó, phải có lập chỉ mục để tìm kiếm tài liệu hiệu quả và MongoDB sử dụng nó để xử lý các vùng dữ liệu lớn một cách chính xác.

MongoDB cho phép người dùng lập chỉ mục bất kỳ trường nào đã được lập chỉ mục với cả chỉ mục phụ và chỉ số chính. Điều này giúp tìm kiếm truy vấn nhanh hơn nhiều, do đó nâng cao hiệu suất tổng thể.

2. Cân bằng tải

MongoDB nhân bản dữ liệu để giữ cho hệ thống luôn hoạt động ngay cả trong trường hợp lỗi phần cứng. Ngoài ra, quá trình này cho phép MongoDB chạy trên nhiều máy chủ do đó cân bằng tải.

3. Truy vấn đặc biệt

MongoDB hỗ trợ tìm kiếm trường, phạm vi và tìm kiếm biểu thức thường xuyên. Các truy vấn này trả về các trường tài liệu cụ thể và chúng cũng bao gồm các hàm JavaScript do người dùng xác định. Các truy vấn cũng có thể được định cấu hình để trả về một mẫu kết quả ngẫu nhiên có kích thước nhất định.

4. Nhân rộng

Bộ bản sao mà MongoDB cung cấp bao gồm hai hoặc nhiều bản sao dữ liệu. Các bộ này có thể hoạt động như các bản sao chính hoặc phụ bất kỳ lúc nào. Các tập hợp bản sao chính thực hiện đọc và ghi trong khi các tập hợp thứ cấp duy trì một bản sao dữ liệu của bản sao chính bằng cách sử dụng sao chép tích hợp sẵn. Nếu bản sao chính không thành công, tập hợp bản sao sẽ tự động thực hiện quy trình bầu cử để xác định xem thứ cấp nào sẽ trở thành bản sao chính. Các bản sao thứ cấp có thể phục vụ các hoạt động đọc theo tùy chọn, nhưng dữ liệu cuối cùng vẫn nhất quán theo mặc định.

5. Lưu trữ tệp

Cơ sở dữ liệu này hiển thị các chức năng để thao tác tệp và nội dung cho các nhà phát triển. Mongo DB có thể được sử dụng như một hệ thống tệp được gọi là Hệ thống tệp lưới (GridFS). Chức năng này chia tệp thành các phần và lưu trữ mỗi phần dưới dạng một tài liệu riêng biệt.

6. Tổng hợp

Để có khả năng sử dụng hiệu quả, MongoDB cung cấp khung tổng hợp. Tính năng này cho phép các nhà phát triển nhóm dữ liệu quy trình và nhận được một kết quả duy nhất ngay cả sau khi thực hiện các thao tác khác nhau trên dữ liệu nhóm. Có ba cách mà MongoDB cung cấp khung tổng hợp:

  • Chức năng thu nhỏ bản đồ
  • Quy trình tổng hợp
  • Tổng hợp theo mục đích duy nhất.

Kiểm tra hình ảnh bên dưới để biết cách tổng hợp hoạt động trong MongoDB:

7. Cơ sở dữ liệu ít giản đồ

Tính năng ít lược đồ cung cấp cho MongoDB tính linh hoạt hơn nhiều. Một bộ sưu tập có thể chứa các tài liệu khác nhau trong MongoDB. Thực tế là nó không có lược đồ cho phép nó lưu trữ các tài liệu riêng biệt có nội dung, trường và kích thước khác trong cùng một bộ sưu tập.

8. GridFS

Đây là một tính năng được sử dụng để lưu trữ và truy xuất tệp trong MongoDB. Nó chia tài liệu thành nhiều phần được gọi là các phần sau đó giữ chúng trong các tài liệu khác nhau. Tất cả các phần ngoại trừ phần cuối cùng có kích thước lưu trữ mặc định khoảng 255KB. GridFS rất hữu ích cho các tệp hơn 16MB.

Lưu ý: Khi GridFS được truy vấn cho một tệp, nó sẽ tập hợp tất cả các phần riêng biệt cần thiết để tạo thành tệp gốc. Dưới đây là phương pháp làm việc GridFS đơn giản hóa:

Các thành phần MongoDB

Các thành phần MongoDB cốt lõi và cách sử dụng chúng bao gồm:

  1. Bộ sưu tập - Chúng là một tập hợp các tài liệu MongoDB. Các đối tác RDBMS của chúng là các bảng. Điều cần thiết là phải hiểu rằng các bộ sưu tập không thực thi bất kỳ cấu trúc nào. Một bộ sưu tập luôn tồn tại trong một DB duy nhất.
  2. Tài liệu - Đây là tập hợp dữ liệu được lưu trữ ở định dạng BSON. Đối tác RDBMS của nó là Row. Bản ghi trong MongoDB được gọi là Tài liệu. Các tài liệu trong MongoDB chứa tên trường và giá trị tương ứng của chúng.
  3. Trường - Đây là một phần tử duy nhất trong tài liệu MongoDB có chứa các giá trị là trường và cặp giá trị. Trong cơ sở dữ liệu quan hệ, các trường tương tự như cột. Một trường có thể được coi là một cặp tên-giá trị trong tài liệu theo thuật ngữ đơn giản.
  4. _id - Mọi tài liệu MongoDB đều yêu cầu trường này. Trường _id có thể được coi là khóa chính trong cơ sở dữ liệu quan hệ. Nó đại diện cho một phiên bản hoặc giá trị duy nhất trong tài liệu MongoDB. Nếu bạn cố tình tạo tài liệu trong MongoDB mà không có trường _id, tài liệu đó sẽ được tạo tự động.
  5. Con trỏ - Đây là một con trỏ chỉ ra kết quả đã đặt của một truy vấn. Thông qua sự hỗ trợ của con trỏ, khách hàng có thể truy xuất kết quả.
  6. JSON - Đây là một ký hiệu JavaScript. Nó là văn bản thuần túy, một định dạng con người có thể đọc được được sử dụng để thể hiện dữ liệu có cấu trúc. Hàng nghìn ngôn ngữ lập trình hỗ trợ JSON.
  7. Cơ sở dữ liệu - Giống như trong RDBMS, trong đó cơ sở dữ liệu là một vùng chứa các bảng, trong MongoDB, cơ sở dữ liệu là một vùng chứa các bộ sưu tập. Mỗi cơ sở dữ liệu đều chứa các bộ tệp của riêng nó trên hệ thống tệp. Do đó, máy chủ MongoDB có thể lưu trữ nhiều hơn một cơ sở dữ liệu.

Phiên bản MongoDB

MongoDB đã được phát hành trong nhiều phiên bản khác nhau, đó là;

  • Máy chủ Cộng đồng MongoDB - Đây là phiên bản mã nguồn mở của MongoDB được cung cấp miễn phí cho người dùng Linux, Windows và macOS.
  • Máy chủ MongoDB Enterprise - Đây là phiên bản thương mại của MongoDB và có thể được tìm thấy như một phần của gói đăng ký MongoDB Enterprise Advanced.
  • Tập bản đồ MongoDB - Thường được gọi là MongoDB Cloud. MongoDB Atlas là một gói MongoDB theo yêu cầu hoàn toàn chạy và được quản lý trên các nền tảng Microsoft Azure, Google Cloud và AWS. Đây là phiên bản MongoDB Enterprise được lưu trữ trên đám mây. Phiên bản Atlas chứa tất cả các tính năng của máy chủ MongoDB Enterprise và hơn thế nữa. Do đó, điều này ngụ ý rằng MongoDB Atlas tiên tiến hơn nhiều so với tất cả các ấn bản MongoDB khác.

Tại sao nên sử dụng MongoDB?

  1. Cơ sở dữ liệu quan hệ chứa dữ liệu có cấu trúc, nhưng còn dữ liệu phi cấu trúc thì sao? Người dùng vẫn có thể thêm nhiều dạng dữ liệu ngẫu nhiên khác nhau vào MongoDB mà không cần khai báo loại của chúng.
  2. Người dùng có thể tải dữ liệu khối lượng lớn bằng phương pháp sharding tích hợp, giúp phân tách dữ liệu và truyền tải dữ liệu trên nhiều máy chủ một cách thuận tiện, nhờ tính khả dụng và tính linh hoạt của MongoDB trong môi trường dựa trên đám mây.
  3. Lược đồ động của MongoDB cho phép người dùng thử nghiệm và tìm hiểu những điều mới một cách nhanh chóng. Mọi thứ đều có thể được tích hợp vào MongoDB một cách nhanh chóng và không tốn kém.
  4. Nó giúp việc thu thập dữ liệu dựa trên vị trí trở nên đơn giản mà không yêu cầu các thủ tục phức tạp.
  5. Hàng triệu thiết bị được liên kết thường xuyên tạo dữ liệu trên Internet, gây khó khăn cho việc trích xuất và xử lý dữ liệu đó, nhưng MongoDB có thể làm điều đó trong một cơ sở dữ liệu duy nhất.
  6. MongoDB có thể chứa nhiều loại dữ liệu từ một số nguồn để cung cấp sức mạnh cho trang web dựa trên CMS. Thông tin này bao gồm các tweet, nhận xét, tin nhắn đa phương tiện và các loại thông tin khác.
  7. Nó là một người bạn đồng hành tuyệt vời để phát triển ứng dụng dành cho thiết bị di động.
  8. Nó có thể cung cấp cho người dùng phân tích khách hàng theo thời gian thực, mang lại trải nghiệm tùy chỉnh rất cần thiết.
  9. Đây là một cơ sở dữ liệu chi phí thấp. Nếu bạn là một doanh nghiệp siêu nhỏ hoặc nhỏ, MongoDB là một lựa chọn lưu trữ tốt hơn vì dễ quản lý và thiết lập.
  10. Công cụ tìm kiếm mạnh mẽ trong MongoDB sẽ cho người dùng biết dữ liệu đến từ đâu.

Ưu và nhược điểm của MongoDB

Ưu điểm

  1. MongoDB vượt trội hơn nhiều so với cơ sở dữ liệu quan hệ nếu một người có một lượng dữ liệu đáng kể và muốn phân tán nó trên nhiều máy chủ để cân bằng tải.
  2. Các truy vấn tìm kiếm trong MongoDB nhanh hơn vì chúng phải được diễn giải thành một máy chủ duy nhất để truy cập.
  3. Nó cung cấp tính linh hoạt, ngụ ý rằng họ nên sử dụng MongoDB để lưu trữ dữ liệu phi cấu trúc vì đây là cách dễ dàng hơn nhiều.

Nhược điểm

  1. Trong MongoDB, không có cách nào để kết hợp các bảng; do đó, một người sẽ phải thực hiện thủ công mỗi khi cần sử dụng tính năng này, dẫn đến việc viết mã không đẹp mắt và tốn thời gian.
  2. Nó sử dụng nhiều bộ nhớ vì nó phải lưu khóa cho mỗi tài liệu vì dữ liệu xung đột là điều có thể xảy ra.
  3. Khi bạn bắt đầu sử dụng một tính năng, nó sẽ khóa toàn bộ cơ sở dữ liệu, gây ra sự cố đồng thời.
  4. Nó không tự động làm điều này; do đó người dùng phải đảm bảo rằng thao tác là một giao dịch theo cách thủ công.

10 Câu hỏi thường gặp về MongoDB hàng đầu

Phần này sẽ cung cấp câu trả lời cho một số câu hỏi MongoDB thường gặp. Bạn có thể kiểm tra nó vì hầu hết các câu hỏi phổ biến đã được trả lời và bạn có thể may mắn tìm thấy giải pháp cho vấn đề của mình tại đây.

1. Làm cách nào để học MongoDB?

Cách dễ nhất và phổ biến nhất để học MongoDB là thông qua các khóa đào tạo trực tuyến do MongoDB cung cấp cho các nhà phát triển. Các khóa học được phát triển và hướng dẫn bởi các kỹ sư chuyên gia MongoDB, những người thông thạo với MongoDB. Các khóa học này miễn phí và bao gồm mọi khía cạnh bạn cần biết để trở thành chuyên gia MongoDB. Hầu hết các chuyên gia đã học cách sử dụng phương pháp này.

Do đó, bạn sẽ không phải là một ngoại lệ xuất sắc nếu bạn làm theo. Các khóa học Trực tuyến cung cấp các ứng dụng trong thế giới thực giúp người dùng hiểu thêm về chủ đề này. Quá trình đào tạo trực tuyến diễn ra theo nhịp độ của bản thân, nghĩa là bạn xác định thời gian học chúng sẽ mất bao lâu. Bên cạnh đó, các khóa học là các bài tập bổ sung giúp người mới học và vận dụng nhiều hơn trên MongoDB. Ghé thăm Đại học MongoDB để nhận rất nhiều khóa học miễn phí và học MongoDB.

2. Máy chủ MongoDB có được sử dụng miễn phí không?

Đúng. Máy chủ MongoDB được sử dụng miễn phí tùy thuộc vào gói bạn chọn sử dụng. Ví dụ:máy chủ cộng đồng có thể truy cập được cho tất cả người dùng. Tuy nhiên, nếu bạn yêu thích nhiều chức năng hơn, bạn có thể sử dụng phiên bản trả phí, chẳng hạn như phiên bản MongoDB Enterprise hoặc Atlas.

3. Giải thích sự khác biệt giữa MongoDB và cơ sở dữ liệu quan hệ?

Hầu hết các cơ sở dữ liệu quan hệ như MySQL, Oracle, SQL Server và Postgres đều được xây dựng trên các kiến ​​trúc được thiết kế ban đầu từ lâu (hơn 40 năm). Các yêu cầu ứng dụng trong thời gian đó khác với các yêu cầu ứng dụng thời hiện đại.

MongoDB được xây dựng trên kiến ​​trúc hệ thống phân tán, không giống như cơ sở dữ liệu quan hệ, cho phép người dùng mở rộng cơ sở dữ liệu của họ trên các trường hợp khác nhau một cách nhanh chóng. để phân tích chuyên sâu, hãy kiểm tra sự khác biệt giữa MongoDB và MySQL (một cơ sở dữ liệu quan hệ.) Mục đích chính của việc thiết kế MongoDB là để tăng năng suất. Tính linh hoạt của lược đồ là thứ mà hầu hết người dùng đang tìm kiếm và đó là một trong những tính năng tuyệt vời do MongoDB cung cấp.

4. Làm cách nào để có được giấy phép thương mại MongoDB?

Để có được giấy phép thương mại MongoDB, bạn có thể mua giấy phép này từ MongoDB Enterprise Advanced.

5. Giải thích cách dữ liệu được lưu trữ trong MongoDB?

Trong MongoDB, dữ liệu được lưu trữ trong tài liệu BSON sử dụng cấu trúc dữ liệu định dạng JSON. Tài liệu chứa nhiều trường và mỗi trường có một giá trị kiểu dữ liệu cụ thể bao gồm dữ liệu nhị phân, mảng và tài liệu con. Các tài liệu có chung cấu trúc tương tự được lưu trữ và sắp xếp dưới dạng bộ sưu tập.

6. Người ta có thể chạy MongoDB ở đâu?

Bạn có thể tải xuống, cài đặt và chạy MongoDB từ mọi nơi. Miễn là bạn hoàn thành quyền tự do khóa nền tảng, bạn có thể chạy MongoDB từ mọi nơi. Ví dụ:phiên bản MongoDB Atlas cung cấp cho người dùng dịch vụ được quản lý và tùy chỉnh hoàn toàn trên AWS, Google Cloud và Azure hoạt động trên nguyên tắc trả tiền khi sử dụng. MongoDB Ops Manager là một trong những cách thay thế tốt nhất để chạy MongoDB trên cơ sở hạ tầng của bạn. Điều này giúp các nhóm theo dõi, sao lưu, mở rộng quy mô và triển khai MongoDB dễ dàng và nhanh chóng.

7. Giải thích tại sao MongoDB lại hữu ích?

MongoDB được xây dựng dựa trên ba nguyên tắc thiết kế chính cho phép người dùng cùng nhau xây dựng các ứng dụng chất lượng cao và nhanh hơn. Ba nguyên tắc thiết kế cốt lõi là:

Thiết kế hệ thống phân tán cho phép người dùng phân bổ dữ liệu ở nơi họ muốn một cách thông minh.
Trải nghiệm hợp nhất - cho phép người dùng tự do chạy ở bất cứ đâu. Nguyên tắc thiết kế cốt lõi này cho phép loại bỏ khóa nhà cung cấp đồng thời cho phép người dùng bảo vệ các ứng dụng của họ trong tương lai.
Mô hình dữ liệu tài liệu - Tính năng này cung cấp cho người dùng cách tốt nhất và đơn giản để làm việc với dữ liệu.

8. Khi nào thì nên sử dụng MongoDB?

MongoDB là một cơ sở dữ liệu NoSQL đa năng có thể được sử dụng trên các ứng dụng phân tích và một loạt các ứng dụng OLTP khác. Một loạt các ứng dụng có thể được giải quyết bằng MongoDB Atlas và MongoDB Server.

9. Giải thích cách MongoDB bảo mật dữ liệu của khách hàng?

MongoDB chứa các tính năng mở rộng giúp bảo mật, phát hiện, kiểm soát và bảo vệ dữ liệu khách hàng. Dưới đây là một số tính năng chính hỗ trợ dữ liệu của khách hàng an toàn:

Ủy quyền -
RBAC (Kiểm soát truy cập dựa trên vai trò) cho phép người dùng định cấu hình các quyền chi tiết cho phép người dùng hoặc các đặc quyền dựa trên ứng dụng cần thiết để thực hiện tác vụ của họ.

Kiểm toán rất quan trọng đối với việc tuân thủ quy định vì nó cho phép quản trị viên bảo mật sử dụng nhật ký kiểm tra gốc của MongoDB để ghi lại các hoạt động và thay đổi cơ sở dữ liệu nhất định.

Xác thực - MongoDB cung cấp một cơ chế vững chắc khả thi, đáp ứng thách thức, đơn giản hóa việc kiểm soát truy cập cơ sở dữ liệu dựa trên SCRAM-256 cùng với việc giới thiệu cơ sở hạ tầng bảo mật doanh nghiệp tích hợp. Ngoài ra, một số tính năng bạn nhận được là Windows Active Directory, chứng chỉ x.509, LDAP và Kerberos.

Mã hóa mọi nơi - Trong khi chuyển động, dữ liệu MongoDB có thể được mã hóa trên các mạng và khi ở trạng thái nghỉ, dữ liệu có thể được mã hóa trên đĩa hoặc bản sao lưu. Cuối cùng, dữ liệu MongoDB có thể được mã hóa trong cơ sở dữ liệu khi đang sử dụng.

Kết luận

Bài viết này đã trình bày toàn diện tất cả các khía cạnh mà người ta cần biết liên quan đến MongoDB. Theo thời gian, người dùng đã theo đuổi năng suất nhanh chóng mà MongoDB cung cấp cho người dùng. Không giống như cơ sở dữ liệu quan hệ, như đã được đề cập trong bài viết, MongoDB cung cấp cho người dùng không gian để mở rộng cơ sở dữ liệu của họ một cách nhanh chóng.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Aggregation:Làm thế nào để có được tổng số bản ghi?

  2. So sánh các mảng và trả về sự khác biệt

  3. Mongo Triple Compound Index

  4. Điều gì đang xảy ra với Meteor và Fibers / bindEnosystem ()?

  5. Cách tốt nhất để lưu trữ MongoDB trên DigitalOcean