MongoDB là gì? Những ưu điểm và tính năng bạn nên biết

1980
12-10-2022
MongoDB là gì? Những ưu điểm và tính năng bạn nên biết

Với sự gia tăng dữ liệu trên toàn thế giới, các cơ sở dữ liệu phi quan hệ, hay còn được gọi là "NoSQL" đang ngày càng được quan tâm hơn. Các doanh nghiệp và tổ chức đang tìm kiếm các phương pháp mới để quản lý lũ dữ liệu, tìm kiếm các công cụ và hệ thống quản lý cơ sở dữ liệu thay thế khác với các hệ thống cơ sở dữ liệu quan hệ truyền thống. Điển hình đó là MongoDb. 

MongoDb là gì?

MongoDB là một hệ thống cơ sở dữ liệu NoSQL mã nguồn mở có kiến trúc hướng tài liệu (document-oriented), được thiết kế để lưu trữ một lượng lớn dữ liệu và cho phép bạn làm việc với dữ liệu đó một cách hiệu quả. Hệ thống cơ sở dữ liệu NoSQL cung cấp một giải pháp thay thế cho cơ sở dữ liệu quan hệ truyền thống sử dụng SQL (Ngôn ngữ truy vấn có cấu trúc). Trong MongoDB, dữ liệu được lưu trữ trong các document sử dụng cấu trúc giống JSON để biểu diễn và tương tác với dữ liệu.

Cơ sở dữ liệu MongoDB được phát triển và quản lý bởi MongoDB.Inc, được phát hành lần đầu vào năm 2009. Nó cũng hỗ trợ driver cho tất cả các ngôn ngữ phổ biến như C, C ++, C # và .Net, Go, Java, Node.js, Perl, PHP, Python, Motor, Ruby, Scala, Swift, Mongoid. Vì vậy, bạn có thể tạo một ứng dụng bằng bất kỳ ngôn ngữ nào trong số này. Ngày nay có rất nhiều công ty đã sử dụng MongoDB như Facebook, Nokia, eBay, Adobe, Google, v.v. để lưu trữ lượng lớn dữ liệu của họ.

MongoDB là gì? - Ảnh 1.

Kiến trúc của cơ sở dữ liệu NoSQL MongoDB

Database: Hiểu một cách đơn giản, nó có thể được coi là vùng chứa vật lý cho dữ liệu. Mỗi database có tập file riêng trên file system với nhiều database hiện có trên một single MongoDB server.

Collection: Một nhóm các database document có thể được gọi là một collection. RDBMS tương đương với bộ sưu tập là một table. Toàn bộ collection tồn tại trong một single database. Không có schema nào khi nói đến các collection. Bên trong collection, các document khác nhau có thể có các trường khác nhau nhưng hầu hết các document trong một collection đều có cùng một mục đích hoặc phục vụ cùng một mục tiêu.

Document: Một tập hợp các cặp key - value có thể được chỉ định là một document. Các document được liên kết với các dynamic schema. Lợi ích của dynamic schema là document trong một collection không nhất thiết phải có cùng cấu trúc hoặc các trường. Ngoài ra, các trường phổ biến trong document của collection có thể có nhiều loại dữ liệu khác nhau.

MongoDB khác với RDBMS do đâu?

Chúng ta có thể so sánh trực tiếp NoSQL MongoDB với RDBMS và so sánh các thuật ngữ khác nhau trong hai hệ thống:

RDBMS table là một MongoDB collection, column là field, tuple/ row là document và table join là document được nhúng. Schema điển hình của một cơ sở dữ liệu quan hệ cho thấy số lượng các bảng và mối quan hệ giữa các bảng nhưng MongoDB không tuân theo khái niệm về mối quan hệ.

Hãy xem 9 sự so sánh khác nhau dưới đây để hiểu chính xác cơ sở dữ liệu NoSQL chuyên nghiệp như MongoDB khác với RDBMS như thế nào.

MongoDB

RDBMS

Định hướng tài liệu và cơ sở dữ liệu phi quan hệ

Cơ sở dữ liệu quan hệ

Dựa trên tài liệu

Dựa trên hàng

Dựa trên trường

Dựa trên cột

Dựa trên Collection và cặp key - value

Dựa trên bảng

Cung cấp Javascript client cho truy vấn

Không cung cấp Javascript cho truy vấn

Tương đối dễ thiết lập

Tương đối không dễ thiết lập

Nó không bị ảnh hưởng bởi SQL injection

Nó khá dễ bị tấn công bởi SQL injection

Lý tưởng cho việc lưu trữ dữ liệu phân cấp

Không tốt cho việc lưu trữ dữ liệu phân cấp

Có dynamic schema

Chứa schema được xác định trước

Nhanh gấp 100 lần

Tăng quy mô theo chiều dọc RAM

Nó có thể mở rộng theo chiều ngang thông qua sharding

Tăng quy mô theo chiều dọc RAM

Các tính năng quan trọng của MongoDB

Truy vấn (Queries): Hỗ trợ truy vấn đặc biệt và truy vấn dựa trên tài liệu.

Index Support: Bất kỳ trường nào trong tài liệu đều có thể được lập chỉ mục

Replication: Nó hỗ trợ nhân rộng Master slave. MongoDB sử dụng ứng dụng gốc để duy trì nhiều bản sao dữ liệu. Ngăn chặn database downtime là một trong những tính năng của bộ bản sao vì nó có phân đoạn tự phục hồi (self-healing shard).

Multiple Servers: Cơ sở dữ liệu có thể chạy trên nhiều máy chủ. Dữ liệu được nhân bản để đánh lừa hệ thống trong trường hợp lỗi phần cứng.

Auto-Sharding: Quá trình này phân phối dữ liệu trên nhiều phân vùng vật lý được gọi là phân đoạn do sharding MongoDB có tính năng cân bằng tải tự động.

MapReduce: Hỗ trợ MapReduce và các công cụ tổng hợp linh hoạt.

Failure Handling: Trong MongoDb, bạn dễ quản lý trong trường hợp bị lỗi. Số lượng bản sao khổng lồ giúp tăng cường khả năng bảo vệ và độ khả dụng của dữ liệu trong khoảng thời gian database downtime như lỗi rack, lỗi machine và lỗi data centre thậm chí là phân vùng network.

GridFS: Có thể lưu trữ bất kỳ kích thước tệp nào, không làm phức tạp stack. Tính năng GridFS chia tệp thành các phần nhỏ hơn và lưu trữ chúng dưới dạng tài liệu riêng biệt.

Schemaless: Đây là schema  ít được viết trong C ++.

Document-Oriented Storage (Lưu trữ hướng tài liệu): Nó sử dụng định dạng BSON là định dạng giống như JSON.

Procedures: Sự kết hợp của MongoDB JavaScript hoạt động tốt khi database sử dụng language thay vì các procedure.

Tại sao chúng ta cần công nghệ MongoDB?

Công nghệ này đã vượt qua một trong những yếu điểm lớn nhất của các hệ thống cơ sở dữ liệu truyền thống đó là khả năng mở rộng. Với nhu cầu ngày càng phát triển của các doanh nghiệp, hệ thống cơ sở dữ liệu của họ cũng cần được nâng cấp. MongoDb có khả năng mở rộng đặc biệt giúp dễ dàng trong việc lấy dữ liệu và cung cấp sự tích hợp một cách liên tục và tự động. Sau đây là các lý do tại sao chúng ta cần MongoDb:

- Không có downtime trong khi ứng dụng đang được mở rộng.

- Thực hiện trong memory processing

- Tìm kiếm văn bản

- Xử lý đồ thị

- Sao chép toàn cầu

- MongoDb có tính kinh tế

- Hơn nữa, các doanh nghiệp ngày càng nhận thấy rằng MongoDB đáp ứng được hầu hết các yêu cầu kinh doanh của họ, cụ thể như sau:

- MongoDB cung cấp sự kết hợp hiệu quả giữa công nghệ và dữ liệu nhằm tăng lợi thế cạnh tranh.

- Nó phù hợp nhất cho các ứng dụng quan trọng vì nó làm giảm đáng kể các rủi ro có thể xảy ra.

- Nó ngày càng gia tăng giá trị theo thời gian và làm giảm tổng chi phí sở hữu. Cơ sở dữ liệu quan hệ.

- Nó xây dựng các ứng dụng mà các cơ sở dữ liệu quan hệ truyền thống không thể thực hiện được.

Ưu điểm của MongoDB

Đây là các đặc điểm giúp MongoDB trở thành một trong những cơ sở dữ liệu NoSQL tốt nhất:

MongoDB là gì? - Ảnh 2.

- Nền tảng dữ liệu phân tán

- Phát triển nhanh, lặp lại

- Mô hình dữ liệu linh hoạt

- Giảm TCO (tổng chi phí sở hữu)

- Bộ tính năng tích hợp

- Cam kết lâu dài

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

Mặc dù có rất nhiều ưu điểm, nhưng MongoDB cũng có một số hạn chế. Tuy nhiên, hầu hết các nhược điểm này đều có thể được khắc phục hoặc cải thiện trong tương lai.

  • Không hỗ trợ join: MongoDB không hỗ trợ join giống như Cơ sở dữ liệu quan hệ. Tuy nhiên, ta có thể sử dụng chức năng join bằng mã hóa nó theo cách thủ công, nhưng nó có thể làm chậm quá trình thực thi và ảnh hưởng đến hiệu suất.
  • Sử dụng nhiều bộ nhớ: MongoDB lưu trữ dữ liệu dưới dạng key-value, và do không hỗ trợ join nên có sự dư thừa dữ liệu, dẫn đến việc tốn bộ nhớ không cần thiết.
  • Data size bị giới hạn: không được phép lưu trữ nhiều hơn 16MB dữ liệu trong document
  • Nesting trong BSON bị hạn chế: bạn không được phép phân cấp dữ liệu nhiều hơn 100 cấp độ

Ai là đối tượng thích hợp để học công nghệ MongoDB?

Nhà phát triển phần mềm, kiến trúc sư và quản trị viên

Chuyên gia Database và chuyên gia phân tích

Quản trị viên hệ thống, chuyên gia nghiên cứu

Bạn có thể sử dụng cơ sở dữ liệu NoSQL MongoDB ở đâu?

Cơ sở dữ liệu NoSQL MongoDB có thể được sử dụng rộng rãi cho các ứng dụng Big Data và Hadoop, làm việc với số lượng dữ liệu NoSQL khổng lồ - phần chính của Big Data.

MongoDB có thể được triển khai thành công cho các phương tiện truyền thông xã hội và các ứng dụng di động trong việc phân tích tất cả các dữ liệu trực tuyến có định dạng không có cấu trúc.

MongoDB NoSQL database cũng được áp dụng trong việc quản lý và phân phối nội dung, quản lý dữ liệu người dùng và hoạt động độc quyền trong các data hub.

Các lệnh cơ bản trong MongoDB

1. Kết nối đến MongoDB

Tương tự khi sử dụng sql thì phải kết nối đến database, mongodb cũng vậy:

$m = new Mongo("mongodb://${username}:${password}@localhost");

Lệnh này khởi tạo kết nối đến server cài đặt mongodb, mặc định nếu không có tham số sẽ là localhost với cổng port = 27017.

Tiếp theo là lệnh chọn database

$db = $m->google; //Với database có tên "google";

Tiếp theo chọn collection (collection tương tự như chọn một bảng trong cơ sở dữ liệu quan hệ sql):

$collection = $db->user;

Vậy là quá trình kết nối đã hoàn tất, để nắm rõ hơn quá trình này thì các bạn có thể truy cập trực tiếp vào trang chủ php.net theo đường dẫn: https://www.php.net/manual/en/mongodb.connection-handling.php

2. Lệnh insert

Lệnh được sử dụng để thêm dữ liệu mới vào collection tương tự như lệnh insert trong sql

Ví dụ: thêm một bản ghi về user vào collection user đã kết nối ở trên:

$aryUser = array('username'=>'google', 'age'=>27, 'phone'=>'098888888');

$collection ->insert($aryUser);

3. Lệnh update

Khi muốn thay đổi thong tin của một bản ghi thì các bạn có thể dùng lệnh update, tương tự lệnh update trong sql

Ví dụ: thay đổi tuổi của user có username là google:

$aryUser = array('username'=>'google');

$set = array( '$set' => array('age' => 28) );

$collection->update($aryUser, $set);

4. Lệnh find

Được dùng để truy vấn vào collection để lấy các bản ghi cần thiết.

Ví dụ: lấy thông tin user có username là 'google'

$infoUser = $collection->find(array('username'=>'google'));

foreach ($infoUser as $user) {

print_r($user);

}

Kết quả sẽ là:

Array ( [_id] => MongoId Object ( [$id] => … ) [username'] => 'google' [age'] => 28 [phone]=>098888888)

Theo Bizfly Cloud chia sẻ

>> Có thể bạn quan tâm: SQL so với NoSQL – lựa chọn nào là tốt nhất cho hệ cơ sở dữ liệu đám mây?

Bizfly Cloud là hệ sinh thái điện toán đám mây được vận hành bởi VCCorp - Công ty dẫn đầu trong lĩnh vực công nghệ và truyền thông tại Việt Nam. Với đội ngũ kỹ thuật viên trình độ cao và kinh nghiệm lâu năm làm việc trên các công nghệ khác nhau như cloud, mobile, web..., chúng tôi có đủ khả năng để hỗ trợ đưa ra những giải pháp và công nghệ toàn diện giúp doanh nghiệp chuyển đổi số thành công. Dành cho độc giả quan tâm tới các dịch vụ đám mây do Bizfly Cloud cung cấp có thể truy cập tại đây.
SHARE