Đề đá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 1TRUONG 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 4Hì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 5Phầ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 11cậ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 12Phầ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 133.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 14Mô 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 153.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