MongoDB: Bắt Đầu Với Cơ Sở Dữ Liệu Hướng Tài Liệu

Database tutorial - IT technology blog
Database tutorial - IT technology blog

Tại Sao Chọn MongoDB? (Bối Cảnh và Lợi Ích)

Với tư cách là một nhà phát triển, đôi khi bạn có thể thấy các cơ sở dữ liệu quan hệ truyền thống hơi hạn chế. Đây chính là lúc các cơ sở dữ liệu hướng tài liệu như MongoDB phát huy thế mạnh. MongoDB nổi bật như một cơ sở dữ liệu NoSQL hàng đầu, được xây dựng trên mô hình dữ liệu tài liệu linh hoạt. Thay vì các hàng và cột cứng nhắc, nó lưu trữ dữ liệu của bạn trong các tài liệu BSON (Binary JSON). Đây về cơ bản là các bản ghi giống JSON có khả năng thích ứng cao.

Vậy, tại sao lại chọn một cơ sở dữ liệu hướng tài liệu? Hãy hình dung việc xây dựng một ứng dụng mà cấu trúc dữ liệu của bạn liên tục thay đổi hoặc bạn cần lưu trữ dữ liệu với nhiều trường khác nhau. Ví dụ, hồ sơ người dùng mà mỗi người có thể có các bộ thông tin khác nhau.

Một người dùng có thể có ‘phone_number’ và ‘address’, trong khi người khác chỉ có ’email’ và ‘social_media_links’. Với MongoDB, bạn không cần phải định nghĩa một lược đồ nghiêm ngặt từ trước. Mỗi tài liệu có thể có cấu trúc riêng, mang lại cho bạn sự linh hoạt đáng kinh ngạc. Khả năng thích ứng này làm cho MongoDB trở nên lý tưởng cho phát triển agile, hệ thống quản lý nội dung, phân tích và bất kỳ ứng dụng nào xử lý các tập dữ liệu lớn, đa dạng.

Khả năng thích ứng đi kèm với các tài liệu giống JSON thực sự mạnh mẽ. Tôi thường xuyên xử lý dữ liệu ở nhiều định dạng khác nhau, đặc biệt khi chuyển đổi giữa các hệ thống hoặc chuẩn bị để phân tích. Ví dụ, để nhanh chóng chuyển đổi CSV sang JSON cho việc nhập dữ liệu—có thể cho một dự án mới hoặc để thiết lập môi trường thử nghiệm—tôi thường sử dụng toolcraft.app/vi/tools/data/csv-to-json.

Nó hoạt động trực tiếp trong trình duyệt, điều này rất tuyệt vời cho quyền riêng tư. Điều này có nghĩa là không có thông tin nhạy cảm nào rời khỏi máy của tôi. Sự dễ dàng trong việc chuyển đổi và tích hợp dữ liệu này minh họa hoàn hảo lý do tại sao rất nhiều nhà phát triển bị thu hút bởi mô hình tài liệu của MongoDB.

Ngoài sự linh hoạt, MongoDB được xây dựng để có hiệu suất và khả năng mở rộng đặc biệt. Nó quản lý hiệu quả một lượng lớn dữ liệu bằng cách phân phối nó trên nhiều máy chủ, một kỹ thuật gọi là sharding. Cách tiếp cận này cho phép cơ sở dữ liệu của bạn mở rộng liền mạch cùng với ứng dụng của bạn. Nó có thể phát triển từ một bằng chứng khái niệm nhỏ thành một dịch vụ được triển khai toàn cầu xử lý hàng triệu yêu cầu mỗi giây.

Cài Đặt MongoDB

Hãy cùng cài đặt và chạy MongoDB trên hệ thống của bạn. Tôi sẽ hướng dẫn cài đặt cho các bản phân phối Linux phổ biến và macOS. Luôn sử dụng các kho gói chính thức. Điều này đảm bảo bạn nhận được phiên bản ổn định mới nhất và các bản cập nhật đáng tin cậy.

Ubuntu/Debian

Đối với các hệ thống dựa trên Debian, bạn thường thêm khóa GPG và kho lưu trữ chính thức của MongoDB.


# Nhập Khóa GPG công khai cho MongoDB
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
   sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-server-7.0.gpg

# Tạo tệp danh sách cho MongoDB
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | \
   sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# Tải lại cơ sở dữ liệu gói cục bộ
sudo apt update

# Cài đặt MongoDB
sudo apt install -y mongodb-org

Sau khi cài đặt, hãy khởi động và kích hoạt dịch vụ MongoDB:


sudo systemctl start mongod
sudo systemctl enable mongod

CentOS/RHEL

Đối với các hệ thống dựa trên Red Hat, bạn sẽ tạo một tệp .repo.


# Tạo tệp .repo
sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo

Thêm nội dung sau vào tệp:


[mongodb-org-7.0]
name=Kho lưu trữ MongoDB
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc

Sau đó cài đặt MongoDB:


sudo yum install -y mongodb-org

Khởi động và kích hoạt dịch vụ:


sudo systemctl start mongod
sudo systemctl enable mongod

macOS (sử dụng Homebrew)

Homebrew đơn giản hóa việc cài đặt trên macOS đáng kể.


# Cập nhật Homebrew
brew update

# Cài đặt MongoDB Community Edition
brew install [email protected]

Để khởi động MongoDB như một dịch vụ nền:


brew services start [email protected]

Hoặc, để chạy thủ công:


mongod --config /opt/homebrew/etc/mongod.conf # Điều chỉnh đường dẫn nếu sử dụng máy Mac Intel

Các Cấu Hình MongoDB Cơ Bản

Tệp cấu hình chính của MongoDB thường được đặt tên là mongod.conf. Trên Linux, bạn thường tìm thấy nó tại /etc/mongod.conf. Trên macOS với Homebrew, nó thường nằm trong /opt/homebrew/etc/mongod.conf (đối với máy Mac ARM) hoặc /usr/local/etc/mongod.conf (đối với máy Mac Intel).

Dưới đây là một số cài đặt phổ biến mà bạn có thể muốn điều chỉnh:


# /etc/mongod.conf (đoạn mã ví dụ)

# Nơi và cách lưu trữ dữ liệu.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

# Nơi ghi nhật ký.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Giao diện mạng
net:
  port: 27017
  bindIp: 127.0.0.1  # Chỉ lắng nghe trên localhost theo mặc định

# Cài đặt bảo mật (rất được khuyến nghị cho môi trường sản xuất)
security:
  authorization: enabled # Bật xác thực

# Hồ sơ hoạt động
operationProfiling:
  mode: off
  slowOpThresholdMs: 100

# Quản lý tiến trình
processManagement:
  fork: true  # Fork và chạy như một tiến trình nền
  pidFilePath: /var/run/mongodb/mongod.pid

Các điểm cấu hình chính:

  • storage.dbPath: Đây là nơi MongoDB lưu trữ các tệp dữ liệu của nó. Đảm bảo thư mục này tồn tại và MongoDB có quyền thích hợp để ghi vào đó.
  • systemLog.path: Đường dẫn đến tệp nhật ký của MongoDB. Rất cần thiết cho việc khắc phục sự cố.
  • net.port: Cổng mà MongoDB lắng nghe (mặc định là 27017).
  • net.bindIp: Quan trọng là, điều này xác định địa chỉ IP mà MongoDB sẽ lắng nghe. Theo mặc định, nó là 127.0.0.1 (localhost), có nghĩa là chỉ các kết nối từ cùng một máy mới được phép. Để truy cập từ bên ngoài (ví dụ: từ máy chủ ứng dụng), bạn sẽ cần thay đổi điều này. Bạn có thể đặt nó thành 0.0.0.0 (tất cả các giao diện) hoặc một IP giao diện mạng cụ thể. Luôn bảo mật máy chủ của bạn bằng các quy tắc tường lửa thích hợp để ngăn chặn truy cập trái phép.
  • security.authorization: enabled: Tôi đặc biệt khuyên bạn nên bật tính năng này cho bất kỳ môi trường nào ngoài quá trình phát triển cục bộ ban đầu để bảo vệ dữ liệu của bạn. Sau khi được bật, người dùng sẽ cần xác thực để truy cập cơ sở dữ liệu.

Sau khi thực hiện thay đổi đối với mongod.conf, bạn phải khởi động lại dịch vụ MongoDB để chúng có hiệu lực:


sudo systemctl restart mongod # Đối với Linux
brew services restart [email protected] # Đối với macOS Homebrew

Xác Minh và Giám Sát Phiên Bản MongoDB Của Bạn

Bây giờ MongoDB đã được cài đặt và cấu hình, hãy xác minh rằng nó đang hoạt động và xem xét một số giám sát cơ bản.

Kết Nối Với MongoDB

Công cụ dòng lệnh chính để tương tác với MongoDB là mongosh, MongoDB Shell. Để kết nối với phiên bản đang chạy của bạn, hãy sử dụng:


mongosh

Nếu bạn đã bật xác thực, hãy kết nối với tư cách là một người dùng cụ thể:


mongosh --authenticationDatabase admin -u "yourAdminUser" -p "yourPassword"

Sau khi kết nối, bạn sẽ thấy một dấu nhắc (ví dụ: test>). Bạn có thể chuyển sang một cơ sở dữ liệu hiện có hoặc tạo một cơ sở dữ liệu mới chỉ bằng cách sử dụng nó:


use myNewDatabase;
// đã chuyển sang db myNewDatabase

Các Thao Tác Cơ Bản (CRUD)

Hãy thực hiện một số thao tác Create, Read, Update, và Delete (CRUD) cơ bản để đảm bảo mọi thứ đều hoạt động.

Tạo: Chèn một tài liệu


db.users.insertOne({
  name: "Alice",
  age: 30,
  email: "[email protected]",
  interests: ["coding", "hiking"]
});

Đọc: Tìm tài liệu


db.users.find(); // Tìm tất cả các tài liệu trong bộ sưu tập 'users'
db.users.find({ name: "Alice" }); // Tìm các tài liệu có tên là Alice

Cập nhật: Sửa đổi một tài liệu


db.users.updateOne(
  { name: "Alice" },
  { $set: { age: 31, "address.city": "New York" } }
);

Xóa: Xóa một tài liệu


db.users.deleteOne({ name: "Alice" });

Giám Sát MongoDB

Để kiểm tra trạng thái nhanh chóng từ shell mongosh:


db.serverStatus();

Lệnh này cung cấp chi tiết mở rộng về trạng thái hoạt động của máy chủ. Nó bao gồm việc sử dụng bộ nhớ, các kết nối đang hoạt động và các tiến trình nền. Đây là một điểm khởi đầu tuyệt vời để chẩn đoán các vấn đề về hiệu suất.

Từ dòng lệnh của hệ thống, bạn có thể kiểm tra trạng thái dịch vụ:


sudo systemctl status mongod # Đối với Linux
brew services info [email protected] # Đối với macOS Homebrew

Ngoài ra, hãy theo dõi nhật ký MongoDB, được cấu hình trong mongod.conf. Trên Linux, tệp nhật ký thường được tìm thấy tại /var/log/mongodb/mongod.log.


tail -f /var/log/mongodb/mongod.log

Lệnh này hiển thị các mục nhật ký thời gian thực, chứng tỏ rất cần thiết để giám sát hoạt động và khắc phục sự cố.

Bắt đầu với MongoDB có nghĩa là bước vào thế giới quản lý dữ liệu linh hoạt, có khả năng mở rộng. Hướng dẫn này cung cấp một nền tảng vững chắc. Nó cho phép bạn cài đặt, cấu hình và tự tin tương tác với phiên bản cơ sở dữ liệu hướng tài liệu đầu tiên của mình. Bây giờ, hãy khám phá các khả năng mạnh mẽ của NoSQL!

Share: