12/08/2018, 14:27

Tổng quan về MongoDB

I. Giới thiệu về MongoDB 1. Khái niệm MongoDB là một chương trình cơ sở dữ liệu mã nguồn mở được thiết kế theo kiểu hướng đối tượng trong đó các bảng được cấu trúc một cách linh hoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng cấu trúc nhất định nào. Chính do cấu ...

download.png

I. Giới thiệu về MongoDB

1. Khái niệm

MongoDB là một chương trình cơ sở dữ liệu mã nguồn mở được thiết kế theo kiểu hướng đối tượng trong đó các bảng được cấu trúc một cách linh hoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng cấu trúc nhất định nào. Chính do cấu trúc linh hoạt này nên MongoDB có thể được dùng để lưu trữ các dữ liệu có cấu trúc phức tạp và đa dạng và không cố định (hay còn gọi là Big Data).

2. Lợi thế của MongoDB so với các cơ sở dữ liệu dạng quan hệ(RDBMS)

  • Ít Schema hơn: MongoDB là một cơ sở dữ liệu dựa trên Document, trong đó một Collection giữ các Document khác nhau. Số trường, nội dung và kích cỡ của Document này có thể khác với Document khác.
  • Cấu trúc của một đối tượng là rõ ràng.
  • Không có các Join phức tạp.
  • Khả năng truy vấn sâu hơn. MongoDB hỗ trợ các truy vấn động trên các Document bởi sử dụng một ngôn ngữ truy vấn dựa trên Document mà mạnh mẽ như SQL.
  • MongoDB dễ dàng để mở rộng.
  • Việc chuyển đổi/ánh xạ của các đối tượng ứng dụng đến các đối tượng cơ sở dữ liệu là không cần thiết.
  • Sử dụng bộ nhớ nội tại để lưu giữ phần công việc, giúp truy cập dữ liệu nhanh hơn.

3. Một số đặc điểm của MongoDB

  • Kho lưu định hướng Document: Dữ liệu được lưu trong các tài liệu kiểu JSON.
  • Lập chỉ mục trên bất kỳ thuộc tính nào.
  • Các truy vấn đa dạng.
  • Cập nhật nhanh hơn.

II. So sánh MongoDB với cơ sở dữ liệu quan hệ

Ở đây mình sẽ lấy cụ thể về cơ sở dữ liệu quan hệ rất thường dùng là Mysql để mọi người có cái nhìn tổng quan nhất về MongoDB.

Thiết kế database trong Mysql:

test.png

Trong khi trong thiết kế Schema của MongoDB sẽ chỉ có một Collection

{
  _id: user_id,
  name: user_name,
  email: user_email,
  age: age,
  address: user_address,
  universities: [
    {name: university_name, index: university_index}
  ],
  work_positions: [
    {position: work_position, salary: user_salary}
  ]
}
Operation Mysql MongoDB
Create Insert Insert
Read Select Find
Update Update Update
Delete Delete Remove
Table Table Collection
Row Row Document

Lưu ý khi sử dụng Mongodb:

  • MongoDB sinh ra để tăng tốc độ truy xuất dữ liệu, phù hợp cho các ứng dụng cần tốc độ phản hồi nhanh(realtime như facebook chẳng hạn). Còn các tác nghiệp cần tính toàn vẹn dữ liệu(trong banking) thì Nosql sẽ ko bao giờ là 1 giải pháp cả mà người ta sẽ dùng Mysql.
  • MongoDB không có tính ràng buộc, một điều tồi tệ trong Database vì vậy sẽ rất cần sự cẩn thận khi thao tác trên các collection có quan hệ dữ liệu với nhau.
  • MongoDB đẩy trách nghiệm thao tác Database cho tầng ứng dụng nên sẽ tốn tài nguyên(tài nguyên bây giờ không còn là vấn đề quá lớn nữa).
  • MongoDb có thể mở trộng theo chiều ngang (scale out) phương pháp tăng cường khả năng lưu trữ và xử lý là dùng nhiều máy tính phân tán. MongoDb còn có thể mở rộng theo chiều dọc (scale up) tăng cấu hình server.
  • MongoDb có thể dùng nhiều máy tính phân tán để lưu trữ dữ liệu nên chi phí sẽ rẻ hơn Mysql . Mysql sử dụng những máy chủ hàng khủng, độc quyền nên sẽ đắt đỏ hơn.

III. Sử dụng MongoDB

  1. Hiện thị tất cả các databases
show dbs
  1. Tạo database
use 'database_name'

Nếu database_name chưa tồn tại thì sẽ được tạo mới.

  1. Tạo một collection và insert dữ liệu vào collection
db.collection_name.insert({'key_name': 'value'})
  1. Get tất cả object của một collection
db.collection_name.find({})
  1. Drop một collection
db.collection_name.drop()

Screenshot from 2016-12-27 21:39:52.png

0