MongoDB Là Gì? Hướng Dẫn Cài Đặt MongoDB Trên CentOS 7

Theo dõi Thuevpsgiare.vn trên Google News
  • Home
  • Blog
  • MongoDB Là Gì? Hướng Dẫn Cài Đặt MongoDB Trên CentOS 7

5/5 - (1 bình chọn)

MongoDB là một hệ thống document-oriented database và hoàn toàn miễn phí, được phân loại là một loại NoSQL database bởi vì nó không dựa vào cấu trúc cơ sở dữ liệu quan hệ dựa trên bảng truyền thống.

Vậy chi tiết MongoDB là gì? Khi nào nên sử dụng MongoDB? Công dụng của MongoDB ra sao? Ưu và nhược điểm của MongoDB kèm theo đó là hướng dẫn cài đặt MongoDB trên CentOS 7. Cùng theo dõi bài viết dưới đây của Thuevpsgiare.vn.

MongoDB là gì?

MongoDB xuất hiện lần đầu tại thế hệ 10 của công nghệ vào tháng 10 năm 2007 do MongoDB Inc. phát triển. Lúc đó, MongoDB là một phần của sản phẩm PaaS (Platform as a Service) tương tự như Windows Azure và Google App Engine. Từ năm 2009, MongoDB đã được chuyển thành một dự án mã nguồn mở.

MongoDB là gì

MongoDB là gì?

Với đặc điểm linh hoạt và khả năng làm việc tốt, MongoDB nhanh chóng trở thành một trong những hệ thống database NoSQL phổ biến nhất. Nó được sử dụng làm hệ thống backend cho nhiều website nổi tiếng như: eBay, SourceForge và The New York Times.

Công dụng của MongoDB

MongoDB không chỉ giúp các tổ chức lưu trữ được lượng lớn dữ liệu mà còn có những ứng dụng quan trọng khác như:

  • Tích hợp và quản lý dữ liệu đa dạng: tổ chức kết hợp và quản lý một loạt dữ liệu đa dạng từ nguồn khác nhau một cách hiệu quả.
  • Mô tả cấu trúc dữ liệu phức tạp: MongoDB lưu trữ dữ liệu với cấu trúc phức tạp, giúp các tổ chức mô tả các thông tin chi tiết một cách linh hoạt.
  • Cung cấp dữ liệu cho các ứng dụng hiệu suất cao: hỗ trợ việc truy xuất dữ liệu, làm cho các ứng dụng hoạt động mượt mà hơn và có hiệu suất cao.
  • Hỗ trợ các ứng dụng đám mây lai và đa đám mây: tích hợp với các mô hình đám mây khác nhau, cho phép tổ chức linh hoạt trong việc triển khai ứng dụng trên các nền tảng đám mây.
  • Hỗ trợ phương pháp phát triển Agile: MongoDB phù hợp với quá trình phát triển Agile, giúp các nhóm phát triển làm việc cùng nhau một cách hiệu quả và linh hoạt.

    Công dụng của MongoDB

    Công dụng của MongoDB

Trong MongoDB, thay vì sử dụng table và row như trong cơ sở dữ liệu quan hệ, ta sẽ làm việc với các “collection” và “document.” Mỗi “document” trong MongoDB được tạo thành từ các cặp “khóa-giá trị,” là đơn vị dữ liệu cơ bản của hệ thống. Các “collection” tương đương với “bảng” trong SQL là nơi chứa các bộ dữ liệu “document.”

Khi nào nên sử dụng MongoDB?

Quản lý và truyền tải content – quản lý nhiều loại product của content khác nhau trong một kho dữ liệu duy nhất mà không cần thêm sự phức tạp từ hệ thống content.

Cấu trúc Mobile và Social – MongoDB cung cấp một platform mạnh mẽ, phản xạ nhanh chóng và dễ mở rộng cho phép triển khai nhiều tính năng đột phá, phân tích thời gian thực và hỗ trợ toàn cầu.

Quản lý data khách hàng – MongoDB tận dụng khả năng query nhanh chóng để phân tích dữ liệu người dùng với quy mô lớn và các mô hình data phức tạp. Điều này được thực hiện thông qua cấu trúc linh hoạt của schema và tự động sharding để mở rộng chiều ngang.

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

Dưới đây là một số ưu và nhược điểm của MongoDB mà bạn cần nắm và hiểu rõ:

Ưu điểm của MongoDB

MongoDB mang lại một số lợi ích quan trọng cho người sử dụng:

  • Không yêu cầu schema: Giống như nhiều cơ sở dữ liệu NoSQL khác, MongoDB không đòi hỏi phải xác định trước schema.
  • Hỗ trợ lưu trữ mọi loại data: cho phép người dùng dễ dàng thêm mới các trường dữ liệu vào document theo nhu cầu của họ, và cũng giúp việc mở rộng cơ sở dữ liệu MongoDB trở nên thuận tiện hơn so với cơ sở dữ liệu quan hệ truyền thống.
  • Hướng document: Một trong những ưu điểm của việc sử dụng document là các tài liệu này ánh xạ với các kiểu dữ liệu gốc trong một số ngôn ngữ lập trình. Việc nhúng các tài liệu document cũng giảm sự cần thiết của việc kết nối với cơ sở dữ liệu, và điều này có thể giúp giảm chi phí.
  • Khả năng mở rộng: Kiến trúc mở rộng theo chiều ngang của MongoDB giúp bạn xây dựng ứng dụng có khả năng xử lý lượng truy cập tăng đột ngột khi doanh nghiệp của bạn phát triển.

Đặc biệt, việc phân chia dữ liệu (sharding) cho phép cơ sở dữ liệu phân phối dữ liệu trên một cụm máy. MongoDB cũng hỗ trợ tạo vùng dữ liệu dựa trên shard key để tối ưu hóa hiệu suất và quản lý dữ liệu một cách hiệu quả.

  • Hỗ trợ bên thứ ba: MongoDB cung cấp hỗ trợ cho nhiều công cụ lưu trữ khác nhau và cung cấp API cho phép các bên thứ ba phát triển các công cụ lưu trữ dữ liệu riêng của họ thông qua giao diện có thể cắm được (pluggable storage engine API).
  • Linh hoạt lưu trữ tệp dung lượng lớn: MongoDB đã phát triển hệ thống riêng có tên GridFS, tương tự như hệ thống tệp phân tán Hadoop. Hệ thống này cho phép lưu trữ các tệp có kích thước lớn hơn giới hạn của BSON (16 MB cho mỗi document).

Nhược điểm của MongoDB

  • Không phù hợp cho các mô hình giao dịch đòi hỏi độ chính xác cao do thiếu ràng buộc.
  • Thiếu khả năng thực hiện các transaction ngân hàng có tính toàn vẹn và đáng tin cậy.
  • Phụ thuộc vào bộ nhớ RAM vì dữ liệu chủ yếu được xử lý trong RAM, do đó cần có một lượng lớn bộ nhớ.
  • Dữ liệu không được ghi vào ổ cứng ngay lập tức, có nguy cơ mất dữ liệu khi xảy ra sự cố như mất điện đột ngột.

Hướng dẫn cài đặt MongoDB trên CentOS 7

Điều kiện tiên quyết

Trước khi bạn thực hiện theo các bước theo hướng dẫn bên dưới, xin vui lòng kiểm tra xem rằng có phải bạn đang sử dụng tài khoản người dùng thông thường, non-root và có đặc quyền sudo.

Bước 1: Thêm MongoDB Repository
Gói mongodb-org không có sẵn trong kho lưu trữ mặc định của CentOS. Tuy nhiên, MongoDB cung cấp một kho lưu trữ riêng. Hãy thêm kho lưu trữ này vào máy chủ của bạn.

hướng dẫn cài đặt MongoDB trên CentOS 7

Hướng dẫn cài đặt MongoDB trên CentOS 7

Sử dụng vi editor, bạn có thể tạo một tệp có tên là .repo để cấu hình trình quản lý gói yum trên CentOS:

$ sudo vi /etc/yum.repos.d/mongodb-org.repo

Tiếp theo, bạn hãy truy cập phần “Cài đặt trên Red Hat” trong tài liệu MongoDB và thêm thông tin về kho lưu trữ cho bản phát hành ổn định mới nhất vào tệp:

/etc/yum.repos.d/mongodb-org.repo

[mongodb-org-3.4] 

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb

org/3.4/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

Sau đó lưu và đóng file.

Trước khi tiến hành, hãy đảm bảo rằng kho lưu trữ MongoDB đã được thêm vào trong danh sách các kho lưu trữ được kích hoạt của yum. Bạn có thể sử dụng lệnh “repolist” để hiển thị danh sách các kho lưu trữ được kích hoạt:

$ yum repolist

Output

. . . repo id                                   repo name

base/7/x86_64                            CentOS-7 – Base

extras/7/x86_64                          CentOS-7 – Extras

mongodb-org-3.2/7/x86_64        MongoDB Repository

updates/7/x86_64                       CentOS-7 – Updates

. . .

Khi MongoDB Repository tại chỗ, hãy tiến hành việc cài đặt.

Bước 2: Cài đặt MongoDB

Bạn có thể cài đặt gói mongodb-org từ một kho lưu trữ bên thứ ba thông qua tiện ích yum.

$ sudo yum install mongodb-org

Trong quá trình cài đặt, bạn sẽ nhận thấy có hai thông báo hỏi: “Is this ok [y / N]”. Thông báo đầu tiên yêu cầu xác nhận cài đặt gói MongoDB, và thông báo thứ hai yêu cầu bạn nhập một GPG key. Publisher MongoDB đã ký các phần mềm của họ và yum sử dụng key này để xác minh tính toàn vẹn của các gói bạn đang tải về. Trong cả hai thông báo này, hãy nhập “Y” và sau đó nhấn phím ENTER.

Tiếp theo, bạn hãy khởi động dịch vụ MongoDB với tiện ích systemctl:

$ sudo systemctl start mongod

Mặc dù trong hướng dẫn này không sử dụng các lệnh trên, bạn vẫn có khả năng thay đổi trạng thái của dịch vụ MongoDB bằng cách sử dụng các lệnh “reload” và “stop”.

Lệnh “reload” yêu cầu tiến trình “mongod” đọc lại tệp cấu hình, thường là /etc/mongod.conf, và áp dụng các thay đổi mà bạn đã thực hiện mà không cần phải khởi động lại MongoDB.

$ sudo systemctl reload mongod

Lệnh stop sẽ tạm dừng tất cả quá trình chạy mongod.

$ sudo systemctl stop mongod

Tiện ích “systemctl” không trực tiếp cung cấp kết quả sau khi bạn thực hiện lệnh “start” cho dịch vụ. Tuy nhiên, bạn có thể kiểm tra liệu dịch vụ đã bắt đầu thành công hay chưa bằng cách xem phần cuối của tệp tin “mongod.log” sử dụng lệnh “tail”.

$ sudo tail /var/log/mongodb/mongod.log

Output

. . . 

[initandlisten] waiting for connections on port 27017

Output “waiting for a connection” xác nhận rằng MongoDB đã khởi động thành công và hiện ta đã sẵn sàng truy cập vào database server bằng MongoDB Shell:

$ mongo

Lưu ý: Khi bạn bắt đầu khởi chạy MongoDB Shell, bạn có thể sẽ thấy một cảnh báo hiện ra như sau:

** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

MongoDB là một ứng dụng sử dụng luồng (threaded application) có khả năng khởi chạy các tiến trình bổ sung để xử lý workload. Cảnh báo này cho biết MongoDB hoạt động hiệu quả nhất khi số tiến trình mà nó được phép tạo (spin up) là bằng một nửa số lượng tệp mà nó có thể mở tại bất kỳ thời điểm nào. Để khắc phục cảnh báo này, bạn có thể thay đổi processes soft rlimit value cho mongod bằng cách chỉnh sửa tệp 20-nproc.conf:

$ sudo vi /etc/security/limits.d/20-nproc.conf

Hãy thêm dòng sau vào cuối file:

/etc/security/limits.d/20-nproc.conf

. . .

mongod soft nproc 32000

Để áp dụng giới hạn mới cho MongoDB, bạn cần khởi động lại dịch vụ MongoDB bằng tiện ích systemctl:

$ sudo systemctl restart mongod

Sau khi bạn đã kết nối thành công với MongoDB Shell và cảnh báo đã chấm dứt. Bạn có thể khám phá cách tương tác với MongoDB bằng cách sử dụng câu lệnh db.help(). Câu lệnh này sẽ hiển thị danh sách các phương thức mà bạn có thể sử dụng với db object. Điều này giúp bạn tìm hiểu và sử dụng MongoDB từ shell một cách dễ dàng.

db.help()

Output

DB methods: 

db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ] 

db.auth(username, password) 

db.cloneDatabase(fromhost) 

db.commandHelp(name) returns the help for the command 

db.copyDatabase(fromdb, todb, fromhost) 

db.createCollection(name, { size : ..., capped : ..., max : ... } ) db.createUser(userDocument) 

db.currentOp() displays currently executing operations in the db 

db.dropDatabase() 

. . .

Để tiếp tục chạy tiến trình mongod trong nền và thoát khỏi MongoDB Shell, bạn có thể sử dụng lệnh “exit”.

exit

Output

Bye

Bước 3: Xác minh Startup

Một database-driven application không thể hoạt động mà không có cơ sở dữ liệu. Do đó, quan trọng là MongoDB daemon, mongod, được khởi động tự động cùng với hệ thống. Bạn có thể sử dụng tiện ích systemctl để kiểm tra trạng thái khởi động của nó:

$ systemctl is-enabled mongod; echo $?

Một output zero confirms và enabled daemon là điều ta đang cần, tuy nhiên, việc xác nhận disabled daemon sẽ không bắt đầu.

Output

. . .

enabled

0

Trong trường hợp của disabled daemon, ta hãy sử dụng tiện ích systemctđể kích hoạt nó:

Bây giờ, ta đã cài đặt một running instance MongoDB nó sẽ tự động khởi động mỗi khi hệ thống được khởi động lại.

Bước 4: Nhập một Example Dataset (tùy chọn)

Trái với một số database servers khác, MongoDB không cung cấp dữ liệu mẫu trong cơ sở dữ liệu thử nghiệm (test database) mặc định, ta không sử dụng dữ liệu thật của sản phẩm, tránh gây rủi ro cho production data. Thay vào đó, để có dữ liệu mẫu để làm việc, ta có thể tải xuống tập dữ liệu ví dụ từ trang “Import Example Dataset” (https://docs.mongodb.com/getting-started/shell/import-data/) trong tài liệu “Getting Started with MongoDB“. Tài liệu JSON chứa một danh sách các nhà hàng (restaurants) mà chúng ta sẽ sử dụng để thực hành tương tác với MongoDB.

Hãy bắt đầu bằng việc di chuyển vào thư mục ghi được.

$ cd /tmp 

Sử dụng lệnh curl và liên kết từ MongoDB để có thể tải xuống tệp JSON:

$ curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

Lệnh mongoimport sẽ nhập dữ liệu vào test database.  –db flag phải xác định cơ sở dữ liệu sẽ được sử dụng, còn –collection flag chỉ định vị trí lưu trữ thông tin trong cơ sở dữ liệu. –db flag cho biết file nào sẽ được sử dụng để thực hiện thao tác nhập liệu.

$ mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

Đây là đầu ra để xác nhận việc nhập dữ liệu từ tệp primer-dataset.json:

Output

connected to: localhost

imported 25359 documents

Với sample dataset in place, ta sẽ thực hiện một truy vấn đối với nó.

Khởi chạy lại MongoDB Shell:

$ mongo

Shell chọn test database theo mặc định, đó là nơi để nhập dữ liệu.

Để hiển thị restaurants collection trong tập dữ liệu, bạn có thể sử dụng phương thức find() trên collection restaurants. Tuy nhiên, vì collection này có hơn 25.000 mục nhập, bạn có thể sử dụng tùy chọn limit() để hạn chế kết quả trả về theo số lượng bạn mong muốn.

Hơn nữa, bạn có thể sử dụng phương thức pretty() để làm cho thông tin trả về dễ đọc hơn với định dạng có newlines và indentations.

db.restaurants.find().limit( 1 ).pretty()

Bạn có thể tiếp tục sử dụng sample dataset để thực hành với MongoDB hoặc xóa nó bất kỳ lúc nào bằng cách sử dụng phương thức db.restaurants.drop().

db.restaurants.drop()

Cuối cùng, bấm thoát khỏi shell với lệnh exit:

> exit

Output

Bye

Trong bài viết của Thuevpsgiare.vn, chắc rằng bạn đã hiểu MongoDB là gì? Công dụng của MongoDB và ưu nhược điểm của nó. Qua đó bài viết còn hướng dẫn cài đặt Mongodb trên Centos 7 một cách chi tiết nhất. Nếu có bất kì thắc mắc nào, hãy để lại thông tin bên dưới để được hỗ trợ ngay nhé!

Mỹ Y

Tôi tốt nghiệp chuyên ngành Marketing. Tôi đã được trải nghiệm công việc thực tế trong 2 năm và có kinh nghiệm trong lĩnh vực Content mảng công nghệ thông tin, các dịch vụ hosting, thuê máy chủ, thuê VPS, bảo mật website, an ninh mạng. Trong thời gian ngồi ghế nhà trường, tôi đã tự tay thực hiện được các dự án lớn nhỏ về việc chia sẻ kiến thức về phần mềm, công nghệ thông tin. Đến nay, tôi tin chắc rằng những thông tin tôi chia sẻ sẽ có ích cho bạn.

Trả lời