1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo đồ án tìm hiểu về hệ quản trị cơ sở dữ liệu mongodb

23 116 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu về hệ quản trị cơ sở dữ liệu MongoDB
Tác giả Nguyễn Thanh Phong, Phạm Hữu Phúc
Người hướng dẫn TS – Nguyễn Gia Tuấn Anh, CN – Tô Quốc Huy
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Khoa học và kỹ thuật thông tin
Thể loại Báo cáo đồ án
Năm xuất bản 2022
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 23
Dung lượng 2,87 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 2

3 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 3

Mụ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 4

DANH 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 5

DANH 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 6

I 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 7

Hì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 8

Hì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 9

Hì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

Ngày đăng: 17/08/2023, 10:32

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w