1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo học phần môn Ứng dụng phân tán Đề tài tìm hiểu về mongodb

14 1 0
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ề MongoDB
Tác giả Hoàng Hải Long, Nguyễn Viết Tuấn, Cao Thạch Đức Mạnh, Bùi Khánh Huyền, Đỗ Linh Trang
Người hướng dẫn ThS. Nguyễn Phương Nam
Trường học Trường Đại học Phenikaa
Chuyên ngành Ứng dụng phân tán
Thể loại Báo cáo học phần
Định dạng
Số trang 14
Dung lượng 343,33 KB

Nội dung

- Ngoài ra, MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễ dàng.. - Mỗ

Trang 1

TRƯỜNG ĐẠI HỌC PHENIKAA

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO HỌC PHẦN MÔN ỨNG DỤNG PHÂN TÁN

ĐỀ TÀI: TÌM HIỂU VỀ MONGODB

NHÓM SỐ: 5

Giảng viên hướng dẫn: ThS Nguyễn Phương Nam Nhóm sinh viên thực hiện:

- Nguyễn Viết Tuấn

- Cao Thạch Đức Mạnh

MSV: 20010932 MSV: 20010911

- Bùi Khánh Huyền

- Đỗ Linh Trang

MSV: 20010903 MSV: 20010930 Lớp: Ứng dụng phân tán-1-2-23(N04)

Trang 2

Mục lục

I Tổng quan 3

1.1 Khái niệm 3

1.2 Cách hoạt động của MongoDB 3

1.3 Ưu điểm của MongoDB 3

1.4 Nhược điểm của MongoDB 4

1.5 Thị trường 4

1.6 Mục tiêu 5

II Mô tả dự án 6

III Tìm hiểu dự án 6

3.1 MongoDB Sharding 6

3.2 Cấu trúc Sharding 7

3.3 MongoDb replication, replica set 8

IV Triển khai dự án 13

V Kết quả đạt được và đưa ra kết luận 13

5.1 Kết quả đạt được 13

5.2 Kết luận 13

VI Tài liệu tham khảo 14

Trang 3

I Tổng quan

1.1 Khái niệm

- MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng đầu, được hàng triệu người sử dụng MongoDB được viết bằng C++

- Ngoài ra, MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễ dàng

1.2 Cách hoạt động của MongoDB

- MongoDB hoạt động dưới một tiến trình ngầm service, luôn mở một cổng (Cổng mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dụng gửi vào sau đó mới tiến hành xử lý

- Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên “_id” thuộc kiểu dữ liệu ObjectId mà nó quy định để xác định được tính duy nhất của bản ghi này so với bản ghi khác, cũng như phục vụ các thao tác tìm kiếm và truy vấn thông tin về sau Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất

- Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ nhớ Ram,

để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng

- Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng mặc định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng

1.3 Ưu điểm của MongoDB

- Ít schema hơn:

- Cấu trúc của một đối tượng rõ ràng

- Không có các Join phức tạp

Trang 4

- Khả năng mở rộng cực lớn: việc mở rộng dữ liệu mà không phải lo đến các vấn đề như khóa ngoại, khóa chính, kiểm tra ràng buộc,

- Sử dụng bộ nhớ trong để lưu giữ cửa sổ làm việc cho phép truy cập dữ liệu nhanh hơn Việc cập nhật được thực hiện nhanh gọn nhờ update tại chỗ

1.4 Nhược điểm của MongoDB

- Dữ liệu được caching, lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt động yêu cầu một bộ nhớ RAM lớn

- Mọi thay đổi về dữ liệu mặc định đều chưa được ghi xuống ổ cứng ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân mất điện đột xuất là rất cao

1.5 Thị trường

- Kết quả tài chính tăng mạnh mẽ trong quý thứ ba của năm tài chính 2024 Với doanh thu tăng đáng kể 30% so với cùng kỳ năm ngoái, công ty đã công bố tổng doanh thu là 433 triệu đô la Sự tăng trưởng đặc biệt rõ rệt trong doanh thu Atlas, tăng 36% so với cùng kỳ năm ngoái, hiện chiếm 66% tổng doanh thu Thu nhập hoạt động phi GAAP đứng ở mức 79 triệu đô la Cơ sở khách hàng

mở rộng lên hơn 46.400, với người dùng Atlas chiếm hơn 44.900 trong tổng số

đó Công ty cũng nhấn mạnh việc bổ sung chiến lược Ann Lewnes vào Hội đồng quản trị và ra mắt tính năng Tìm kiếm vector, báo hiệu sự tập trung mạnh

mẽ vào đổi mới và phát triển sản phẩm lấy khách hàng làm trung tâm

- Hiệu suất mạnh mẽ và tăng trưởng khách hàng của công ty được củng cố bởi

sự thành công của nền tảng Atlas và chiến lược chạy ở bất cứ đâu Với trọng tâm là tối đa hóa giá trị dài hạn và đầu tư có trách nhiệm, MongoDB đang định

vị mình để tăng trưởng bền vững

Trang 5

Hình 1: Giá cổ phiếu MDB trên thị trường chứng khoán

Source:[https://www.google.com/finance/quote/0KKZ:LON?window=1Y]

1.6 Mục tiêu

- Giúp cho sinh viên có thể hiểu rõ về cách mà mongodb phân tán dữ liệu và backup khi có lỗi xảy ra

Trang 6

II Mô tả dự án

1 Tìm hiểu cơ chế của Sharding và Replication trong MongoDb

2 Mô tả sự phân tán dữ liệu của Sharding và backup của Replication thông qua các câu lệnh đơn giản

3 Kiểm tra các trạng thái hoạt động của mạng lưới

III Tìm hiểu dự án

- Như các bạn đã biết Hệ Quản Trị cơ sở dữ liệu là một trong những yếu tố cần thiết khi chúng ta phát triển 1 ứng dụng hoặc một website bất kì Vì vậy không thể tránh khỏi việc cơ sở dữ liệu quá lớn dẫn đến việc truy cập hoặc load dữ liệu nhanh chóng và đặc biệt đó chính là một khi lỗi xảy ra sẽ khiến cho cơ sở dữ liệu

bị mất Nhóm em ở đây ngày hôm nay sẽ tìm hiểu về các giải pháp mà các cty cơ

sở dữ liệu lớn đã sử dụng, công ty đó chính là Mongodb Vậy MongoDb dùng cách nào để có thể tối ưu việc truy cập dữ liệu và tránh các rủi ro gặp phải? Đó chính là Sharding và Replication

3.1 MongoDB Sharding

- Khi thiết kế database đối với một hệ thống lớn , đòi hỏi thông lượng cao luôn là bài toán khó Nào là tùy thuộc vào loại dữ liệu như nào, kiến trúc app ra sao hay nên chọn loại database nào cho phù hợp, rất nhiều yếu tố chúng ta cần phải cân

nhắc Vì vậy Sharding sinh ra để giải quyết các rắc rối, đó là một phương pháp

để phân phối dữ liệu trên nhiều máy mà MongoDB sử dụng để hỗ trợ triển khai với những app dữ liệu rất lớn và đòi hỏi thông lượng cao

- Các hệ thống cơ sở dữ liệu với các tập dữ liệu lớn hoặc các ứng dụng đòi hỏi thông lượng cao có thể thách thức khả năng của một máy chủ Ví dụ ứng dụng chat có một lượng lớn người dùng, hơn nữa người dùng luôn đòi hỏi việc gửi và nhận tin nhắn của họ phải realtime Lúc đó nhu cầu truy vấn cao đòi hỏi một

Trang 7

lượng lớn RAM và CPU mà chắc chắn 1 máy chủ sẽ khó lòng đáp ứng được Sẽ

có 2 giải pháp đối với các ứng dụng kiểu này đó là :

 Vertical scaling: scale theo chiều dọc liên quan đến việc tăng dung lượng

của một máy chủ, chẳng hạn như sử dụng CPU mạnh hơn hay thêm RAM hoặc tăng dung lượng lưu trữ

 Horizontal scaling: scale theo chiều ngang liên quan đến việc chia nhỏ dữ

liệu của hệ thống và tải chúng lên nhiều server , thêm server để tăng công suất Mặc dù tốc độ hoặc công suất chung của mỗi máy có thể vẫn thế nhưng mỗi máy xử lý một tập hợp con của khối lượng dữ liệu chung vì thế

nó có khả năng mang lại hiệu quả tốt hơn so với một server công suất cao

3.2 Cấu trúc Sharding

Hình 2: Minh họa Sharding trong MongoDB sử dụng Sharded Cluster

Trang 8

 Shards: Mỗi shard chứa một phần của dữ liệu đã được shard Mỗi shard

này lại có thể được triển khai dưới dạng một replicaset để tăng tính dự phòng cho dữ liệu của nó quản lý

 Config Servers: Chứa thông tin metadata và các tham số cấu hình cho

cluster Ví dụ thông tin cấu hình các shard, các replica set được lưu ở config server này Và config server cũng có thể triển khai dưới dạng replica set

 Query Routers: Hoạt động như một query router, là phần giao diện với các

client với sharded cluster Client sẽ chỉ cần biết kết nối tới mongos, phần còn lại là kết nối tới shard nào, replicas nào sẽ do mongos điều phối và trong suốt với client

3.3 MongoDb replication, replica set

3.3.1 MongoDb replication

- Một ví dụ đơn giản về ứng dụng phân tán trong mongoDb chính là replication Tại

sao tôi lại nói vậy? Đơn giản là vì MongoDb phân tán dữ liệu ra các Node, nói phân tán dữ liệu thì cũng không đúng chính xác phải là nhân bản dữ liệu ra các node Vậy cơ chế của replication như nào?

Cơ chế của replication:

Trang 9

Hình 3: Cơ chế hoạt động của Replication

- Trong thực tế, nhiều trường hợp để server hoạt động ổn định người ta dùng nhiều hơn 1 server để lưu dữ liệu Ví dụ dùng 2 server mongodb là A và B, khi có dữ liệu mới được lưu vào A thì nó sẽ tiến hành sao lưu, đồng bộ sang B (quá trình replica) nếu A bị chết hoặc mất dữ liệu thì ta chuyển sang kết nối tới B để lấy dữ liệu như thế sẽ đảm bảo server luôn hoạt động và dữ liệu tin cậy không bị mất mát

- Quá trình replication này khác với quá trình backup / sao lưu ở chỗ là nó thực hiện realtime Tức là khi bạn thêm dữ liệu vào A thì nó sẽ lập tức đồng bộ sang B… Trong khi quá trình backup thì thường thực hiện theo lịch (chạy cuối mỗi ngày,

Trang 10

có nhiều lợi ích thế nhưng không phải lúc nào cũng áp dụng nhé Việc sử dụng nhiều server MongoDB kéo theo nhiều vấn đề như cấu hình và code phức tạp hơn, chi phí tăng…)

Replication có tính dự phòng và sẵn sàng cao(Redundancy and Data Availability)

- Replication cung cấp tính dự phòng và nâng cao tính khả dụng của mongoDB Với nhiều bản sao chép trên nhiều database server khác nhau, replication nâng cao mức độ chịu lỗi chống lại việc mất dữ liệu trên single database

- Trong một số trường hợp, replication có thể cải thiện khả năng đọc dữ liệu vì client có thể đọc dữ liệu trên nhiều database server khác nhau Duy trì các bản sao

dữ liệu làm tăng tính cục bộ và khả dụng của dữ liệu

- Các replica cũng có thể duy trì cho các mục đích như khôi phục dữ liệu, sao lưu

3.3.2 MongoDb replica set

- Có vẻ nghe tên của phần này khá giống phần trên nhưng nó hoạt động độc lập hoàn toàn khác nhau Vậy MongoDb replica set là gì?

Replica set là một group các mongod instances để duy trì cùng một bộ cơ sở dữ liệu Trong replica set bao gồm một số node mang dữ liệu, trong các nút này chỉ duy nhất một nút là nút chính để ghi dữ liệu trong khi các nút còn lại là các nút phụ được sao chép dữ liệu từ nút chính Nếu nút chính bị lỗi một trong những nút phụ sẽ được thay thế thành một nút chính mới

Trang 11

Hình 4: Cơ chế bầu cử khi node chính bị lỗi

- Quá trình bầu primary node giống như bỏ phiếu vậy, node nào nhiều phiếu hơn thì trở thành primary node Tuy nhiên sẽ có trường hợp có 2 node cùng số phiếu Trong trường hợp này node arbiter sẽ quyết định node nào là primary node (Arbiter node chỉ có tác dụng ra bầu ra primary node chứ không chứa dữ liệu)

Trang 12

Hình 5: Các node khi có cùng số phiếu

Khi primary node bị ngắt kết nối lúc trước được kết nối trở lại vào Replica Set thì nó sẽ trở thành secondary node Mặc định, Client sẽ đọc dữ liệu từ primary node Tuy nhiên ta

có thể cấu hình cho phép client đọc dữ liệu từ các secondary node để giảm tải áp lực cho primary node

Trang 13

IV Triển khai dự án

Sau khi chúng ta đã tìm hiểu rõ về Sharding và Replication tiếp theo sẽ đến sơ lược các bước triển khai

- Cài đặt các phần mềm cần thiết để có thể chạy được (MongoDB phiên bản 7.0, mongos, mongod)

- Sử dụng các câu lệnh để có thể kiểm tra trạng thái như: rs.status(), rs.initiate(),

- Sử dụng các câu lệnh để add các node trong Replication như rs.add(), rs.remove()

- Kiểm tra trạng thái của các node

- Kết nối đến MongoDb để test Data là các Collection

- Kiểm tra tổng qua xem đã hoạt động đúng ý chưa

V Kết quả đạt được và đưa ra kết luận

5.1 Kết quả đạt được

- Hiểu về các đặc điểm của cơ sở dữ liệu NoSQL và các ưu điểm, nhược điểm của nó

- Tìm hiểu được cách sử dụng MongoDB ở mức cơ bản Từ đó làm nền tảng tìm hiểu sâu hơn để áp dụng vào các bài toán quản lý trong thực tế

- Ánh xạ được những kiến thức tương đương từ hệ quản trị SQL Server

5.2 Kết luận

Sự phát triển không ngừng của công nghệ thông tin, nhu cầu xã hội đòi hòi những

hệ thống phần mềm có khả năng lưu trữ và có tốc độ xử lý cao với một lượng dữ liệu lớn Một trong những công nghệ mới ra đời để giải quyết bài toán đó là NoSQL Một hệ thống những CSDL với nhiều ưu điểm như mã nguồn mở, có khả năng lưu trữ và xử lý một lượng dữ liệu lớn Mỗi CSDL trong NoSQL có những đặc điểm chung, đồng thời mang những đặc trưng riêng, mềm dẻo, phù hợp với những dự án khác nhau MongoDB là một CSDL hướng văn bản, lưu trữ dữ liệu dưới căp key-value MongoDB tỏ ra đặc biệt hiệu quả với những do án mà tỉ lệ lượng dữ liệu ghi vào CSDL lớn hơn lượng đọc

Trang 14

VI Tài liệu tham khảo

1 https://medium.com/coinmonks/peer-to-peer-mongodb-part-1-dc0880094d86

2 https://medium.com/coinmonks/peer-to-peer-mongodb-part-2-8050b1749fd8

3 https://viblo.asia/p/mongodb-p4-cai-dat-mongodb-sharded-cluster-co-kha-nang-scale-va-tinh-du-phong-cao-EbNVQxkoLvR

4 https://viblo.asia/p/set-up-replica-set-trong-mongodb-WAyK8OYW5xX

5 https://www.mongodb.com/docs/manual/replication/

6 https://www.youtube.com/watch?v=Jr0PiGIVJ8k sharding demo

7 https://www.youtube.com/watch?v=bJo7nr9xdrQ replication demo

Ngày đăng: 20/10/2024, 09:19

TỪ KHÓA LIÊN QUAN

w