Những hệ quản trị cơ sở dữ liệu đại diện tiêu biểu như: Microsoft SQL Server, Postgres, Oracle Database, MySQL, …Để có một cái nhìn mới mẻ hơn, rộng lớn hơn, nên chúngmình đã cùng nhau t
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HỌC VÀ KỸ THUẬT THÔNG TIN
BÁO CÁO ĐỒ ÁN Tìm hiểu về hệ quản trị Cơ
Sở Dữ Liệu MongoDB
Môn học: Quản lý thông tin
Sinh viên thực hiện:
<Nguyễn Thanh Phong> – <20521745>
<Phạm Hữu Phúc> – <20521770>
Giảng viên hướng dẫn:
TS – Nguyễn Gia Tuấn Anh
CN – Tô Quốc Huy
Thành phố Hồ Chí Minh, tháng 5 năm 2022
Trang 23 Nội dung chi tiết.
Nội dung 1: Tìm hiểu về MongoDB.
+ Đề mục 1: Tìm hiểu về MongoDB và viết word
+ Đề mục 2: Tìm hiểu về chức năng cơ bản và cách hoạt động.+ Đề mục 3: Tìm hiểu về chức năng nâng cao và cách hoạt động
Nội dung 2: Demo những chức năng và tổng kết
+ Đề mục 1: Demo những chức năng cơ bản
+ Đề mục 2: Demo những chức năng nâng cao
+ Đề mục 3: Rút ra kết luận từ bài báo cáo
4 Phân công công việc.
Nội dung 2: mục 2.2, 2.3
Nội dung 2: mục 2.1
1
Trang 3Mục lục
I Giới thiệu về MongoDB 5
II Nội dung đồ án 8
1) Các tính năng cơ bản của phần mềm MongoDB 8
A) Chức năng đọc hoặc truy vấn (Find) 8
B) Chức năng ghi (Insert) 9
C) Chức năng xóa (Remove) 9
D) Chức năng sửa (Update) 10
2) Các tính năng nâng cao của phần mềm MongoDB 10
A) Xác thực (Authentication) 10
B) Phân quyền (Authorize) 11
C) Phân tán dữ liệu (Data distribute – Sharding) 12
D) Lưu trữ dữ liệu (Backup) 13
E) Khôi phục dữ liệu (Restore) 13
F) Import 14
G) Export 14
3) Demo về các chức năng của Mo ngoDB 1 5 A) Kịch bản dự kiến demo 15
B) Nội dung demo 15
C) Video clip demo trực tiếp 19
III Kết luận và hướng phát triển 19
A) Kết quả đạt được 19
B) Hướng phát triển 19
2
Trang 4DANH MỤC BẢNG
Bảng 1: So sánh giữa NoSQL và RDBMS 6
Bảng 2 : Thuật ngữ giữa MongoDB và RDBMS 8
Bảng 3: Các toán tử so sánh khi muốn truy vấn có điều kiện 9
Bảng 4: Quyền và ý nghĩa của User 11
Bảng 5: Quyền và ý nghĩa của Admin 11
Bảng 6 : Quyền và ý nghĩa của Backup – Resto re 12
Bảng 7 : Quyền và ý nghĩa của Database s 12
Bảng 8: Quyền và ý nghĩa của Root 12 Bảng 9 : Những thuộc tính của Collections Restaurant 1 5 Bảng 10 : Những thuộc tính của Collections Address 1 5
3
Trang 5DANH MỤC HÌNH
Hình 1: Minh họa về NoSQL 5
Hình 2: Giao diện của phần mềm Mon goDB 6
Hình 3: Giao diện của phần mềm MongoDB 6
Hình 4: Giá cả về dịch vụ và chức năng được cung cấp 7
Hình 5: Sharding khi sử dụng Shared Cluster 12
Hình 6: Tạo user, collections và thêm dữ liệu vào những collections đó 1 6 Hình 7 : Đọc dữ liệu từ Collection Address 16
Hình 8: Đọc dữ liệu từ Collec tion Restaurant 16
Hình 9 : Sửa dữ liệu của các Collections 16
Hình 10: Xóa dữ liệu của các Collections 16
Hình 11: Thông báo tạo tài khoản thành công 17
Hình 12: Các công cụ hỗ trợ của MongoDB 17
Hình 1 3 : Các loại file trong folder cùng tên với database chọn để Backup 17
Hình 14: Thông báo Res tore thành công 18
Hình 15 : Thông báo Export thành công 3 bản ghi 18
Hình 16: File outfile.json được lưu tại thư mục BackupMongo 18
Hình 17 : Thông báo Import thành công 18
Hình 18 : Lược đồ minh họa cho 1 ứng dụng mạng xã hội 20
4
Trang 6I Giới thiệu về MongoDB
Trong năm học vừa qua, chúng ta đã được tìm hiểu về một mô hình dữ liệu quan hệ (Còn gọi là RDBMS) Những hệ quản trị cơ sở dữ liệu đại diện tiêu biểu như: Microsoft SQL Server, Postgres, Oracle Database, MySQL, …Để có một cái nhìn mới mẻ hơn, rộng lớn hơn, nên chúngmình đã cùng nhau tìm hiểu về một mô hình dữ liệu khác, và đó là mô hình dữ liệu dữ liệu phi quan hệ (Gọi là cơ sở dữ liệu NoSQL) Đại diện cho NoSQL sẽ là các hệ quản trị như MongoDB, Cassandra, Neo4j, Oracle NoSQL, …
Chúng ta đã được học về những thứ kiến thức cơ bản của RDBMS và chưa có gì về mô hình
dữ liệu NoSQL Sau đây, hãy cùng điểm qua về những thứ cơ bản và so sánh chúng với RDBMS
NoSQL (Non–Relational) là cơ sở dữ liệu phi quan hệ, ràng buộc giữa chúng là các Collection (Tương đương Table trong RDBMS) nghĩa là giữa các Collection sẽ không có khóa chính hay khóa ngoại Việc này giúp cho cơ sở dữ liệu có nhiều bảng hơn, ngoài ra còn đặc biệt nhấn mạnh đến mô hình lưu trữ value – key và hệ thống lưu trữ phân tán
5
Trang 7Hình ảnh 1: Minh họa về NoSQL.
Dưới đây là bảng so sánh giữa cơ sở dữ liệu NoSQL – RDBMS và SQL Server – MongoDB
về một số khía cạnh:
Yêu cầu phần cứng
cho dữ liệu
Phần cứng máy chủ phải cao Không nhất thiết phải cao song có thể mở rộng
máy chủ ở nhiều nơi với phần cứng thấp
Mô hình dữ liệu Table, row, column document, key – value, cơ sở dữ liệu biểu đồ.Ngôn ngữ query Structured query Language (SQL) Không có ngôn ngữ query
Schema (Lược đồ) Vì sử dụng lược đồ nghiêm ngặt (schema
strict) nên khi hoạt động sẽ sử dụng schema
được xác định từ trước
Vì hỗ trợ cho các lược đồ động (schema dynamic) nên đã được sử dụng cho dữ liệu phi cấu trúc
Mô hình dữ liệu
Lưu trữ dữ liệu Không phù hợp để lưu trữ dữ liệu phân cấp Phù hợp cho việc lưu trữ dữ liệu phân cấp.Khả năng mở rộng Hầu hết các tình huống đều mở rộng theo
chiều dọc Ngoài mở rộng theo chiều dọc, còn có thể mở rộng theo chiều ngang
Bảng 1: So sánh giữa NoSQL và RDBMS
Từ những so sánh trên, nhóm đã quyết định cùng nhau tìm hiểu về những thông tin cơ bản của mongoDB thuộc cơ sở dữ liệu NoSQL – phổ biến hiện nay
6
Trang 8Hình ảnh 2 – 3: Giao diện của phần mềm mongoDB.
Trước khi vào khái niệm của mongoDB ta cùng nhau tìm hiểu về lịch sử ra đời của mongoDB trước Khoảng năm 2007, những người đã sáng lập ra công ty 10gen (Năm 2013 đã đổi thành MongoDB Inc.) vì đã không tìm được nền tảng cơ sở dữ liệu nào đáp ứng được những
“nguyên tắc” của họ cho kiến trúc đám mây và tổn thất về mặt tài chính khá nhiều nên công ty
đã chuyển hướng sang một cơ sở dữ liệu hướng đối tượng tên là MongoDB Đây là một phần mềm cơ sở dữ liệu với mã nguồn mở và được dùng các mô hình như: Mô hình dữ liệu nhúng (Embedded Relationship) và mô hình dữ liệu chuẩn hóa (Referenced Relationship)
- Mô hình dữ liệu nhúng (hay còn gọi là mô hình dữ liệu không chuẩn hóa):
+ Nhúng tất cả các dữ liệu liên quan vào một document hoặc structure duy nhất.+ Cho phép các ứng dụng lưu trữ các thông tin liên quan trong cùng một bản ghi cơ sở
dữ liệu
+ Ưu điểm: Duy trì tất cả dữ liệu có liên quan trong một Document đơn, điều này giúp cho việc lấy và duy trì dữ liệu dễ dàng Toàn bộ Document có thể được lấy trong một query đơn
+ Nhược điểm: Nếu Document được nhúng tiếp tục tăng kích cỡ quá nhiều, nó sẽ ảnh hưởng đến hiệu suất đọc/ghi
+ Dùng khi:
Mối quan hệ 1 – n
Có quan hệ chứa giữa các thực thể
- Mô hình dữ liệu chuẩn hóa:
+ Sử dụng tài liệu tham khảo giữa các tài liệu
+ Ưu điểm: Các collection sẽ vẫn được duy trì một cách riêng rẽ
+ Nhược điểm: Cần nhiều query hơn để đọc dữ liệu
+ Dùng khi:
Biểu diễn mối quan hệ n – n
Mô hình hóa các tập dữ liệu phân cấp lớn
Khi dùng nhúng dẫn đến việc trùng lặp dữ liệu
Vì mongoDB được một công ty lớn sáng tạo ra cho nên có bản quyền và những giá cả kèm những dịch vụ cung cấp đi kèm sẽ khác nhau tùy vào nhu cầu sử dụng như: không có máy chủ (Serverless), chuyên dụng (Dedicated), được chia sẻ miễn phí (Shared)
7
Trang 9Hình ảnh 4: Giá cả về dịch vụ và chức năng cung cấp.
Các thuật ngữ được dùng trong MongoDB:
Primary Key (Giá trị mặc định là _id được cung cấp bởi chính MongoDB) Primary Key
Bảng 2: Thuật ngữ giữa MongoDB và RDBMS
II Nội dung đồ án.
1) Các chức năng cơ bản của MongoDB.
Hệ quản trị cơ sở dữ liệu MongoDB có các chức năng cơ bản như (đọc, ghi, xóa sửa) và các chức năng này sẽ được thực hiện trên shell Command Prompt (Windows)
A Chức năng đọc hoặc truy vấn (Find).
Như đã học về môn Cơ Sở Dữ Liệu (IT004) thì chức năng đọc của một SQL Server (Hệ quản trị cơ sở dữ liệu quan hệ) được biểu diễn qua câu lệnh SELECT nhưng vì MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ nên đã được thay đổi câu lệnh khi biểu diễn chức năng đọc, cụ thể là lệnh FIND
Đọc hoặc truy vấn (Không có điều kiện)
Để có thể thực hiện câu lệnh đọc hoặc truy vấn thì ta có thể dùng cú pháp:
db.CollectionName.find()
o Trong đó: find là phương thức hiển thị document dưới dạng không cấu trúc
o Ngoài ra, chúng ta còn có một câu lệnh giúp ta hiển thị document đã được địnhdạng, để có thể thực hiện được điều đó ta có thể dùng cú pháp:
db.CollectionName.find().pretty()
8
Trang 10 Đọc hoặc truy vấn (Có điều kiện).
Để truy vấn Document dựa trên một số điều kiện nào đó mà những bài toán đặt ra, ta có thể sử dụng các toán tử so sánh sau:
$eq So sánh các giá trị bằng với một giá trị chỉ định.
Cú pháp: { field: { $eq: value } }
$gt So sánh các giá trị lớn hơn với giá trị được chỉ định.
Cú pháp: { field: { $gt: value } }
$gte So sánh giá trị của trường lớn hơn hoặc bằng 1 giá trị được chỉ định
Cú pháp: { field: { $gte: value } }
$in So sánh giá trị nằm trong mảng được chỉ định
Cú pháp: { field: { $in: [ <value1>, <value2>, , <valueN> ] } }
$lt So sánh các giá trị nhỏ hơn giá trị được chỉ định.
Cú pháp: { field: { $lt: value } }
$lte So sánh các giá trị nhỏ hơn một giá trị được chỉ định.
Cú pháp: { field: { $lte: value } }
$ne So sánh các giá trị không bằng giá trị được chỉ định.
Cú pháp: { field: { $ne: value } }
$nin Lấy ra các giá trị không có trong mảng được chỉ định.
Cú pháp: { field: { $nin: [ <value1>, <value2>, , <valueN> ] } }
$and hoặc
$or
Chọn ra documents đáp ứng tất cả các biểu thức trong mảng khi ta thực hiện trên một bảng của một hoặc nhiều biểu thức (Đây là một truy vấn có nhiều điều kiện)
Cú pháp: { $and: [ { <biểu thức 1> }, { <biểu thức 2> } , , { <biểu thức N> } ] }
Cú pháp: { $or: [ { <biểu thức 1> }, { <biểu thức 2> } , , { <biểu thức N> } ] }
Bảng 3: Các toán tử so sánh khi muốn truy vấn có điều kiện
Dưới đây là cú pháp để thực hiện một lệnh truy vấn có điều kiện Song, và là một ví dụ
cụ thể lẫn ý nghĩa của câu lệnh
+ Cú pháp: db.CollectionName.find ({ <key> : { toán_tử: <value> }})
+ Ví dụ minh họa: db.CollectionName.find ({ key1: { $ne: 50 }}).pretty()
Ý nghĩa: Ta sẽ lọc ra các bộ sẽ thỏa mãn điều kiện key1 != 50
B Chức năng ghi (Insert).
Ý nghĩa của câu lệnh này hoàn toàn khá giống so với SQL Server, điểm khác biệt nằm ở đây là về cú pháp khi ta thực hiện câu lệnh này trên MongoDB
Cú pháp: db.CollectionName.insert (document)
hoặc db.CollectionName.save (document)
- Trong đó: + CollectionName là tên bảng
+ insert và save là 2 phương thức chèn dữ liệu vào
+ document là dữ liệu thêm vào dưới dạng JSON để có thể thực thi lệnh
insert hoặc save một cách thành công
9
Trang 11 JSON ( JavaScript Object Notation) là một dạng dữ liệu tuân theo quy luật nhất định và hầu hết mọi ngôn ngữ khác đều có thể đọc được song JSON cũng là một định dạng tệp tiêu chuẩn mở để trao đổi dữ liệu trên web Kiểu dữ liệu này bao gồm chủ yếu là ở dạng văn bản, và có thể đọc được dạng cặp “value – key”.
C.Chức năng xóa (Remove).
Ý nghĩa của câu lệnh này hoàn toàn khá giống so với SQL Server, điểm khác biệt nằm ở đây là về cú pháp khi ta thực hiện câu lệnh này trên MongoDB
- Trong đó: + CollectionName là tên bảng
+ remove là phương thức để xóa dữ liệu
+ query là câu truy vấn để chọn lọc dữ liệu
+ justOne truyền vào true/false True xóa bản ghi và False xóa tất cả khớp với query
+ writeConcern là một document chứa write concern
+ collation là một document chứa các quy tắc
Ngoài ra, những thứ như justOne, writeConcern, collation có thể đưa vào hoặc không Khi ta không đưa vào câu lệnh thì chúng sẽ xóa đi tất cả, nhằm tránh điều đó ta đưa vào nhằm mục đích xóa có chọn lọc, để tránh xóa đi những dữ liệu mà ta không mong muốn
D Chức năng sửa (Update).
Ý nghĩa của câu lệnh này hoàn toàn khá giống so với SQL Server, điểm khác biệt nằm ở đây là về cú pháp khi ta thực hiện câu lệnh này trên MongoDB
Cú pháp: db.CollectionName.update (query, update_data)
hoặc db.CollectionName.save (query, update_data)
- Trong đó: + CollectionName là tên bảng
+ update là phương thức dùng để cập nhật giá trị đang tồn tại trong document
+ save là phương thức sẽ thay thế document cũ bằng một document mới + query là một câu truy vấn được đặt vào để chọn lọc ra dữ liệu
2) Các chức năng nâng cao của MongoDB.
10
Trang 12Để đáp ứng dịch vụ nhiều hơn nên MongoDB đã có những chức năng nâng cao như: xác thực, phân quyền, phân tán dữ liệu, backup, restore, import, export, …
A Xác thực (Authentication).
Thông thường sau khi cài đặt thì có thể truy cập mà không cần dùng đến việc đăngnhập với không có tính xác thực cho nên chức năng này giúp cho việc quản lý truy cấp database một cách an toàn, bảo mật hơn Khi đó, database admin là nơi lưu trữ thông tin xác thực tài khoản system user
Cú pháp: use admin
db.createUser (
{
user: “my_user_name”,pwd: “my_password”,roles: [ { role: “role_name”, db: “database” } ]}
- Trong đó: + user là tên user
+ pwd là mật khẩu cho user
+ roles là quyền cho user đó Mỗi role sẽ bao gồm database và role tương ứng
Đây là các bước để bật chức năng xác thực (Authentication)
Bước 1: Tìm đến file mongod.cfg và sửa nội dụng file cấu hình
Bước 2: Thêm từ khóa authorization: “Enabled” và bỏ dấu “#” trước security.Bước 3: Restart lại MongoDB Server
Sau khi đã bật chức năng, để kết nối database ta phải nhập đúng thông tin đã tạo ra Điều này nhằm củng cố cho việc dữ liệu được bảo mật một cách an toàn và hạn chế khả năng kết nối từ người ngoài vào database sở hữu
Ngoài ra, để đăng nhập vào Mongo ta dùng lệnh:
mongo -u username -p password localhost:27017/admin
hoặc dùng phương thức: db.auth(‘username’, ‘password’)
B Phân quyền (Authorize).
Tại chức năng này, MongoDB sẽ cung cấp 1 bộ các quyền (role) cho admin, user, databases, …, chức năng này cho phép phân quyền khả năng truy cập database ở các mức
độ khác nhau Dưới đây là những role mà MongoDB sẽ cung cấp:
11
Trang 13 User roles (Dành cho client)
read Được cấp quyền đọc tất cả các dữ liệu trên Collection
readWrite Giống như quyền read nhưng có thêm khả năng chỉnh sửa dữ liệu
Bảng 4: Quyền và ý nghĩa của User
Administration roles (Dành cho administrasor)
dbAdmin Cung cấp quyền thực thi các task administrative như index, …userAdmin Cấp quyền tạo, sửa, đổi user của các role ở database hiện tại
dbOwner Cung cấp quyền readWrite, dbAdmin và userAdmin
Bảng 5: Quyền và ý nghĩa của Admin
Backup – Restoration roles
Backup Cung cấp quyền sao lưu dữ liệu
Restore Cung cấp quyền khôi phục dữ liệu từ bản sao lưu dữ liệu
Bảng 6: Quyền và ý nghĩa của Backup – Restore
All database roles (Dành cho databases)
readAnyDatabase Cấp quyền hiển thị databases
readWriteAnyDatabase Cung cấp quyền readWrite lên databases
userAdminAnyDatabase Cấp quyền userAdmin trên databases
dbAdminAnyDatabase Cấp quyền dbAdmin trên databases
Bảng 7: Quyền và ý nghĩa của Databases
Highest permission hoặc Priority (Quyền cao nhất)
Root Là quyền cao nhất trong chức năng phân quyền
Bảng 8: Quyền và ý nghĩa của Root
C Phân tán dữ liệu (Data distribute - Sharding).
Khi các mainframe gặp một lượng lớn dữ liệu hay tải cao trên cơ sở dữ liệu thì đây
sẽ là một thách thức lớn đối với chúng Kèm theo đó với những câu lệnh phức tạp có thể dẫn đến CPU đòi hỏi về cấu hình phải được nâng cao, khỏe để đáp ứng được, điều đó dẫnđến việc chi phí phải bỏ ra đáng kể hơn
Để khắc phục những nhược điểm trên, chức năng phân tán dữ liệu đã xuất hiện.Sharding là một phương pháp lưu trữ dữ liệu trong một database trải dài trên nhiềumáy chủ Được sử dụng để hỗ trợ cho việc phân phối khối lượng dữ liệu cho các máy
12