MongoDB là gì? Những gì bạn cần biết về cơ sở dữ liệu đa nền tảng MongoDB

Cơ sở dữ liệu đa nền tảng MongoDB

MongoDB là gì? Được xem là một nền tảng phần mềm cơ sở dữ liệu đa nền tảng được sử dụng khá nhiều trong các ứng dụng hiện đại ngày nay như Google, Facebook, Ebay, Adobe… nhờ các công cụ và tính năng được tích hợp.

MongoDB là gì? CSDL đa nền tảng MongoDB
MongoDB là gì? CSDL đa nền tảng MongoDB

Những gì bạn cần biết về cơ sở dữ liệu MongoDB

MongoDB là gì? Định nghĩa cơ bản về MongoDB

Trước khi tìm hiểu về các chức năng và hiệu suất của MongoDB chúng ta đi vào tìm hiểu về định nghĩa về MongoDB là gì? MongoDB là một cơ sở dữ liệu mã nguồn mở, nó còn là cơ sở dữ liệu NoSQL hàng đầu hiện nay, được triệu người sử dụng, nó được viết bằng một trong những ngôn ngữ lập trình phổ biến nhất hiện nay C++.

Ví dụ: Giả sử bạn đang xây dựng một ứng dụng mạng xã hội. Bạn cần lưu trữ thông tin về người dùng, bài đăng, bình luận,… Với MongoDB, bạn có thể lưu trữ tất cả dữ liệu này trong một cơ sở dữ liệu duy nhất

Bên cạnh đó MongoDB còn là dữ liệu đa nền tảng hoạt động trên các khái niệm Collection và Document, cung cấp với hiệu suất cao có tính khả dụng cao và có khả năng dễ dàng để mở rộng.

NoSQL là dạng  CSDL mã nguồn không sử dụng  Transact-SQL để truy cập thông tin, CSDL nàyn phát triển trên Javascript Framework trên kiểu dữ liệu JSON.  Với sự ra đời của nó đã khắc phục được những nhược điểm của dữ liệu theo mô hình quan hệ RDBMS nhằm cải thiện tốc độ vận hành, chức năng, khả năng mở rộng mô hình, bộ nhớ memory cache…

Các thuật ngữ hay sử dụng trong MongoDB

id- Trong mỗi document bắt buộc có trường này.  Trường này được hiểu là khóa chính trong document, là đại diện cho giá trị duy nhất trong document MongoDB. Khi bạn thêm mới một document thì MongoDB tự động tạo ra một id đại diện cho document đó và duy nhất trong cơ sở dữ liệu MongoDB.

Collection- Nó có thể được hiểu là một bảng tương ứng trong cơ sở dữ liệu RDBMS(Relational Database Management System), nằm trong một  cơ sở dữ liệu duy nhất, các collection không phải định nghĩa các cột, các hàng hay kiểu dữ liệu trước.

Cursor- Con trỏ chỉ đến tập kết quả của một yêu cầu truy vấn. Khách hàng có thể lặp qua một con trỏ để lấy kế quả.

Database- Tại đây chính là chỗ chứa các Collection, chứng chứa các bảng giống như các cơ sở dữ liệu RDMS. Trên bộ nhớ vật lý một Database sẽ có một tập tin riêng được lưu trữ. Mỗi máy chủ MongoDB chứa được nhiều Database.

Document- Một bản ghi được gọi là một document khi bản ghi đó thuộc một collection. Document gồm có các trường như tên, giá trị.

Field- Một cặp gồm name và value trong một document chính là field. Một document có nhiều trường hoặc không, các trường ở đây giống các cột ở cơ sở dữ liệu.

JSON- Đối với lập trình nó hỗ trợ nhiều về mặt ngôn ngữ nhờ sự tường minh trong cú pháp coding. JSON là viết tắt của JavaScript Object Notation, nó chính là một chuẩn mở mô tả dữ liệu dưới dạng văn bản dễ đọc và được lưu trữ key-value.

Index- Nó chính là một thuật ngữ SEO quen thuộc với và chính là thuật ngữ dùng nhiều nhất trong SEO. Index có những cấu trúc dữ liệu đặc biệt, để chứa lượng nhỏ của các tập dữ liệu để quét một cách dễ dàng. Index hỗ trợ độ phân tích các hiệu quả các truy vấn, khi không có chỉ mục thì MongoDB sẽ phải quét tất cả các document của collection để đưa ra document phù hợp với truy vấn. Nhưng khi quét như thế sẽ không có hiệu quả và yêu cầu MongoDB xử lý khối lượng lớn dữ liệu.

So sánh giữa RDBMS( Relational database management system) và MongoDB

| RDBMS | MongoDB | | ——– | ——– | | Database | Database | | Table | Collection| | Tuple/Row | Document| Column| Field Table Join | Embedded Documents Primary Key | Primary Key (mặc định là _id).

Sau đây là ví dụ về Embedded Documents:

Để trỏ đến last trong trường name ta dùng “name.last”. Dùng “contact.phone.number” để chỉ number trong phone, trong đó phone lại nằm trong contact.

Các kiểu dữ liệu trong MongoDB

Các dữ liệu sau đây được MongoDB hỗ trợ:

Chuỗi: chuỗi thường được sử dụng nhiều nhất để lưu trữ dữ liệu. Trong MongoDB các chuỗi là UTF-8 hợp lệ.

Số nguyên: thường sử dụng lưu giá trị số, có thể là 32bit hoặc 64 bit phụ thuộc vào Sever của bạn.

Boolean: dữ liệu này để lưu giữ một giá trị Boolean

Double: ở đây kiểu dữ liệu được sử dụng để lưu các trị số thực dấu chấm động.

Min/Max keys: sử dụng để so sánh một giá trị các phần tử BSON thấp nhất và cao nhất.

Mảng: dùng để lưu giữ mảng, danh sách hay nhiều giá trị vào một key.

Timestamp: nó đánh dấu thời điểm một Document đã sửa đổi

Object: dùng cho các Document được nhúng vào

Null: để lưu một giá trị Null

Symbol: dùng như một chuỗi

Date: trong định dạng UNIX time mọi người dùng để lưu giữ date  và time hiện tại

Object ID: để lưu giữ ID của Document

Binary data: sử dụng lưu giữ dữ liệu nhị phân

Code: dữ liệu này dùng lưu giữ JavaScrip code vào trong document

Regular expression: để lưu trữ Regular Expresion

Ví dụ: Minkey và Maxkey là 2 documents có trong Collection

 

Kết quả trả về từ câu lệnh truy vấn sau là 1 documents có _id:1

hoặc có thể viết

Một số câu lệnh dùng trong MognoDB

MognoDB hoạt động như thế nào

Cấu trúc MongoDB
Cấu trúc MongoDB
  • Nó được hoạt động dưới một tiến trình ngầm service, cổng 27017 là mặc định luôn được mở, để xử lý các yêu cầu truy vấn và các thao tác từ ứng dụng gửi vào sau đó mới xử lý.
  • Mỗi bản ghi của MongoDB tự động gắn thêm một field kiểu dữ liệu Objectld để xác định được tính duy nhất của bản ghi này với bản ghi khác và để thực hiện tìm kiếm và truy vấn thông tin sau. Tốc độ truy vấn thông tin có được hiệu suất cao nhất trường dữ liệu “-id” tự động đánh index.
  • Khi truy vấn dữ liệu bản ghi được cache lên Ram để hỗ trợ các lượt truy vấn sau này nhanh hơn mà không cần đọc từ ổ cứng.
  • Các yêu cầu như thêm/ sửa/ xóa bản ghi mục đích đảm bảo hiệu suất của ứng dụng mặc định MongoDB chưa được cập nhật ổ cứng ngay. Trong thời gian 60 giây MongoDB thực hiện xong ghi toàn bộ dữ liệu thay đổi từ Ram xuống ổ cứng.

Tuy thế MongoDB có các nhược điểm sau:

  • Dữ liệu caching, lấy Ram là trọng tâm của hoạt động vì thế khi hoạt động yêu cầu một bộ nhớ Ram lớn.
  • Các dữ liệu mặc định đều chưa được ghi xuống ổ cứng luôn thế nên khả năng bị mất dữ liệu từ nguyên nhân cắt điện bất ngờ là cao.

Lợi thế của MongoDB

  • Ít schema: schema sinh ra để nhóm các đối tượng vào 1 cụm, để quản lý dễ dàng. Tạo một schema có tên Students  không có liên quan gì đến student thì mới cho được vào schema. Khi đó mongodb chỉ 1 collection chứa được nhiều document khác nhau. Một document thì số trường, nội dung, kích thước khác nhau.
    Schema linh hoạt
    Schema linh hoạt
  • Có cấu trúc rõ ràng của một đối tượng
  • Các join không hề phức tạp
  • Mở rộng dữ liệu không cần lo đến vấn đề về khóa ngoại, khóa chính, kiểm tra ràng buộc…Đối với mongodb thì nó thực hiện replication và sharding nên việc mở rộng dễ dàng hơn.
    Khả năng mở rộng của nền tảng MongoDB
    Khả năng mở rộng của nền tảng MongoDB
  • Để việc truy cập dữ liệu nhanh hơn chúng ta nên sử dụng bộ nhớ trong để lưu giữ các cửa sổ làm việc trước đó. Nhờ update tại chỗ nên việc cập nhật thực hiện được nhanh gọn hơn.
    Hiệu năng cao và ổn định
    Hiệu năng cao và ổn định

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

Các trường hợp mà sử dụng được MongoDB như sau:

  • Website mà bạn đã truy cập có tính chất hư Insert cao vì MongoDB có sẵn cơ chế ghi nên khi truy cập sẽ ở tốc độ cao và an toàn. Website dưới dạng thời gian thực hiện ở mức có nhiều người thao tác với ứng dung. Nên trong khi quá trình load bị lỗi thì nó sẽ bỏ qua phần đó nên sẽ được an toàn.
  • Có quá nhiều dữ liệu ở web của bạn, web của bạn có đến cả chục triệu records thì đó thực sự là ám ảnh với MYSQL. Đối với mongodb ở nó có khả năng tìm kiếm thông tin với tốc độ nhanh chóng trong trường hợp này nên dùng nó.
  • Cuối cùng sử dụng Mongodb khi máy chủ không có hệ quản trị CSDL.

Không nên sử dụng MongoDB khi nào?

  • MongoDB không có cơ chế transaction nên không sử dụng được đối với các ứng dụng cần nhiều transaction.
  • Các ứng dụng cần SQL.

Công cụ quản trị MongoDB

Các công cụ quản trị MongoDB
Các công cụ quản trị MongoDB

Dưới đây là các công cụ thông thường:

Kết luận

Bài viết này mình cung cấp thông tin cần thiết cho các bạn muốn tìm hiểu về MongoDB là gì, đọc bài viết để tham khảo thêm thông tin.