MongoDB Là Gì? Khi Nào Nên Dùng MongoDB

MongoDB Là Gì? Khi Nào Nên Dùng MongoDB

Bài viết này sẽ giới thiệu về MongoDB cũng như những ưu điểm của nó. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về [email protected] hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.

MongoDB là gì ?

MongoDB (chữ mongo được lấy từ “humongous” trong tiếng Anh, nghĩa là “khổng lồ”), là một NoSQL database. Khác với MySQL hay các loại SQL databse khác chạy theo mô hình database – table – row với số dòng – cột nhất định, schema phức tạp, và phải sử dụng nhiều JOIN khi query. MongoDB chạy theo mô hình database – collection – document, thay thế mô hình cơ sở dữ liệu dùng table truyền thống bằng các document với định dạng JSON với cấu trúc linh hoạt hơn (MongoDB gọi là BSON).

Với nhiều ưu điểm như hỗ trợ đa nền tảng (Windows, Linux), hiệu năng cao, dễ dàng mở rộng theo chiều ngang.

Hiện tại, MongoDB đang được công ty MongoDB Inc tăng trưởng và có 2 phiên bản như sau :

MongoDB Community Server

  • Phiên bản MongoDB Community là phiên bản miễn phí cho cộng đồng, hỗ trợ 3 loại hệ điều hành là Linux, Windows và OS X.
  • Tuy nhiên, do dính một số vụ lùm xùm về license nên Fedora sẽ loại MongoDB ra khỏi phiên bản RedHat 8 sắp ra mắt của mình. Nhưng ta vẫn có thể add repo bằng tay và tải về chạy bình thường.

MongoDB Enterprise Server

  • MongoDB Enterprise Server là phiên bản thương mại của MongoDB, coi thêm tại đây.

Để liên tục tìm hiểu và khám phá MongoDB thì ta sẽ khám phá một số ít khái niệm cơ bản của nó .

Các khái niệm cơ bản trong MongoDB

Database

Database chính là tập chứa những collection trong MongoDB. Mỗi database sẽ có một tập file riêng của mình trên file system của mạng lưới hệ thống. Một MongoDB server thường chứa nhiều database trên đó .

Collection

Tương tự như Table trong MySQL, Collection là một tập chứa những MongoDB Document. Một điểm khác so với những RDBMS khác đó chính là Collection không bắt buộc một schema cố định và thắt chặt nào cả. Các document trong cùng một collection hoàn toàn có thể có nhiều field khác nhau. Nhưng thường thì những document trong một collection sẽ có một số ít field chính tương đương nhau và có tương quan với nhau .

Document

Document là một tập tài liệu theo dạng key-value, mỗi key sẽ tương ứng với một value. Các document khá linh động về schema, như đã nói ở trên, những document trong cùng một collection không nhất thiết phải có những field hoặc cấu trúc giống nhau. Data trong cùng một field cũng hoàn toàn có thể có nhiều kiểu tài liệu khác nhau .
Ví dụ : field name của document này hoàn toàn có thể là string, nhưng ở document khác hoàn toàn có thể có kiểu là array, dù 2 document đó cùng nằm chung 1 collection .
==> Túm lại là, hoàn toàn có thể tạm coi collection như table, document như row cho dễ tưởng tượng. Nhưng quy mô collection, document linh động hơn so với table – row do có ít schema hơn .
Đối với những ai đã xài MySQL mới chuyển qua làm quen MongoDB, những bạn hoàn toàn có thể xem thêm bảng so sánh sau để dễ hiểu hơn :
RDBMS
MongoDB

Database
Database

Table
Collection

Tuple/Row
Document

Column
Field

Table Join
Embedded Documents

Primary Key
Primary Key (MongoDB tự tạo Primary key là “_id“)

Database Server và Client

Mysqld/Oracle
mongod (server)

mysql/sqlplus
mongo (client)

JSON

Các document của MongoDB sử dụng format JSON ( JavaScript Object Notation ), đây là một chuẩn tàng trữ, trao đổi tài liệu đơn thuần và gọn nhẹ. Với ưu điểm dễ đọc, dễ hiểu, đa số những ngôn từ lập trình thông dụng lúc bấy giờ đều tương hỗ JSON như : C, C + +, C #, Java, JavaScript, Perl, Python, … .
Dữ liêu trong JSON được tàng trữ dưới dạng key / value. Một key sẽ tương ứng với 1 value. Value ở đây hoàn toàn có thể là một mảng, một chuỗi, một số ít int, double, mảng hoặc object …
Các bạn hoàn toàn có thể tìm hiểu và khám phá kỹ hơn về JSON tại đây
Dưới đây là một document cơ bản với format JSON, những bạn sẽ thấy nó khá là dễ đọc :

{
“ _id ” : ObjectId ( “ 58 c59c8f99d4ee0af9e5ccfc ” ) ,
“ title ” : “ Iron Man ” ,
“ year ” : 2008 ,
“ imdbId ” : “ tt0371746 ” ,
“ mpaaRating ” : “ PG-13 ” ,
“ genre ” : “ kích hoạt, Adventure, Sci-Fi ” ,
“ viewerRating ” : 7.9 ,
“ viewerVotes ” : 615059 ,

“runtime” : 126,

“ director ” : “ Jon Favreau ” ,
“ cast ” : [
“ Robert Downey Jr. ” ,
“ Terrence Howard ” ,
“ Jeff Bridges ” ,
“ Gwyneth Paltrow ”
] ,
“ plot ” : “ After being held captive in an Afghan cave, an industrialist creates a unique weaponized suit of armor to fight evil. ” ,
“ language ” : “ English, Persian, Urdu, Arabic, Hungarian ”
}
Như ví dụ ở trên, cứ mỗi key ( phần bên trái dấu hai chấm ) sẽ ứng với một value ( phần bên phải dấu hai chấm ), và phần value hoàn toàn có thể có nhiều kiểu tài liệu khác nhau ( string, int, array … )

Một số ưu điểm của MongoDB

MongoDB

Sau đây là 1 số ít ưu điểm của MongoDB :

  • Ít schema hơn: MongoDB là một Document Databse, các document trong cùng một collection không nhất thiết phải giống nhau về số field, loại dữ liệu như trong SQL.
  • Cấu trúc của một Document rất rõ ràng, dễ đọc và dể hiểu.
  • Không cần sử dụng đến các lệnh JOIN phức tạp.
  • Khả năng mở rộng dữ liệu dễ dàng, không cần phải quá bận tâm về kiểu dữ liệu, khóa chính, khóa ngoại như SQL.
  • Lưu dữ liệu trên RAM, giúp truy xuất dữ liệu nhanh hơn.
  • Dễ dàng Scale Out (Horizontally Scale).

Khi nào nên dùng MongoDB

Vậy khi nào ta nên dùng MongoDB :

  • Sử dụng document để lưu trữ dữ liệu, dễ dàng thêm bớt, mở rộng dữ liệu tùy ý.
  • Ứng dụng có tính chất Insert nhiều (write-intensive)
  • Cần cơ chế Replication và High Availabity.
  • Cần cơ chế Sharding.

Một số use case thông dụng của MongoDB là Hệ thống quản trị nội dung số, Các mạng lưới hệ thống nghiên cứu và phân tích tài liệu lớn, Quản lý hạng mục những mẫu sản phẩm trong thương mại điên tử, những ứng dụng social …

Khi nào không nên dùng MongoDB

Còn khi nào thì không nên dùng MongoDB ?

  • Hệ thống cần xử lý nhiều transaction như các giao dịch mua bán, chuyển tiền, ngân hàng. Đối với các trường hợp này thì SQL phù hợp hơn hẳn!
  • Cần sử dụng đến các lệnh JOIN.

No related posts .

Was this article helpful ?

7

4

Rate this post