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

Bài tiểu luận giữa kì Đề tài tìm hiểu về hệ quản trị cơ sở dữ liệu mongodb

35 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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ả Vũ Định Hoàng - 23001881, Vũ Quang Anh - 23001851, Bàn Khỏnh Duy - 23001851, Hà Trọng Hiếu - 23001874, Nguyễn Trớ Dũng - 21001538
Trường học Đại Học Quốc Gia Hà Nội
Chuyên ngành Khoa Học Tự Nhiên
Thể loại Bài tiểu luận
Thành phố Hà Nội
Định dạng
Số trang 35
Dung lượng 4,07 MB

Nội dung

Đề đáp ứng nhu cầu lưu trữ và truy xuất dữ liệu ngày càng lớn, các hệ quản trị cơ sở dữ liệu DBMS đã trở thành một phản không thê thiếu trong các ứng dụng ngày nay.. Tuy cả hai đều được

Trang 1

TRUONG DAI HOC KHOA HỌC TỰ NHIÊN

Bài tiểu luận giữa kì

Đề tài: Tìm hiểu về hệ quản trị co sở dữ liệu MongoDB

Trang 2

2.2 Lịch sử phát triên của NoSL 2 c2 21 121121515121 211121 1121111121111 gree 5 2.3 Một só thuật ngữ trong NoSQLL - - : 1 121 212121 11811211 1818111 E111 dye 6

2.4 So sánh CSDL NoSQL và CSDL SQL Ăn SH HH he 6 2.5 Phân loại các cơ sở dữ liệu NoSQLL - S2 221 xxx 2v vn ng nghe 8

Phân 3 Tìm hiều vẻ hệ quản trị cơ sở dữ liệu MongoDB ¿c5 : ssccecsxezxssces 11

3.1 Giới thiệu về MongoDB - s-+ss+xs+xxe2x2112217112112112711211271 7E ye 11

3.2 Các tính năng của MongoDB ch nhàn nh nh tt T1

ST 9ô nh 6 6e :ädaaia II ae 12

3.3 Một só mô hình triên khai của MongoDB - ccccc s22 ke 12 3.4 Ưu điểm và nhược điêm của MongoDB -: - : sec ccx xxx sxexerersrrrerrrree 14

3.5 Nên sử dụng MongoDB khi nào? - c ch 14

3.6 Sự phát triên của MongoDB -: +: :+s 2xx vs 3x x11 1111 1221 eerrei 15 3.7 Một só khái niệm trong MongoDB -: : +2: 22x21 xxx 2211511111 exerreg 15

Phản 4 Quản trị thành phản với hệ quản trị cơ sở dữ liệu MongoDB - 17

4.1.1 TaO Collection ccc cccccccesseesceeceesceeeeneeeeeeeeeeceeeeeeeeeeeceeeceeaeeaueaaaeaaaeaaaeasseeses 17

4.1.2 Một số kiêu dữ liệu trong MONGODB .cccccesesescsseceseeceseeeecsescsseeseseneeaees 18

4.1.3 Các thao tác CVRUD LH nH TH KH KH KH kh kiệt 18 4.2 Aggregation FrarmmeWO[K nh HH ng ng rkp 24

Trang 3

“hd 24

2 ¿0003 no nnn -4- À 25

4.2.3 Các hạn ché của Aggregation FramewOrk ¿+2 +2+ secseeexsrersresee 25 4.2.4 Các thao tác được hỗ trọ trên Aggregation Framework - -:- - 25 4.3 Index (Chỉ mục) - TQ Q TS HH nHn ng HT TH HT TH KHE yg 27 4.4 Hàm và thủ tục (Stored Proceduce - SP) ch nH HH khe 29 s6 “3ä A<TBTBTBỪTN sẽ 29 9 aaAA 29

4.5 Ràng bộc và bấy lỗi (TrÏQQ@r) c2 22221121212 2151515121 181112111111 Exerrrei 30

Muc luc hinh anh

Hình 1: Co sở dit ligu va Né quan tri co sO Cit LGU eee eee e cee ceceeeeeeeeeeeeeetecieeeeetsnaees 4

Hình 2: Sự khác nhau giữa NoSQL va SQL trong tng dung va cau trúc lưu trữ 8 Hình 3: Mô tả lưu trữ của CSDL nhóm Key-ValUe - - che 9 Hình 4: Document Database ở dạng JSON và XML Q ST SH nhe 9

Hình 5: Một record được lưu trữ trong cơ sở đữ liệu "Collumn Family" 10

Hình 6: Mô hình cơ sở dữ liệu đỗ thị - 2 5232223232323 2E2E2EEESEEEEEEEvrrrrrxersrrrerrrere 10

Hình 7: Mô hình Standalone LLL TQ TQ TH n HH HT TT HH khen gu kh 12 Hình 8: Mô hình Replication SH HH HT nen HH KH Hiệp 13 Hình 9: Mô hình Sharding LH HH HH KH KH KH KH KH kh 13

Hình 10: Tương đồng SQL và MongoDB - - 5: : scsex+x2x 232x121 2E Ekvrrrreo 16

Hinh 11: 0ï 8 soi eoi o0 17 Hình 12: Ví dụ thêm các documeni vào cOll©C†ÏOTN - - - + 2< 22c 2c nen ren 19

Hình 13: Ví dụ truy ván lây tat cả dữ liệU - c2: S222 S* S32 S11 ng 20

2

Trang 4

Hình 14: Ví dụ truy ván lấy các sinh viên 19 tuôi - ¿2-22 S2 S 2c srexsrersrererrrree 20

Hình 15: Ví dụ chỉ lấy tên của sinh viên S1 222122121 2182112111511 811111 rye 21

Hình 16: Ví dụ lấy các sinh viên lớn hơn 20 tuổi . - - ¿22252 + E222 zEeErekersreree 22 Hình 17: Ví dụ lấy sinh viên có tuổi trên 20 và tên là Hiều - 255252 c+c+s552 23

Hình 18: Ví dụ về cập nhật dữ liệu -2 2s 2S 22 12 12110211 071102102xe re 23

Hình 19: VÍ dụ xóa dữ liệU L2 HH HH HT HH TH ng KH gu khe khen hu 24 Hình 20: Nguyên tắc hoạt động cua Aggregation frameword : -:s e ses+ 25

Hình 21: Ví dụ lấy hai sinh viên sắp xép tăng dàn theo tuối nhưng không lấy 2 sinh viên

" 3 'Y 26

Hình 22: Minh họa về ind@X TT TH TH TH TH TH TH TH TH TH TH TH TH TH TT TT HH tà tết 27

Hình 23: Đưa 5.000.000 đữ liệu sinh viên vào collection - - cccccceeceeees 28

Hình 24: Truy vấn khi chưa sử dụng iId@x - - ¿25222 St 222v S3 exexsxexsrrrsrrrrerrree 28 Hình 25: Truy vấn sử dụng index đơn trường, - - +22 2z se +sx 2v xecexrxexsrersrrssrrrsee 29 Hình 26: Truy ván sử dụng index kết hợp :-:- ¿52 525: se S2 ex+xex+xexsxrrsrrrrrrrrrrrrxee 29

Mục lục bảng biều

Bảng 1: So sánh SQL và NoSQL ch 6

=0 e281/08-08 ii 1 8 ố ::-.2II 21

Bảng 3: Bảng so sánh giữa SQL và aggregation frameword opera†or 26

Trang 5

Phần 1 Tầng quan

1.1 Đặt vấn đề

Trong những năm gần đây, với sự phát triên của công nghệ thông tin, các ứng dụng wed

di động ngày càng trở nên phô biến Đề đáp ứng nhu cầu lưu trữ và truy xuất dữ liệu ngày càng lớn, các hệ quản trị cơ sở dữ liệu (DBMS) đã trở thành một phản không thê thiếu trong các ứng

dụng ngày nay

Hình 1: Cø sở dé ligu va hé quan tri co sé dữ liệu

Các hệ quản trị cơ sở dữ liệu truyền thóng, hay còn gọi là hệ quản trị cơ sở dữ liệu quan

hệ (RDBMS), được thiết ké đề lưu trữ và truy xuất dữ liệu theo cáu trúc bảng Tuy nhiên, RDBMS có một số hạn ché khi áp dụng cho các ứng dụng web và di động, chăng hạn như:

- _ Không linh hoạt: RDBMS yêu càu dữ liệu phải được định nghĩa trước theo một

lược đồ nhất định Điều này có thê gây khó khăn khi cần lưu trữ đữ liệu có cầu trúc linh hoạt, chăng hạn như đữ liệu về người dùng, sản phâm, hoặc bài viết

- Không hiệu quả: RDBMS thường có hiệu suất tháp khi thực hiện các truy vấn phức tạp, chăng hạn như truy vấn kết hợp dữ liệu từ nhiều bảng

- _ Khó mở rộng: RDBMS có thẻ gặp khó khăn khi cần mở rộng quy mô đề đáp ứng nhu cầu lưu trữ và truy xuất dữ liệu ngày càng lớn

Đề khắc phục những hạn ché này, các hệ quản trị cơ sở đữ liệu phi quan hệ (NoSQL) đã

ra đời NoSQL là một loại DBMS không yêu càu dữ liệu phải được định nghĩa trước theo một

lược đồ nhất định Điều này giúp NoSQL linh hoạt hơn RDBMS khi lưu trữ dữ liệu có cấu trúc

linh hoạt

MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL phô biến MongoDB lưu trữ dữ liệu

dưới dạng các tài liệu (document) theo phong cách JSON Điều này giúp MongoDB có thẻ lưu

trữ dữ liệu có cầu trúc linh hoạt, đồng thời vẫn đảm bảo hiệu suất cao và khả năng mở rộng tót Với những ưu điểm như trên, MongoDB được ứng dụng trong nhiều lĩnh vực khác nhau, bao gồm:

Trang 6

- _ Ứng dụng web và di động: MongoDB được sử dụng đề lưu trữ dữ liệu người

dùng, dữ liệu sản phẩm, hoặc dữ liệu bài viết trong các ứng dụng web và di động

- Ung dụng phân tích dữ liệu: MongoDB được sử dụng đề lưu trữ và truy xuất dữ liệu phân tích từ các nguồn khác nhau

- Ung dung IoT: MongoDB được sử dụng đề lưu trữ và truy xuất dữ liệu từ các

thiết bị loT

1.2 Mục tiêu đề tài

Mục tiêu của đề tài là tìm hiểu vẻ hệ quản trị cơ sở dữ liệu MongoDB Cụ thẻ, đề tài sẽ bao gồm các nội dung sau:

-_ Giới thiệu về MongoDB

- _ Kiến trúc của MongoDB

- _ Qác đặc diém của MongoDB

- Cac uu diém vả nhược điểm của MongoDB

- Cac ing dung cua MongoDB

Phan 2 Tìm hiểu về NoSQL

2.1 Khái niệm NoS@L

Cơ sở dữ liệu NoSQL (viết tắt của "Not SQL") là một cơ sở dữ liệu không quan hệ (non-

Relational) NoSQL là tên gọi chung cho các cơ Sở đữ liệu không sử dụng các bang nhu MySQL hay SQL Server Nó không sử dụng mô hình cơ sở dữ liệu quan hệ (RDBMSs) đề lưu trữ và truy cập dữ liệu mà sử dụng mô hình lưu trữ key - value Thay vì lưu trữ đữ liệu trong các bảng như

một cơ sở đữ liệu truyền thống, một CSDL NoSQL lưu trữ từng hạng mục riêng với một khóa duy nhát Ngoài ra, NoSQL còn là một hệ thống sử dụng dữ liệu phân tán Tức là dữ liệu của hệ thống này không chi bao gém những gì mà chúng ta nhập vào mà còn có thẻ là dữ liệu từ các file

hoặc video, và chúng được lưu trữ ở nhiều server khác nhau Điều này cung cáp một cách tiếp cận nhiêu linh hoạt hơn dé lưu trữ dữ liệu hơn là một cơ sở dữ liệu quan hệ

Với việc lưu trữ dữ liệu phân tán, NoSQL hỗ trợ rất tốt trong việc xứ lý một khói lượng

lớn dữ liệu lên đến hàng petabytes mà không cần phải có tài nguyên phản cứng cao Nó chia dữ

liệu của mình ra đề lưu trữ trên nhiều Server khác nhau tạo điều kiện cho việc mở rộng theo

chiều ngang một cách thuận lợi với chỉ phí không quá cao Bên cạnh đó, việc lưu trữ trên nhiều

Server cũng làm cho NoSQL có độ chịu tái và độ chịu lỗi cao Nhiều hệ thống cơ sở dữ liệu

NoSQL cũng sử dụng mã nguồn mở

2.2 Lịch sử phát triển của NoSQL

Thuật ngữ NoSQL được giới thiệu lần đầu tiên bởi Carlo Stozzi vào năm 1998, lúc này

nó còn được gọi là Lightweight open-source relational database Tuy nhiên, các khái niệm về cơ

Sở dữ liệu này vẫn chưa được hoàn thiện và vẫn còn mang hướng cơ sở đữ liệu quan hệ Đến đầu năm 2009, trong sự kiện thảo luận về " các cơ sở dữ liệu phân tán, không quan hệ nguồn mở", Johan Oskarsson Cua Last.fm đã giới thiệu lại thuật ngữ NoSQL

Trang 7

Đây là một cột mốc đánh dâu sự phát triên của hệ cơ sở dữ liệu mới - NoSQL Từ đó, NoSQL trở nên phát triển và phó biến và đặc biệt thông dụng với các mạng xã hội như:

Facebook, Twitter,

2.3 Một số thuật ngữ trong NoSQL

Hàng buộc (Relational) Không ràng buộc (non-Relational) Khả năng mở rộng (High Scalability)

Khả năng mở rộng theo chiều dọc (Vertical scalable) Khả năng mở rộng theo chiều ngang (Horizontal scalable)

Phân tán dữ liệu (Distributed data) Trién khai linh hoat (Deployment Flexibility) Tinh san sang (High Availability)

Nhat quan cudi (Eventual consistency) Lưu trữ tốt (Durability)

2.4 So sanh CSDL NoSQL va CSDL SQL

Hiện nay, có 2 loại hình cơ sở dữ liệu phô biến nhất là SQL và NoSQL Tuy cả hai đều

được sử dụng phô biến nhưng chúng vẫn có những điểm khác nhau như sau:

Bang 1: So sanh SQL va NoSQL

Tinh nang SQL NoSQL

Loai hinh Mỗi database duoc x4y dựng | Mỗi database được xây dựng

trên các hàng có quan hệ với dựa trên các tài liệu

nhau, mãi hàng ứng với một | (document)

recond mỗi cột ứng với một

Khả năng mở rộng SQL có thẻ mở rộng theo | NoSQL có thê dễ dàng mở

chiều dọc và chiều ngang

nhưng quả trình mở rộng theo

chiêu ngang sẽ rất phức tạp nếu đã tôn tại dữ liệu trong database Khi muốn bỏ sung rộng theo chiều dọc và chiều

ngang do các dữ liệu đưa vào

không phải phụ thuộc cầu

trúc bảng cho trước Dữ liệu

có thê thêm vào bát kỳ lúc

nào

Trang 8

thêm một cột dữ liệu thì phải khai báo trước

Hiệu suất Kém hơn NoSQL vì mỗi khi

truy vấn có phải tính toán, kiêm tra và xử lý các mi quan hệ giữa các bảng đề đảm bảo tính nhát quán của

đữ liệu

Tốt hơn SQL vì nó bỏ qua

các ràng buộc của đữ liệu

Tốc độ đọc/ ghi Kém hơn NoSQL vì nó phải

đảm bảo tính năng ràng buộc

dữ liệu giữa các bảng Nếu dị

liệu được lưa trữ trên nhiều Server thì phải đảm bảo tính

nhát quán về dữ liệu trên

Sever với nhau

Tốc độ nhanh vì NoSQL bỏ qua các ràng buộc vẻ dữ liệu

của các bảng

Thay đôi số node trong hệ

thống

Do yêu câu vẻ tính nhất thôn

quán đữ liệu nên khi ta thêm

hoặc xóa một node bát kì thì cần phải shutdown hệ thống

trong một khoảng thời gian

Do NoSOL cé tinh nhat quan cuối nên sẽ không cản phải Shutdown hé théng nhu SQL

Truy van va bao cao Có thê dễ dàng sử dụng ngô

ngữ Query đề truy ván dữ liệu trực tiếp tir database hoac sui dụng các công cụ hỗ trợ khá

NoSQL chưa hỗ trợ việc lây báo cáo dữ liệu trực tiếp, việc lay báo cáo thực hiện chủ yét

thông qua giao diện ứng dụn

Phân cứng Doi hoi phan cing cao Không đòi hỏi quá cao vẻ

phản cứng

Ứng dụng Được Sử dụng cho các hệ Được Sử dụng đề xây dựng

thống can méi quan hé chat chẽ và tính đồng nhất só lượng dữ liệu lớn, vẻ dữ liệu,

số lượng dữ liệu không quá

nhiều như: tải chính, ngân hàng các hệ thống lưu trữ không

quá quan trọng vẻ vấn đè đòng nhát dữ liệu trong một thời gian nhát định Như: các

mạng xã hội, trang thương mại điện tử

Trang 9

>> Qua bảng trên ta có thê thấy NoSQL có những ưu điểm vượt trội hơn SQL về khả năng

xử lý và lưu trữ đữ liệu Nhưng NoSQL không thẻ thay thế được SQL mà chúng sẽ hỗ

trợ, bô sung cho SQL đề xây dựng một hệ thống tốt hơn Hiện nay, trên thế giới đã có sự xuất hiện của một loại cơ sở đữ liệu mới, là sự kết hợp giữa NoSQL và SQL, tên là

NewSQL

Hình 2: S¿ khác nhau giza NoSQL và SQL trong zng dựng và Cấu trúc lưu tr

2.5 Phân loại các cơ sở dữ liệu NoSQ@L

Ngày nay, với sự phô biến của NoSQL, thì cơ sở đữ liệu này cũng được phát triên và phân thành nhiều loại khác nhau, các loại Cơ sở dữ liệu này khác nhau về cách lưu trữ dữ liệu Chúng được chia thành 5 nhóm như SAU:

- _ Cơ sở dữ liệu Key-Value: Đây là cơ sở đữ liệu được phát triên dựa trên ý tưởng

Sử dụng bảng băm (hash - table), nó có một khóa duy nhát và một con trỏ chỉ đến một mục dữ liệu cụ thẻ Cơ sở dữ liệu này có khả năng phân mảnh cao và cho

phép mở rộng quy mô theo chiêu ngang ở các quy mô lớn Các mô hình loại này

đơn giản và dễ thực hiện nhưng nó không hiệu qua khi chi truy vấn hoặc update

đến một phản dữ liệu trong value Cơ sở dữ liệu NoSQL loại Key-values thường

được Sử dụng cho trò chơi, công nghệ quảng cáo và đặc biệt thích hợp cho LoT

Trang 10

=)

Hình 3: Mô tớ 7w irữ của CSDL nhém Key-Value

- Cosé dir ligu tai ligu (Document Database): Loại này được xây dựng dựa trên ý tưởng

từ Lotus Noted và tương tự như loại Key- value Mô hình này bao gồm tập hợp nhiều document Bén trong mỗi documert là tập hợp các key- value và các cặp key-value này được lòng ghép với nhau Dữ liệu trong những document này thường được biêu diễn dưới dạng một đối tượng văn bản hoặc JSON Với loại cơ sở dữ liệu NoSQL này thì việc truy

ván sẽ được thực hiện hiệu quả hơn Tính chất linh hoạt và phân cấp của văn bản cho phép chúng phát triên phù hợp với yêu cầu của ứng dụng Hiện nay, Amazon

DocumentDB và MongoDB là các cơ sở dữ liệu tài liệu phô biến cung cáp các APT

mạnh mẽ và trực quan đề phát triên linh hoạt và lặp lại

Hinh 4: Document Database 6 dang JSON va XML

- Co sé dé ligu "Column Family": Co sở dir ligu nay dugc tao ra để lưu và xử ly lượng

lớn dữ liệu trên nhiều server Nó lưu trữ đữ liệu trong nhiều cột, nhiều dòng và mỗi dòng

sẽ có key riêng Column Family bao gồm một nhóm các dữ liệu có liên quan và được truy

Trang 11

cập cùng nhau Một số cơ sở dữ liệu dạng này phỏ biến hiện này là: Cassandra, Amazon

DynamoDB,

Hinh 5: Mét record được lưu trữ trong cơ sở dữ liệu "Collumn Family"

- _ Cơ sở dữ liệu đồ thị (Graph Database): giống như tên gọi, cơ sở dữ liệu này sử dụng

cầu trúc của đồ thị đề lưu trữ dữ liệu Nó không giống với cơ sở dữ liệu quan hệ lưu dữ

liệu dưới dạng bảng hay các loại cơ sở dữ liệu NoSQL ở trên Mỗi bản ghi (record) trong

cơ sở dữ liệu này được gọi là một Node, các node được két nói với nhau bằng các quan

hệ giống như trong Hệ cơ sở dữ liệu quan hệ (RMDBS) và có thẻ có các thuộc tính Các

mồi quan hệ giữa các node này không được tính vào thời gian truy ván nên việc truy vấn

Sẽ nhanh hơn so với trong RMDBS Hiện này có rất nhiều cơ sở dữ liệu đồ thị có săn như

Neo4, Infinite Graph, OrientDB,

1d: 1 Name: Alice Age: 18

Trang 12

Phần 3 Tìm hiểu về hệ quản trị cơ sở dữ liệu MongoDB

3.1 Giới thiệu về MongoDB

Tháng 2 năm 2009, 10Gen do Dwight Merriman, Eliot Horowitz và Kevin Ryan thành lập nay là MongoDB Inc đã cho ra mắt phần mềm MongoDB dưới dạng một dự án mở, được biết

bang ngôn ngữ C++ là ngôn ngữ gân với ngôn ngữ máy nên MongoDB có thẻ tính toán ở tốc độ cao hơn hắn các hệ quản trị cơ sở dữ liệu khác Cùng với sự phát triển của dữ liệu lớn và điện toán đám may trong các doanh nghiệp, MongoDB ngày càng trở nên phô biến và được ưu

chuộng vì những lợi ích nó mang lại

MongoDB là một phan mém quan tri cơ sở dữ liệu mã nguồn mở được thiết ké theo kiều

hướng tài liệu Bên cạnh đó, MongoDB còn là một cơ sở dữ liệu không quan hệ, với việc sử

dụng cơ chế NoSQL các dữ liệu trong hệ thống được cầu trúc một cách linh hoạt không cần phải

tuân theo một dạng cáu trúc nhất định nào Nhờ có khả năng đó nên MongoDB có thê được dùng

đê lưu trữ các dữ liệu có cầu trúc phức tạp, đa dạng và không có định (hay còn gọi là Big Data)

MongoDB sử dụng các tài liệu (documents) linh hoạt thay vì các bảng và hàng đê xử lý

và lưu trữ các dạng đữ liệu khác nhau như thông thường Don vị đữ liệu cơ bản trong cơ sở dữ

liệu này là một tập hợp các cặp key-value Nó cho phép các document có các field và các cầu trúc khác

Cơ sở dữ liệu này sử dụng định dạng lưu trữ tài liệu được gọi là BSON là kiêu nhị phân

của các tài liệu kiều JSON Là một cơ sở dữ liệu NoSQL, MongoDB không yêu câu hệ quản trị

cơ sở dữ liệu quan hệ (RDBM®S), vì vậy nó cung cáp một mô hình lưu trữ dữ liệu đàn hôi

(elastic) cho phép người dùng lưu trữ và truy ván các kiêu dữ liệu đa biến một cách dễ dàng

Điều này không chỉ giúp đơn giản hóa việc quản lý cơ sở dữ liệu cho các nhà phát triên mà còn

tạo ra một môi trường có khả năng mở rộng cao cho các ứng dung va dich vu da nén tang 3.2 Các tính năng của MongoDB

3.2.1 Truy ván ad hoc

Truy ván ad hoc là một trong những tính năng tốt nhất của chương trình Nó hỗ trợ các trường, truy ván phạm vi và tìm kiếm các biêu thức dé tra về các trường tài liệu cụ thẻ bao gồm

các hàm JavaScript do người dùng xác định hoặc các truy vấn này được cáu hình và trả về mẫu

két quả ngầu nhiên có kích thước nhát định Bên cạnh đó, các trường trong MongoDB có thê được dùng đề lập các chỉ mục chính và các chỉ mục phụ

3.2.2 Nhân róng

MongoDB cung cấp chức năng Replica set Nó cho phép tạo ra nhiều bản sao của dữ liệu

Trong đó mỗi bản sao có thê giữ vai trò chủ đạo và phụ Trong lúc nhân rộng, tất cả các dữ liệu

ghi và đọc thực hiện trên bản sao chủ đạo Bản sao phụ sử dụng bản sao tích hợp đề kéo daiban sao dữ liệu của bản chính Trong trường hợp có một bản sao chủđạo thát bai, Replica set chon ra

một bản sao thứ cáp đề làm bản saochủ đạo tiếp theo Replica thứ cáp có khả năng tùy chọn các

hoạt động nhưng đữ liệu cuối cùng phải nhất quán và tuân theo mặc định

11

Trang 13

3.2.3 Cân bảng tái

Bảng việc dùng Sharding, MongoDB chia phan tram theo chiều ngang, xác định các dữ liệu được phân phối trong collection để người dùng chọn một Shard key Nhìn chung, dữ liệu được chia thành các phạm vi và được phân phói đồng đều dựa trên các Shard key Nó chạy trên nhiều máy chủ, cân bằng tải hoặc sao chép dữ liệu đề giữ hệ thống luôn hoạt động liên tục trong tình huống phát sinh lỗi về phần cứng

3.2.4 1ưưu trữ tệp

Với MongoDB, tính năng lưu trữ file được Sử dụng như một hệ thóng tệp (GridFS) giúp

cân băng tải và đồng thời sao chép dữ liệu trên nhiều máy tính đề lưu giữ file Trong số đó,

GridFS chia một file ra thành các phản hoặc các đoạn va lưu giữ thành những tài liệu riêng biệt Người dùng có thẻ truy cập GridFS bảng tiện ích Mongofiles hoặc plugin cho Nginx và Lighttpd 3.2.5 Tap hop

MongoDB cung cáp ba cách đề thực hiện tập hợp bao gồm Aggregation Pipeline,

Mapreduce va Single-purpose Agøregation Trong đó, theo tài liệu của MongoDB, Aggregation

Pipeline được đánh giả là có hiệu suất tốt nhát

3.2.6 Giới hạn kích thước colletion

Các collection được MongoDB hỗ trợ thường có kích thước có định Vì thế, người ta gọi

chúng là collection giới hạn Với kích cỡ có định, kết hợp cùng việc theo sau thứ tự chèn giúp

tăng hiệu suất của các hoạt động liên quan đến dữ liệu Và khi dữ liệu vượt giới hạn thì những tài liệu cũ hơn sẽ tự động bị xóa mà bạn không càn thực hiện thao tácthêm bát kỳ dòng lệnh nào

3.2.7 Giao dich

Bat dau từ phiên bản 4.0 ra mắt vào tháng 6 năm 2018, MongoDB được bỏ sung thêm tính năng hỗ trợ giao dịch ACID đa tài liệu

3.3 Một số mô hình triển khai của MongoDB

Mô hình standalone là một hình thức triển khai MongoDB mà trong đó bạn chỉ có một instance (thể hiện) của MongoDB đang chạy trên một máy chủ duy nhất Khác với các kiến trúc phân tán như Replica Set hoặc Sharded Cluster, trong môi trường standalone, tất cả dữ liệu và các hoạt động quán lý cơ sở dữ liệu được thực hiện trên một instance mà không có tính năng

dự phòng hay phân tán

Client Application Driver

Writes Reads

am

Hinh 7: M6 hinh Standalone

12

Trang 14

Mô hinh Replication trong MongoDB là quá trình sao chép dữ liệu giữa các máy chủ đề

đảm bảo tính sẵn có và giảm thiêu nguy cơ mắt dữ liệu Hệ thống sử dụng replica set, bao gồm

Client Application Driver

một nút Primary (nhận ghi dữ liệu) và một hoặc nhiều nứt Secondary (sao chép dữ liệu từ Primary) Khi Primary gặp sự có, các nút Secondary sẽ tự động bảu chọn một nứt mới làm

Primary, dam bao hé théng tiếp tục hoạt động Replication giúp dữ liệu an toàn hơn, cải thiện khả năng phục hồi và cân bằng tải cho các yêu cầu đọc

Mô hình sharding trong MongoDB là một kỹ thuật phân tán dữ liệu nhăm cải thiện khả

năng mở rộng và hiệu suất của cơ sở dữ liệu Bằng cách chia nhỏ (partitioning) dữ liệu thành các phân đoạn (shards) và phân bỏ chúng trên nhiều máy chủ (nodes), sharding giúp xử lý một lượng lớn dữ liệu mà không làm giảm tóc độ truy cập Mỗi shard là một cơ sở dữ liệu độc lập, và MongoDB sử dụng các bộ chỉ mục (mongos) đề điều phối và định tuyến các yêu cầu đến shard thích hợp Sharding rát hiệu quả cho những ứng dụng càn xử lý quy mô lớn và tải cao

Router

Hình 9: Mô hình Sharding

13

Trang 15

3.4 Ưu điểm và nhược điểm của MongoDB

Với các tính năng như trên, MongoDB đã mang lại rất nhiều lợi ích cho người dùng mà

các co sé dir

Bén

ligu SQL chua co Mét $6 wu diém cua MongoDB có thê kẻ đến nhứ

Tính linh hoạt lưu trữ dữ liệu: Do là một cơ sở đữ liệu NoSQL hướng Documert,

các dữ liệu được lưu trữ dưới dạng JSON, nên các dữ liệu đưa vào sẽ không bị bó

buộc vẻ số field, kiêu dữ liệu, như vậy, ta có thẻ thêm bát cứ dữ liệu nào

Hiệu năng cao: trong MongoDB không có sự ràng buộc dữ liệu như trong một cơ

sở dữ liệu quan hệ, do đó khi muốn thêm, xóa hoặc update, hệ thống sẽ không mát nhiều thời gian đề kiêm tra thỏa mãn các điều kiện ràng buộc Theo một số nghiên cứu cho thấy: "Tóc độ truy vấn của MongoDB nhanh hơn hắn so với các hệ quản trị cơ sở dữ liệu quan hệ Tóc độ insert của MongoDB có thẻ nhanh gáp 100 làn

So với MySQL"

Khả năng mở rộng theo chiều ngang: Trong MongoDB cs một khái niệm là

Cluster Day là các cụm node chứa dữ liệu của hệ thóng, khi muón mở rộng hệ thóng, ta chỉ càn thêm một node mới vào trong một Cluster

Truong " id" trong MongoDB luén được tự động đánh chỉ mục Điều này đã góp

phản làm cho hệ thống đạt được hiệu suất truy ván cao

Là một Rich Query Language, MongoDB có săn các phương thức đề thực hiện cac thao tac CRUD

Canh cac uu diém nhu trén, MongoDB van con tén tai mét $6 han ché trong khi cai

dat va su dung:

Vì MongoDB không có các ràng buộc vẻ dữ liệu nên khi thao tac rat dễ bị sai dữ liệu Do đó khi sử dụng hệ quản trị cơ sở đữ liệu này, ta cần cân trọng trong thao

tác dé tránh ảnh hưởng đến cơ sở dữ liệu săn có

- Mét điều đáng lo ngại khác chính là MongoDB sử dụng khá nhiều bộ nhớ Do dữ

liệu trong MongoDB được lưu đưới dạng key-value trong khi trong mỗi collection thường chỉ khác nhau vẻ value nên sẽ gây ra tình trạng lặp lại key dẫn

đến sự dư thừa dữ liệu

- _ Dữ liệu trong MongoDB cũng bị giới hạn kích thước bản ghi: mỗi document có

kích thước không quá 16Mb

3.5 Nên sử dụng MongoDB khi nào?

Mặc dù có MongoDB mang lại khá nhiều lợi ích và dễ dàng sử dụng trong việc lập trình

nhưng tùy theo từng tình huống, từng hệ thống mà ta nên cân nhắc có sử dụng phan mém này hay không Một số trường hợp được khuyến khích sử dụng MongoDB như:

- _ Khi xây dựng một hệ thống realtime yêu cầu phản hồi nhanh như mạng xã hội, trang thương mại điện tử Vì MongoDB có thẻ ghi với tóc độ rát nhanh và bảo

mật an toàn

14

Trang 16

- _ Các hệ thông Bigdata có yêu câu truy vấn nhanh

- _ Khi máy chủ không có hệ quản trị cơ sở đữ liệu thi phan mém nay khá phù hợp và

nên được Sử dụng

-._ Khi muốn tìm kiếm nhanh một thông tin trong một cơ sở dữ liệu lớn

3.6 Sự phát triển của MongoDB

Hiện nay, MongoDB được sử dụng khá nhiều trong các ứng dụng như Google, Facebook,

Ebay, Adobe, Năm 2020, Phan mém này được đánh giá là cơ sở dữ liệu NoSQL phổ biến và được yêu thích nhát Trong một số diễn đàn về công nghệ, nhiều người đánh giá rất cao các dịch

vụ cua MongoDB, phan mém này có một giao diện nhất quán giúp đơn giản hóa quá trình làm việc với dữ liệu và phát triển sản phẩm của họ Kẻ từ năm 2013, khi mà sự phát triên của dữ liệu phi cau trúc ra đời, MongoDB đã phát triên mạnh mẽ và vượt qua cả IBM DB2, Microsoft

Access va SQLite dé chiém vi tri thứ 5 về mức độ phô biến và là cơ sở dữ liệu đa mô hình hướng tài liệu (documeni-oriented, multi-model database) duy nhát năm trong top 25 của bảng xép hạng này Biêu đồ dưới đây đã cho thấy Sự gia tăng và phát triên không ngừng của MongoDB trong

suốt giai đoạn đó

3.7 Một số khái niệm trong MongoDB

Các thành phản cót lõi tạo nên MongoDB gém:

- Mongod: tién trình lõi của MongoDB, nơi lưu trữ và quản lý dữ liệu

- Mongos: controller va query router, dung cho trường hợp phân tán đữ liệu

(sharded cluster)

- Mongosh: giao dién shell ẻ người dùng có thê tương tác thực hiện lệnh với cơ sở

dữ liệu Có thẻ dùng Mongosh ẻ chạy kiêm tra các lệnh truy vân và thao tác tùy

biến dữ liệu lưu trong cơ sở dữ liệu

Đề khởi động MongoDB mặc định trên localhost, chạy lệnh mongosh trên command line Tiền trình mongod khởi ộng, và mongosh sẽ kết nới với mongod và chạy trên localhost:27017 Lệnh mongosh tương tương với câu lệnh mongosh "mongodb://Iocalhost:27017"

- MongoDB Compass: la mét giao diện GUI cho phép người dùng tương tác với mongod một cách trực quan thay vì dùng giao diện commandline MongoDB Compass hién thi cac cơ sở dữ liệu, collection, document một cách trực quan, hỗ trợ truy ván, thực hiện aggregating function và phân tích dữ liệu MongoDB

- MongoDB Database Tools: la tap hop cac tién ich dang command-line woc thiét

lập san, dung é thực hiện các thao tác ặc biệt với MongoDB như nhập xuất, sao

lưu, khôi phục đữ liệu (mongodump và mongorestore),

-_ ID: Đây là Field bắt buộc (tương đương với Primary Key) phải có trong mỗi Document Truong nay là khóa chính trong một documert - đại diện cho giá tri duy nhát trong mỗi document của MongoDB Khi bạn thêm mới mot document thì MongoDB tự động tạo ra một ID đại diện cho document đó

15

Trang 17

- Collection: Day 14 mét kho luu trữ các document có tô chức trong MongoDB, thường có các Field chung giữa các Document Có thê có nhiêu Collection trên mỗi cơ sở dữ liệu và có nhiều Document trong một Collection

- Cursor: Con tré chi dén tập kết quả của một yêu cầu truy ván

-_ Database: Dâ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 RDBMS 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 có thê chứa được nhiều Database

- Document: Mét ban ghi được goi la mét document khi bản ghi đó thuộc một

collection Document gòm có không hoặc nhiều trường

- Field: la mét cap gém key và value trong một document Madi Field la mét dinh

danh duy nhát cho một điểm giá trị

- JSON: (JavaScript Object Notation), day chinh là một chuân mở rộng cho phép

mô tả dữ liệu dưới dạng văn bản dễ đọc và được lưu trữ ở dạng các cặp key-value -_ BSON: đây là một định dạng lưu trữ nhị phân cua JSON, được sử dụng đề lưu trữ tài liệu và thực hiện các cuộc gọi thủ tục từ xa trong MongoDB

-_ Index: Index là 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 cau Mongo DB xử lý khói lượng lớn dữ liệu

Sự tương đồng giữa các khái niệm trong mô hình dữ liệu SQL và MogoDB

| SQL Terms/Concepts MongoDB Terms/Concepts

Ngày đăng: 12/02/2025, 16:38

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

TÀI LIỆU LIÊN QUAN