Lỗi thường gặp 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 cần hỗ trợ, vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext. 3, gửi email về support@vinahost. vn hoặc chat với VinaHost qua livechat https. //trò chuyện trực tiếp. vinahost. vn/chat. php

MongoDB là gì?

MongoDB (chữ mongo được lấy từ “humongous” trong tiếng Anh, có nghĩa là “khổng lồ”), là một cơ sở dữ liệu NoSQL. Khác với MySQL hay các loại cơ sở dữ liệu SQL khác chạy theo mô hình cơ sở dữ liệu – bảng – hàng với số dòng – cột nhất định, lược đồ phức tạp và phải sử dụng nhiều THAM GIA khi truy vấn. MongoDB chạy theo mô hình cơ sở dữ liệu – bộ sưu tập – tài liệu, thay thế mô hình cơ sở dữ liệu sử dụng bảng truyền thống bằng tài liệu 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 suất cao, dễ dàng mở rộng theo chiều ngang

Hiện tại, MongoDB đang được công ty MongoDB Inc phát triển và có 2 phiên bản như sau

Máy chủ cộng đồng MongoDB

  • Phiên bản Cộng đồng MongoDB 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 một số vụ xù xì về giấy phép 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ể thêm repo bằng tay và tải về chạy bình thường

Máy chủ doanh nghiệp MongoDB

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

Để tiếp tục tìm hiểu MongoDB, chúng ta sẽ tìm hiểu một số khái niệm cơ bản của nó

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

cơ sở dữ liệu

Cơ sở dữ liệu chính là tập tin chứa các bộ sưu tập trong MongoDB. Mỗi cơ sở dữ liệu sẽ có một tập tin riêng của mình trên hệ thống tập tin của hệ thống. Một máy chủ MongoDB thường chứa nhiều cơ sở dữ liệu trên đó

thu thập

Tương tự như Bảng trong MySQL, Bộ sưu tập là một tập tin chứa các Tài liệu MongoDB. Một điểm khác so với các RDBMS khác đó chính là Bộ sưu tập không bắt buộc một lược đồ cố định nào cả. Các tài liệu trong cùng một bộ sưu tập có thể có nhiều lĩnh vực khác nhau. Nhưng thường thì các tài liệu trong một bộ sưu tập sẽ có một số trường chính tương đồng nhau và có liên quan với nhau

Tài liệu

Tài liệu là một tệp dữ liệu theo định dạng khóa-giá trị, mỗi khóa sẽ tương ứng với một giá trị. Các tài liệu khá linh hoạt về lược đồ, như đã nói ở trên, các tài liệu trong cùng một bộ sưu tập không nhất thiết phải có các trường hoặc cấu trúc giống nhau. Dữ liệu trong cùng một trường cũng có thể có nhiều kiểu dữ liệu khác nhau

Ví dụ. tên trường của tài liệu này có thể là chuỗi, nhưng ở tài liệu khác có thể có kiểu là mảng, dù 2 tài liệu đó giống nhau là chung 1 bộ sưu tập

==> Túm lại là, có thể tạm coi bộ sưu tập như bảng, tài liệu như hàng cho dễ hình dung. Nhưng mô hình bộ sưu tập, tài liệu linh hoạt hơn so với bảng – hàng do có ít lược đồ hơn

Đối với những ai đã sử dụng MySQL mới chuyển qua làm quen với MongoDB, các bạn có thể xem thêm bảng so sánh sau để dễ hiểu hơn

RDBMSMongoDBDatabaseDatabaseTableCollectionTuple/RowDocumentColumnFieldTable JoinEmbedded DocumentsPrimary KeyPrimary Key (MongoDB tự tạo Primary key là “_id“)Database Server và ClientMysqld/Oraclemongod (server)mysql/sqlplusmongo (client)

JSON

Các tài liệu của MongoDB sử dụng định dạng JSON (Ký hiệu đối tượng JavaScript), đây là một kho lưu trữ chuẩn, trao đổi dữ liệu đơn giản và gọn nhẹ. Với ưu điểm là dễ đọc, dễ hiểu, đa phần các ngôn ngữ lập trình biến phổ biến hiện nay đều hỗ trợ JSON như. C, C++, C#, Java, JavaScript, Perl, Python,…

Dữ liệu phụ trong JSON được lưu trữ dưới dạng khóa/giá trị. Một khóa sẽ tương ứng với 1 giá trị. Giá trị ở đây có thể là một mảng, một chuỗi, một số int, double, mảng hoặc đối tượng…

Các bạn có thể tìm hiểu kỹ hơn về JSON tại đây

Dưới đây là một tài liệu cơ bản với định dạng JSON, các bạn sẽ thấy nó khá dễ đọc

{

"_Tôi". ObjectId(“58c59c8f99d4ee0af9e5ccfc”),

"Tiêu đề". "Người Sắt",

"năm". 2008,

"imdbId". “tt0371746”,

"tỉ suất MPAA". “PG-13”,

“thể loại”. “Hành động, Phiêu lưu, Khoa học viễn tưởng”,

“xếp hạng người xem”. 7. 9,

“người xembình chọn”. 615059,

"thời gian chạy". 126,

"giám đốc". “Jon Favreau”,

"dàn diễn viên". [

“Robert Downey Jr. ”,

“Terrence Howard”,

“Cầu Jeff”,

"Gwyneth Paltrow"

],

"mảnh đất". “Sau khi bị giam cầm trong một hang động ở Afghanistan, một nhà công nghiệp đã tạo ra một bộ áo giáp được trang bị vũ khí độc đáo để chống lại cái ác. ”,

"ngôn ngữ". “Tiếng Anh, tiếng Ba Tư, tiếng Urdu, tiếng Ả Rập, tiếng Hungary”

}

Như ví dụ ở trên, mỗi key (phần bên trái dấu hai chấm) sẽ ứng với một giá trị (phần bên trái dấu hai chấm), và phần giá trị có thể có nhiều kiểu dữ liệu khác nhau (chuỗi, int, mảng…

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

Lỗi thường gặp mongodb

Sau đây là một số điểm ưu tiên của MongoDB

  • Ít lược đồ hơn. MongoDB là một Databse tài liệu, các tài liệu trong cùng một bộ sưu tập không nhất thiết phải giống nhau về trường số, loại dữ liệu như trong SQL
  • Cấu trúc của một Tài liệu rõ ràng, dễ đọc và dễ hiểu
  • Không cần thiết phải sử dụng các lệnh THAM GIA phức tạp
  • Khả năng mở rộng dữ liệu dễ dàng, không cần quá bận tâm về kiểu dữ liệu, từ khóa chính, từ 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 mở rộng quy mô (Quy mô theo chiều ngang)

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

Do đó, khi nào ta nên sử dụng MongoDB

  • Sử dụng tài liệu để 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 Chèn nhiều (viết chuyên sâu)
  • Cần cơ chế Replication và High Availability
  • Cần cơ chế Sharding

Một số trường hợp sử dụng phổ biến của MongoDB là Hệ thống quản lý số lượng nội dung, Hệ thống phân tích dữ liệu lớn, Quản lý phân tích danh mục sản phẩm trong thương mại điên tử, ứng dụng xã hội…