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

báo cáo kết thúc học phần ứng dụng phân tán đề tài tìm hiểu về hệ quản trị cơ sở dữ liệu mongodb

52 10 1
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

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 này.. - Các hệ quản trị cơ sở d

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC PHENIKAA

BÁO CÁO KẾT THÚC HỌC PHẦN ỨNG DỤNG PHÂN TÁN

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

Giảng viên hướng dẫn: Nguyễn Phương Nam

Hà Nội – Năm 2024

Trang 2

MỤC LỤC

CHƯƠNG 1: TỔNG QUAN 5

I.Đặt vấn đề 5

II.Mục tiêu đề tài 6

III.Phân công công việc 7

CHƯƠNG 2: TỔNG QUAN VỀ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB 9I.Một số khái niệm cơ bản 9

1.Cơ sở dữ liệu (Database) 9

2.Hệ quản trị cơ sở dữ liệu (DBMS) 10

3.Cở sở dữ liệu quan hệ (Database Relationship) 10

II.Giới thiệu 11

1.Tìm hiểu về NoSQL 11

1.1.Khái niệm NoSQL 11

1.2.Lịch sử phát triển của NoSQL 12

1.3.Một số thuật ngữ trong NoSQL 12

1.4.So sánh CSDL NoSQL và CSDL SQL 12

1.5.Phân loại các CSDL NoSQL 15

2.Tìm hiểu về công ty MongoDB Inc 18

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

3.1.Giới thiệu về MongoDB 19

3.2.Các tính năng của Mongo 20

3.3.Ưu điểm và nhược điểm 21

3.4.Nên sử dụng MongoDB khi nào? 22

3.5.Sự phát triển của MongoDB 23

Trang 3

III.Lựa chọn phiên bản cài đặt 24

CHƯƠNG 3: QUẢN TRỊ THÀNH PHẦN VỚI HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB 31

2.Bẫy lỗi (Error Handling) 40

3.Sử dụng ràng buộc và bẫy lỗi 40

3.1.Kiểm tra ràng buộc dữ liệu 40

Trang 4

III.Chức năng của ứng dụng 44

IV.Hình ảnh của hệ thống quản lý khóa học 46

Trang 5

CHƯƠNG 1: TỔNG QUAN

I Đặ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 web và 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 này

- 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 webD và di động, chẳng hạn như:

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ữ dữ liệu có cấu trúc linh hoạt, chẳng hạn như dữ liệu về người dùng, sản phẩm, hoặc bài viết

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

đá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ở dữ 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

Trang 6

- 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

khác nhau, bao gồm:

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

xuất dữ liệu phân tích từ các nguồn khác nhau

các thiết bị IoT

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

- Mục tiêu của đề tài này 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:

Trang 7

III Phân công công việc

Hoàng Công Thành 20010826 Tìm hiểu tổng quan về hệ quản trị CSDL MONGODB, NoSQL,Xây dựng ứng dung sử dụng hệ quản trị

MONGGODB, kết luận Nguyễn Long Nhật 20010974 Tìm hiểu tổng quan về hệ quản trị

CSDL MONGODB, NoSQL,Xây dựng ứng dung sử dụng hệ quản trị

MONGGODB, kết luận

Hoàng Đình Thái 20010823 Tổng quan xây dựng đề tài, Tổng hợp báo cáo, Hỗ trợ xây dựng ứng dụng sử

dụng hệ quản trị mongoDB Nguyễn Tiến Công 20011025 Tìm hiểu và nghiên cứu tài liệu quản

trị thành phần mongoDB,slide Trương Quang Vinh 20010834 Tìm hiểu tổng quan về hệ quản trị

CSDL MONGODB, NoSQL, quản trị thành phần, slide,

Vũ Minh Tuấn 20010833 Tìm hiểu và nghiên cứu tài liệu quản trị thành phần mongoDB,slide Bùi Văn Tuân 20010691 Tìm hiểu và nghiên cứu tài liệu quản

trị thành phần mongoDB,slide

Trang 9

CHƯƠNG 2: TỔNG QUAN VỀ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB

I Một số khái niệm cơ bản

1 Cơ sở dữ liệu (Database)

- Cơ sở dữ liệu ( Database) là một thuật ngữ được sử dụng thường xuyên trong lĩnh vực công nghệ thông tin Theo các chuyên gia, CSDL được định nghĩa là “ một tập hợp các dữ liệu có tổ chức, thường được lưu trữ và truy cập điện tử từ hệ thống máy tính.” Hay có thể hiểu CSDL là một tập hợp các dữ liệu có liên quan với nhau về mặt luận lý đã được tổ chức và sắp xếp Hiện nay CSDL được phân làm 2 loại bao gồm :

● SQL: Dữ liệu được mô hình hóa dưới dạng các hàng và cột trong bảng, sử dụng ngôn ngữ T-SQL để truy vấn dữ liệu

● NoSQL: bao gồm các loại dữ liệu phi quan hệ được mô hình hóa dưới dạng các loại phương tiện khác CSDL này được gọi là NoSQL vì nó sử dụng các ngôn ngữ truy vấn khác SQL

Hình 1 Cơ sở dữ liệu SQL và NoSQL

Trang 10

2 Hệ quản trị cơ sở dữ liệu (DBMS)

- Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) là phần mềm tương tác với người dùng cuối, các ứng dụng và chính CSDL để thu thập và phân tích các CSDL này Hệ quản trị CSDL và CSDL luôn có mối quan hệ chặt chẽ với nhau.

Hình 2 Cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu

3 Cở sở dữ liệu quan hệ (Database Relationship)

- Năm 1970, thuật ngữ “cơ sở dữ liệu quan hệ” đã được giới thiệu bởi EF Codd tại IBM trong tài liệu nghiên cứu của mình “ A relational Model of Data for Large Shared Data Banks” Trong tài liệu này, ông đã định nghĩa thuật ngữ “Cơ sở dữ liệu quan hệ” như sau: “Cơ sở dữ liệu quan hệ tổ chức dữ liệu theo các bảng và có quan hệ với nhau để giảm thiểu sự dư thừa dữ liệu đồng thời vẫn đảm bảo sự hiệu quả trong lưu trữ và truy xuất dữ liệu”

- Ngày nay , cơ sở dữ liệu quan hệ được sử dụng phổ biến trong hầu hết các phần mềm quản lý dữ liệu

Trang 11

Hình 3 Cơ sở quan hệ dữ liệu

II Giới thiệu

1 Tìm hiểu về NoSQL

1.1 Khái niệm NoSQL

- Cơ sở dữ liệu NoSQL (viết tắt của “Not SQL” hoặc “Not Only 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ở dữ liệu không sử dụng các bảng như 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ữ dữ liệu trong các bảng như một cơ sở dữ 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 chỉ 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 để 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 chi 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ở

Trang 12

1.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ở dữ 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 của Last.fm đã giới thiệu lại thuật ngữ NoSQL

- Đâ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,

1.3 Một số thuật ngữ trong NoSQL - Rà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 hoạt ( Deployment Flexibility) - Tính sẵn sàng (High Availability)

- Nhất quán cuối ( Eventual consistency) - Lưu trữ tốt (Durability)

1.4 So sánh CSDL NoSQL và 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:

Trang 13

Tính năng SQL NoSQL

Loại hình Mỗi database được xây Mỗi database được xây dựng dựa trên các bảng có dựng dựa trên các tài liệu quan hệ với nhau, mỗi (document)

hàng ứng với một record, mỗi cột ứng với một field

Ngôn ngữ dữ liệu SửdụngStructured Không có ngôn ngữ

Hiệu suất Kém hơn NoSQL vì mỗi Tốt hơn SQL vì nó bỏ qua khi truy vấn nó phải tính các ràng buộc của dữ liệu toán, kiểm tra và xử lý các

mối quan hệ giữa các bảng để đảm bảo tính nhất quán của dữ liệu

Khả năng mở rộng SQL có thể mở rộng theo NoSQL có thể dễ dàng chiều dọc và chiều ngang mở rộng theo chiều dọc nhưng quá trình mở rộng và chiều ngang do các dữ theo chiều ngang sẽ rất liệu đưa vào không phải phức tạp nếu đã tồn tại dữ phụ thuộc vào cấu trúc liệu trong database Khi bảng cho trước Dữ liệu muốn bổ sung thêm một có thể thêm vào bất kỳ lúc cột dữ liệu thì phải khai nào

báo trước

Tốc độ đọc/ghi Kém hơn NoSQL vì nó Tốc độ nhanh vì NoSQL phải đảm bảo tính ràng bỏ qua các ràng buộc về buộc dữ liệu giữa các dữ liệu của các bảng bảng Nếu dữ liệu được

lưu trữ trên nhiều server thì phải bảo đảm tính nhất quán về dữ liệu trên các Server với nhau

EU LUAOI download : skknchat@gmail.com

Trang 14

Phần cứng Đòi hỏi phần cứng cao Không đòi hỏi quá cao về phần cứng

Thay đổi số node trong hệ Do yêu cầu về tính nhất Do NoSQL có tính nhất

thêm hoặc xóa một node cần phải Shutdown hệ bất kì thì cần phải thống như SQL

shutdown hệ thống trong một khoảng thời gian

Truy vấn và báo cáo Có thể dễ dàng sử dụng NoSQL chưa hỗ trợ việc ngôn ngữ Query để truy lấy báo cáo dữ liệu trực vấn dữ liệu trực tiếp từ tiếp, việc lấy báo cáo thực database hoặc sử dụng hiện chủ yếu thông qua các công cụ hỗ trợ khác giao diện ứng dụng Ứng dụng Được sử dụng cho các hệ Được sử dụng để xây

thống cần mối quan hệ dựng các hệ thống lưu trữ chặt chẽ và tính đồng nhất số lượng dữ liệu lớn, về dữ liệu, số lượng dữ không quá quan trọng về liệu không quá nhiều vấn đề đồng nhất dữ liệu Như : tài chính , ngân trong một thời gian nhất

Trang 15

Hình 4 Sự khác nhau giữa NoSQL và SQL trong ứng dụng và cấu trúc lưu trữ 1.5 Phân loại các CSDL NoSQL

- Ngày nay, với sự phổ biến của NoSQL, thì cơ sở dữ 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:

✔ Key-value: Đây là cơ sở dữ 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 quả khi chỉ 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 IoT

Trang 16

Hình 5 Mô tả lưu trữ của CSDL nhóm Key-Value

- Cơ sở dữ liệu tài liệu ( 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 document 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 API mạnh mẽ và trực quan để phát triển linh hoạt và lặp lại

Trang 17

Hình 6 Document Database ở định dạng JSON và XML

- Cơ sở dữ liệu “Column Family”: Cơ sở dữ liệu này được tạo ra để lưu và xử lý lượng lớn dữ liệu trên nhiều server Nó lưu trữ dữ 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 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,

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

Trang 18

đượ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ư Neo4J,

Infinite Graph, OrientDB,

Hình 8 Mô hình cơ sở dữ liệu đồ thị

2 Tìm hiểu về công ty MongoDB Inc

- MongoDB Inc là một trong những công ty công nghệ hàng đầu của Mỹ chuyên phát triển và cung cấp sự hỗ trợ cho các doanh nghiệp trong việc quản trị nguồn tài nguyên quý giá nhất – đó chính là thông tin Công ty được thành lập vào Ngày 1 tháng 11 năm 2007 bởi Dwight Merriman, Eliot Horowitz và Kevin Ryan với tên gọi đầu tiên là 10Gen, đặt trụ sở chính tại thành phố New York, Mỹ Dwight Merriman, Eliot Horowitz và Kevin Ryan đều là cựu thành viên của DoubleClick – hiện thuộc quyền sở hữu của Google Khi còn làm việc tại DoubleClick, họ đã nhận thấy những vấn đề lớn khi sử dụng những hệ cơ sở dữ liệu hiện có như Oracle để xử lý một lượng lớn dữ liệu Ở những hệ thống cũ, khi chúng ta muốn mở rộng quy mô thì sẽ gắn liền với việc phải mua thêm những máy chủ mới và đây là một thách thức lớn đối với các doanh nghiệp vì chi phí phải bỏ ra rất lớn Với những trăn trở về vấn đề phát triển và khả năng mở rộng khi xây dựng các ứng dụng trong thiết kế web để hỗ trợ xử lý một lượng lớn dữ

Trang 19

liệu, Dwight Merriman, Eliot Horowitz và Kevin Ryan đã lấy cảm hứng và quyết định thành lập 10Gen.

- 10Gen lúc đầu được thành lập với mục đích tạo ra một nền tảng đám mây hoàn toàn dựa trên các thành phần mã nguồn mở Tuy nhiên, họ đã không thể tìm thấy nền tảng cơ sở dữ liệu nào hiện có có thể đáp ứng đc mong muốn của mình Do đó công ty này đã bắt đầu phát triển một hệ thống cơ sở dữ liệu mới dựa trên DOB (Document-Oriented Database) và đặt tên cho cho hệ thống này là MongoDB Trong quá trình đó, họ cũng đã nhận ra tiềm năng rất lớn của MongoDB, 10Gen đã từ bỏ hoàn toàn mục đích ban Đầu của mình là tạo ra một nền tảng đám mây để chuyển hẳn sang tập trung vào việc phát triển và duy trì MongoDB

- Tháng 2 năm 2009, 10gen đã cho ra mắt phần mềm MongoDB dưới dạng một dự án mã nguồn mở Để thương mại hóa sản phẩm chủ lực của mình, các nhà sáng lập đã quyết định đổi tên của công ty thành MongoDB Inc vào năm 2013 Điều này đã làm cho công ty MongoDB trở nên liên kết chặt chẽ hơn với sản phẩm cốt lõi của công ty Cùng với sự phát triển của dữ liệu lớn và điện toán đám mây trong các doanh nghiệp, MongoDB ngày càng trở nên phổ biến và được ưa chuộng vì những lợi ích nó lại Năm 2017, MongoDB trở thành một công ty giao dịch công khai, được niêm yết trên NASDAQ với tên gọi MDB với giá IPO là 24 đô la một cổ phiếu.d : skknchat@g

3 Tìm hiểu về hệ quản trị cơ sở dữ liệu MongoDB3.1 Giới thiệu về MongoDB

- MongoDB là một phần mềm quản trị 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 dữ liệu khác nhau như thông thường Đơn vị dữ 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 nhau

Trang 20

- 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ệ (RDBMS), 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 dụng và dịch vụ đa nền tảng

3.2 Các tính năng của Mongo 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 để trả 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 dàibản 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 bại, Replica set chọn 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 dữ liệu cuối cùng phải nhất quán và tuân theo mặc định 3.2.3 Cân bằng tải

- Bằng việc dùng Sharding, MongoDB chia phần trăm 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

Trang 21

3.2.4 Lư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 và 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 Tập hợp

- MongoDB cung cấp ba cách để thực hiện tập hợp bao gồm Aggregation Pipeline, Mapreduce và Single-purpose Aggregation.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 kich thước collection

- 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 dịch

- Bắt đầu 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 Ưu điểm và nhược điểm

- 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 cơ sở dữ liệu SQL chưa có Một số ưu điểm của MongoDB có thể kể đến như:

✔ Tính linh hoạt lưu trữ dữ liệu: Do là một cơ sở dữ liệu NoSQL hướng Document, 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

Trang 22

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 Đây 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.

✔ Trường “_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 các thao tác CRUD.

- Bên cạnh các ưu điểm như trên, MongoDB vẫn còn tồn tại một số hạn chế trong khi cài đặt và sử dụng:

✔ Vì MongoDB không có các ràng buộc về dữ liệu nên khi thao tác rất dễ bị sai dữ liệu Do đó khi sử dụng hệ quản trị cơ sở dữ liệu này, ta cần cẩn trọng trong thao tác để 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 dướ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.4 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 phần 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à

Trang 23

✔ Khi máy chủ không có hệ quản trị cơ sở dữ liệu thì phần mềm này 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.5 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, Phần 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ụ của MongoDB, phần 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 cấu trúc ra đời, MongoDB đã phát triển mạnh mẽ và vượt qua cả IBM DB2, Microsoft Access và SQLite để chiếm vị trí 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 ( document-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 đó

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

- ID : Đây là Field bắt buộc ( tương đương với Primary Key) phải có trong mỗi Document Trường này là khóa chính trong một document - đại diện cho giá trị duy nhất trong mỗi document của 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 đó

- Collection: Đây là một kho lưu 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ỏ chỉ đến tập kết quả của một yêu cầu truy vấn

- Database: Đâ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 bản ghi được gọi là một document khi bản ghi đó thuộc một collection Document gồm có không hoặc nhiều trường

Trang 24

- Field: là một cặp gồm key và value trong một document Mỗi Field là một định danh duy nhất cho một điểm giá trị

- JSON: ( JavaScript Object Notation), đây chính 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 của 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 cầu MongoDB xử lý khối lượng lớn dữ liệu

III Lựa chọn phiên bản cài đặt

- Từ khi được công bố đến hiện tại, MongoDB Inc đã cho phát hành tổng cộng 18 versions của MongoDB Bảng dưới đây sẽ liệt kê danh sách các versions đã được phát hành ( tính đến ngày 01/01/2024) :

1.6 Tháng 8/ 2010 Sharding sẵn sàng sản xuất Bộ sao chép

Hỗ trợ cho IPv6 1.8 Tháng 3/ 2011

2.0 Tháng 9/ 2011 2.2 Tháng 8/ 2012

2.4 Tháng 3/ 2013 Hỗ trợ không gian địa lý nâng cao Chuyển sang công cụ JavaScript V8 Cải tiến bảo mật

Tìm kiếm văn bản (beta)

Trang 25

2.6 Ngày 08/04/ Cải tiến tổng hợp

Cải tiến công cụ truy vấn Giao thức thao tác ghi mới Cải tiến bảo mật

3.0 Ngày 03/03/ Hỗ trợ công cụ lưu trữ WiredTiger 2015 Công cụ lưu trữ có thể cắm được API

Xác thực SCRAM-SHA-1 Cải thiện chức năng giải thích MongoDB Ops Manager

3.2 Ngày 08/12/ Công cụ lưu trữ WiredTiger theo mặc định 2015 Cải tiến bầu cử nhân rộng

Cấu hình máy chủ dưới dạng tập hợp bản sao ReadConcern

Xác nhận tài liệu

Chuyển từ V8 sang SpiderMonkey

3,4 Ngày 29/11/ Mối quan tâm đọc tuyến tính Lượt xem Đối chiếu 2016

3.6 Tháng 11/ 2017 Thêm tính năng Aggregation Cải tiến Index 4.0 Tháng 6/ 2018 Giao dịch

4.2 Tháng 8/ 2019 4.4 Tháng 7/ 2020 4.6 Tháng 7/ 2022

Phiên bản này cung cấp các cải tiến về hiệu suất, tính năng và bảo mật

Phiên bản này cũng hỗ trợ các hoạt động DDL

 Hiện nay, MongoDB cung cấp 2 phiên bản cài đặt, Community Server và Enterprise Server Trong đó Community là phiên bản miễn phí, còn Enterprise là phiên bản thương mại, thường dành cho các doanh nghiệp và cần phải trả tiền để sử dụng nó Trong bài luận này, em sẽ sử dụng phiên bản Community Server version 4.4.6 cho hệ điều hành Windows để cài đặt và cấu hình.

Trang 26

IV Cài đặt và cấu hình

- Để cài đặt phần mềm MongoDB, đầu tiên ta sẽ truy cập vào trang chủ https://www.mongodb.com/try/download/community để tải phần mềm Ở giao diện tải phần mềm, sẽ có 2 lựa chọn là download file cài đặt msi hoặc download file zip Khi chọn download file zip, ta chỉ cần giải nén ra không cần cài đặt gì, sau đó bắt đầu cấu hình.ad : skkn

chat

- Tiếp theo, ta khởi chạy file mongodb-windows-x86_64-4.4.6-signed vừa tải về

Ngày đăng: 24/07/2024, 16:05

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

TÀI LIỆU LIÊN QUAN

w