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.
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
- 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.
- 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.
- Để 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.
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
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.