Giới thiệu loại bài toán Bài toán thuộc nhóm lưu trữ, thu thập, và xử lý dữ liệu cho ứng dụng web, tập trung vào việc quản lý đữ liệu lớn trong môi trường cloud.. Đề giải quyết vẫn đề nà
Trang 1DAI HQC QUOC GIA THANH PHO HO CHi MINH TRUONG DAI HQC CONG NGHE THONG TIN
Gr
BAO CAO SEMINAR
DIEN TOAN DAM MAY
De tai
LAM VIEC VOI COSMOS DB (Working with Azure Cosmos DB)
Lop: [S402.P11
GVHD: Ths.Ha Lé Hoai Trung
Nhóm sinh viên thực hiện:
Lé Anh Duy = 21521994
Lê Ngọc Yên Khoa 21522224
Thành phố Hồ Chí Minh, tháng 9 năm 2024
MỤC LỤC
Trang 2CHUONG 1 GIỚI THIỆU BÀI TO ÁN -. - 5-5 s se ssesseesseseevsessesexeesse 3
1.1 - Giới thiệu loại bài toán - 52-51 2 tr tt H22 rrye 3 1.2 Giới thiệu loại dữ liệu 5 s2 EEEErHtrrerre 3
1.3 Kích thước dữ liệu L Q22 222112211122 12 2112112 tr nh rưey 3
CHƯƠNG 2 CƠ SỞ LÝ THUYẾTT 2-5 5£ se se se S+Se+seS2Sevseersersevversersessrse 5
2.1 Định dạng lưu trữ G2122 11112211111 1111111111502 111011112101 1111 tre 5 2.2 _ Thuật toán xử lý 22.02121212 2n 11H H 1k He rẻ 5 2.3 Các dịch vụ cloud đã sử dụng - 200122221112 2211112112 221115111 xey 6
CHƯƠNG 3 MÔ HÌNH DỮ LLIỆU .- 2-5 s2 s£ s£S<£ £E£seExexesesersesers 9 3.1 Tốc độ đọc /ghi - cS nnnnEnHnHH Hg gu Hye 9 3.2 Thiết lập luồng xử lý dữ liệu tự động ETL 2 2E SE SE trEettrerryen 9 3.3 Tối ưu hóa lưu trữ và cải thiện tốc độ đọc / ghi 5 nen 10
CHƯƠNG 5 KẾT LUẬN VÀ ĐÁNH GIÁ - s-s-cscseesssessezseseessesers 13 5.1 Kết luận - s2 2 1 11211 11 1 11 1H21 1 1E nh nh H Hàn Hàn ryk 13 5.2 Đánh giá 0 TH HH HH HH HH tt HH rung 13 CHƯƠNG 6 BẰNG PHÂN CÔNG CÔNG VIỆC 55< se ca csesreersrxee 14
Trang 3CHƯƠNG 1 GIỚI THIỆU BÀI TOÁN
1.1 Giới thiệu loại bài toán
Bài toán thuộc nhóm lưu trữ, thu thập, và xử lý dữ liệu cho ứng dụng web, tập trung vào việc quản lý đữ liệu lớn trong môi trường cloud Đề giải quyết vẫn đề này, chúng ta sẽ sử dụng Azure Cosmos DB với API MongoDB đề lưu trữ và xử lý đữ liệu phi cấu trúc Azure Cosmos DB là một cơ sở đữ liệu phân tán toàn cau, cho phép truy xuất đữ liệu với
độ trễ thấp, khả năng mở rộng linh hoạt và cung cấp nhiều mô hình API hỗ trợ, bao gồm MongoDB
1.2 Giới thiệu loại dữ liệu
Trong bài toán này, đữ liệu phi cầu trúc được lưu trữ đưới dạng JSON, định dạng phô
biến cho các ứng dụng web Dữ liệu bao gồm nhiều loại thông tin khác nhau như thông
tin sản phẩm, đánh giá của người dùng, hình ảnh sản phẩm, và chỉ tiết giao địch Dữ liệu
JSON rất phù hợp với các hệ thông NoSQL như Azure Cosmos DB do khả năng linh hoạt
trong việc lưu trữ và truy xuất
1.3 Kích thước dữ liệu
Dữ liệu sử dụng trong bài này có kích thước là 384KB, đây là kích thước mẫu cho bài
toán thử nghiệm Tuy nhiên, chúng ta sẽ thiết lập giả định về bài toán xử lý dữ liệu lớn
hơn 4GB, đề minh họa cho việc mở rộng hệ thống trong các trường hợp ứng dụng phát
triên hoặc khi dữ liệu gia tăng đột biến
Giả sử bạn đang phát triển một ứng dụng thương mại điện tử với hàng triệu người dùng
và hàng ngàn sản phâm Mỗi sản phẩm có các trường như tên sản phâm, mô tả, hình anh, đánh giá, lịch sử giá và đữ liệu giao dịch (lịch sử mua hàng, lượt xem, lượt yêu thích) Dữ liệu về hình ảnh sản phẩm và đánh giá của người đùng chiếm một dung lượng rất lớn Ngoài ra, ứng dụng cần lưu trữ thông tin chi tiết về từng giao dịch, bao gồm thời gian, người mua, người bán, thông tin giao hàng, và trạng thái đơn hàng
- _ Tình huống xử lý dữ liệu lớn:
Trong những sự kiện lớn như Black Friday hoặc các dịp khuyến mãi, lượng giao dịch và lượt truy cập tăng đột biến Điều này dẫn đến việc hệ thống phải xử lý một lượng lớn đữ liệu, vượt quá 4GB Dữ liệu liên quan không chỉ đến sản phẩm mà còn gồm hàng ngàn giao dich điển ra đồng thời, đánh giá sản phẩm tăng mạnh, khiến yêu cầu về truy xuất và
xử lý dữ liệu tăng lên
Trang 4Ví dụ, trong thời gian khuyến mãi, hàng trăm ngàn người dùng truy cập đề mua sắm, mỗi người đuyệt qua hàng chục sản phâm, dẫn đến hàng triệu yêu cầu truy xuất dữ liệu Điều này tạo ra thách thức trong việc đảm bảo hiệu suất ôn định và phản hồi nhanh chóng, đặc biệt khi dưng lượng đữ liệu vượt quá giới hạn
Xử lý với Cosmos DB:
Tự động mở rộng (auto-scaling): Azure Cosmos DB cung cấp khả năng tự động
mở rộng tài nguyên theo nhu cầu (auto-scaling) Điều này có nghĩa là khi số lượng người dùng và giao địch tăng đột biến, Cosmos DB sẽ tự động mở rộng đề đáp ứng yêu cầu mà không ảnh hưởng đến hiệu suất Ngay cả khi dữ liệu vượt quá 4GB, Cosmos DB vẫn duy trì hiệu suất ôn định, đảm bảo truy cập và xử lý dữ liệu nhanh chóng
Partitioning va Indexing:
Azure Cosmos DB str dung ky thuat partifioning đề chia nhỏ đữ liệu thành nhiều phần, giúp tối ưu hóa việc truy xuất và lưu trữ Với các dữ liệu lớn như giao dịch hoặc sản phâm, chúng ta có thê sử dụng các trường như userld hoặc productld làm Partidion Key Điều này giúp hệ thống đễ dàng truy vấn đữ liệu liên quan đến người dùng hoặc sản phẩm cụ thê mà không cần tái toàn bộ cơ sở đữ liệu vào bộ nhớ
Cosmos DB cũng tự động tạo index cho các trường đữ liệu mà không yêu cầu cầu hình phức tạp Nhờ vào cơ chế này, việc fruy xuất dữ liệu theo các tiêu chí tìm
kiếm cụ thê (ví dụ: tìm sản phẩm theo tên hoặc danh mục) sẽ nhanh hơn đáng kẻ, ngay cả khi dữ liệu có kích thước rất lớn
So sanh voi may chu truyén thống:
Máy chủ truyền thống: Trong các hệ thống lưu trữ đữ liệu trên máy chủ truyền thống, việc mở rộng hệ thông khi dung lượng đữ liệu vượt quá 4GB là một thách thức lớn Bạn sẽ phải nâng cấp phân cứng, thêm bộ nhớ hoặc tăng khả năng lưu trữ Quá trình này không chỉ tốn kém ma con mat thời gian va dé gây gián đoạn dịch vụ Khi lưu lượng truy cập và giao dịch tăng đột biến, máy chủ truyền thông có thể không đáp ứng kịp thời, dẫn đến chậm trễ hoặc mắt dit liệu
8 Cosmos DB trên cloud: Ngược lại, với Azure Cosmos DB trén nen tang
cloud, hệ thống có khả năng tự động mở rộng mà không cần sự can thiệp thủ công Cosmos DB có thê tự động phân bồ thêm tài nguyên lưu trữ và xử lý khi cần thiết, đảm bảo hiệu suất luôn ôn định ngay cả trong những thời điểm cao điểm Ngoài ra, việc không phải quản lý cơ sở hạ tầng vật lý giúp bạn tiết kiệm thời gian và công sức, đồng thời tập trung phát triển tính năng cho ứng dụng
Trang 5CHƯƠNG 2 CƠ SỞ LÝ THUYET
2.1 Định dạng lưu trữ
Azure Cosmos DB hỗ trợ nhiều API và mô hình đữ liệu khác nhau đẻ lưu trữ và quản
lý dữ liệu, cụ thê:
API MongoDB: Su dung dinh dang BSON (Binary JSON)
APISQL: Hỗ trợ mô hình đữ liệu tài liệu dưới dạng JSON
API Cassandra: Hỗ trợ lưu trữ dữ liệu kiểu bang tuong tu Cassandra
API Gremlin: Str dung m6 hinh dir liéu 46 thi
API Table: Luu trir dir ligu dudi dang key-value
Các mô hình dữ liệu phô biến:
Document-based: Dữ liệu được lưu trữ dưới dạng tài liệu như JSON, BSON Ví
dụ: MongoDB và Azure Cosmos DB Mô hình này có cấu trúc linh hoạt, cho phép
lưu trữ các loại đữ liệu khác nhau trong cùng một collectHon
Key-Value Store: Dữ liệu được lưu dưới dạng cặp khóa-gia trị, phù hợp cho các
tác vụ tìm kiếm nhanh Ví dụ: Redis hoặc Cosmos DB (Key-Value mode)
Graph-based: Di liéu lưu trữ dưới dạng đỉnh và cạnh, phù hợp cho các ứng dụng
mạng xã hội hoặc khuyến nghi Vi du: Neo4j hoac Cosmos DB (Gremlin API) Column-based: Dữ liệu được lưu dưới dang cét, tang tốc độ truy vấn đữ liệu lớn
Vi du: Cassandra hoac HBase
Cosmos DB str dung định dang tai ligu JSON cho API MongoDB, giup lưu trữ linh
hoạt va truy xuât đữ liệu nhanh chóng, phù hợp với các ứng dụng có tinh tương tác cao
2.2 Thuật toán xử lý
Thuật toán Indexing: Giúp tăng tốc độ truy vấn bằng cách xây dựng các bảng tra cứu (index), giảm thiểu việc quét toàn bộ đữ liệu
Thuật toán Partitioning: Chia nhỏ đữ liệu dựa trén Partition Key đề lưu trữ và xử lý
phân tán trên nhiều máy chủ, tăng hiệu suất và khả năng mở rộng
Thuật toán Replication: Sao chép dữ liệu trên nhiều máy chủ để đảm báo tính sẵn sàng và toàn vẹn dữ liệu Azure Cosmos DB hỗ trợ sao chép toàn cầu, giúp ứng dụng
phản hồi nhanh từ mọi vị trí địa lý.
Trang 6Thuật toán Consistency: Đảm bảo tính nhất quán của đữ liệu khi nhiều người dùng thao tác đồng thời Cosmos DB cung cấp 5 cấp độ nhất quán khác nhau để cân bằng
giữa hiệu suất và tính chính xác:
O° Strong consistency: Dir ligu mdi nhất được cập nhật đồng thời trên tất cả các
bản sao
Bounded staleness: Độ lệch dữ liệu được giới hạn trong khoảng thời gian hoặc
số phiên bản nhất định
Session consistency: Đảm bảo tính nhất quán trong cùng một phiên làm việc cho một người dùng
Consistent prefix: Dam bao cac thao tác ghi xuất hiện theo thứ tự đúng Eventual consistency: Đảm bảo đữ liệu sẽ nhất quán cuối cùng nhưng không đồng bộ ngay lập tức
2.3 Các dịch vụ cloud đã sử dụng
a Azure Cosmos DB
Azure Cosmos DB la mot dịch vụ NoSQL đa mô hình, toàn cầu Và được quản
lý hoàn toàn bởi Microsoft Azure Một sô chức năng chính bao gôm:
« M6 réng toàn cầu: Cosmos DB sao chép dữ liệu trên nhiều khu vực toàn cầu, đảm bảo độ trễ thấp và tính sẵn sảng cao
‹ _ Hỗ trợ đa mô hình: Bao gồm tài liệu, key-value, graph, va wide-column
„ - Khả năng mở rộng linh hoạt: Tự động điều chỉnh hiệu suất dựa trên nhu cầu ứng dụng
- - Truy vấn đa dạng: Hỗ trợ truy vấn bằng nhiều API như SQL, Cassandra, Gremlin, Table, va MongoDB
¢ Tinh nhat quán linh hoạt: Cung cấp nhiều mức nhất quán từ strong đến eventual
Lợi ích:
„ồ Độtrễ doc/ghi dudi 10ms ; - Ộ
+ Dam bao d6 tin cay 99.999% ve tinh san sàng trên nhiêu khu vực -
« H6 tro toi uu cho cac ung dung can truy cap đữ liệu nhanh và khôi lượng lớn
b MongoDB API
MongoDB API tương thích với Cosmos DB, cho phép người dùng thực hiện các lệnh MongoDB quen thuộc (như insert, ñnd, update) mà không cần thay đổi mã nguồn nhiều
Trang 7Chức năng chính:
° Tương thích với MongoDB: Sử dụng các lệnh MongoDB mà không cần chính sửa mã
* - Khả năng mở rộng và phân vùng tự động: Dữ liệu tự động mở rộng và phân vùng tương thích với MongoDB
* Tinh nang cao cap cla Cosmos DB: Sao chép toan cau, tự động lập chỉ mục
va cac tuy chon vé tinh nhat quan
Loi ich:
* Tiép tuc str dung cac céng cu MongoDB quen thuéc ma khéng can thay d6i
ma nguon
* Hiéu suat va kha năng mở rộng tự động theo nhu cầu
- _ Khả năng sao lưu và phục hồi cao hơn so với MongoDB truyền thống
c Azure CosmosDB with CLI
Azure Cosmos DB với CLI giúp quản lý tài nguyên và tối ưu hóa thông qua
đòng lệnh
Chức năng chính:
* - Quán lý cơ sở đữ liệu: Tạo, cập nhật, và xóa tài nguyên
- - Theo dõi hiệu suất: Xem các chí số như RU⁄s, độ trễ và lưu trữ
- - Tối ưu hóa tài nguyên: Quản lý phân vùng, băng thông, và chỉ số hiệu suất
° - Cảnh báo và tự động hóa: Cầu hình cảnh báo khi hiệu suất vượt ngưỡng và
tự động hóa tác vụ bảo trì
Lợi ích:
» - Quản lý hiệu quả mà không cần giao diện người ding
« - Theo dõi chỉ tiết hiệu suất đề tối ưu hóa hoạt động
° Cấu hình và tự động hóa dễ đàng các tác vụ quản trị
d Azure Monitor
Trang 8Azure Monitor là địch vụ theo dõi và phân tích hiệu suất các ứng dụng và tài nguyên trên Azure Các chức năng chính:
e
Theo dõi hiệu suất: Giám sát các chỉ số của ứng dụng và dịch vụ
Log Analytics: Phan tich và tìm kiêm log đê phát hiện vấn dé
Alerts: Cảnh báo khi có sự cố
Dashboards: Tạo bảng điều khiển tùy chỉnh
Insights: Cung cấp thông tin chỉ tiết về các địch vụ Azure cụ thê
Azure Storage Account
Azure Storage Account cung cap kha nang luu tri đữ liệu trên đám mây, bao gom:
Blob Storage: Luu tri dữ liệu không có cau trúc
File Storage: Luu trữ tệp dưới dạng hệ thông chia sẻ
Queue Storage: Luu trit va quan ly hang doi tin nhan
Table Storage: Luu trữ đữ liệu phi quan hệ dưới dạng bảng
Disk Storage: Lưu trữ ô đĩa cho máy ảo
Trang 9CHƯƠNG 3 MÔ HÌNH DỮ LIỆU 3.1 Tốc độ đọc / ghi
Sử dụng Benchmark là quá trình đánh giá hiệu năng của cơ sở dữ liệu, bao gồm khả năng xử ly, tốc độ phản hồi, và chi phí theo yêu cầu của các hoạt động lưu trữ, truy van dữ liệu Nó thường liên quan đến việc đánh giá các chi số như:
« _ Thời gian phản hồi: Thời gian mà hệ thống, mắt đề thực hiện một yêu cầu
‹ - Tốc độ xử lý: Số lượng yêu cầu mà hệ thống có thê xử lý trong một khoảng thời
gian nhất định
‹ - Sự ôn định: Đánh giá cách mà hệ thống duy trì hiệu suất trong thời gian dài, đặc
biệt khi có khối lượng công việc cao
Tốc độ đọc và ghi trong Azure Cosmos DB for MongoDB được đo lường bằng Request Units (RU) Đây là đơn vị tính toán cho các thao tác đọc, ghi và truy vấn
trên cơ sở dữ liệu Mỗi thao tác đều tiêu tốn một số RU nhất định, tùy thuộc vào độ
phức tạp và kích thước dữ liệu Khi cấu hình, bạn có thê gán một lượng RU cụ thê để đảm bảo hệ thông luôn có đủ năng lực xử lý mà không bị nghẽn Khả năng tự động điều chỉnh RU giúp tối ưu hiệu suất khi khối lượng công việc thay đôi đột ngột
« Kihiéu: RU/
¢ Ban dat trước với số lượng 100
¢ T6ithiéu 400 RU/s déi voi Fixed DB of 10gb
« _ Tối đa 1000 đối với csdl không giới hạn
Cơ sở dữ liệu có dung lượng cô định (fixed-s1ze database) trong Azure Cosmos DB
là kiểu cơ sở đữ liệu mà bạn giới hạn dung lượng của từng container bên trong nó
Cụ thê, một container trong cơ sở dữ liệu dạng cô định chí có thê lưu trữ tối đa 10GB
đỡ liệu
3.2 Thiết lập luồng xử lý dữ liệu tự động ETL
Thiết lập ETL (Extract, Transform, Load) trong Azure Cosmos DB for MongoDB giúp tự động hóa quy trình trích xuất, chuyên đối và tải dữ liệu từ nhiều nguồn khác
nhau, luôn đảm bảo đữ liệu được cập nhật và sẵn sàng cho phân tích
¢ Extract (Trich xuat dir liéu):
o Thu thap tr nhiéu nguồn: MongoDB, SQL, hé thong file, hoặc dịch vụ web
o Dung Azure Data Factory hoặc Azure Logic Apps dé tự động trích xuất dữ
liệu
¢ Transform (Chuyén déi dữ liệu):
o_ Chuyên đổi đữ liệu về định dạng yêu cầu bởi Azure Cosmos DB
o Azure Data Factory va Azure Databricks co thé xtr ly chuyén d6i phức tap
Trang 10¢ Load (Tai dữ liệu):
o Sau khi chuyên đôi, dữ liệu được tải vào các container cua Azure Cosmos
DB
o Dung Azure Data Factory dé tur động tái dữ liệu theo lịch trình
Công cụ hỗ tro ETL:
1 Azure Data Factory: Thực hiện quy trình ETL với tích hợp đa nguồn
2 Azure Logic Apps: Tự động hóa quy trình ETL nhẹ nhàng
3 Azure Databricks: Xử lý và chuyên đổi dữ liệu lớn và phức tạp
Vi dụ quy trình ETL:
1 Trích xuất dữ liệu từ MongoDB
2 Chuyên đôi từ BSON sang JSON
3 Tai vao Azure Cosmos DB
3.3 Tối ưu hóa lưu trữ và cải thiện tốc độ đọc / ghi
- Chon Partition Key hgp ly:
¢ Phan phéi déu dit liéu gitta các phân vùng đề tránh "hot partition” - ;
« Chon partition key nhu userld, orderld, hoac categoryId dé phan b6 dong déu
- Su dung Request Units (RUs) hiéu qua:
¢ Phan bé RUs hop ly dya trén khéi lượng truy cập
- - Sử dụng tính năng autoscale để điều chỉnh RUs khi tải công việc thay đổi
- Lap chi muc thong minh:
* Chi lap chi muc cac truong can thiét dé tang toc độ truy vấn , Ộ
« Cau hinh chi muc theo custom indexing policy dé tranh tiéu ton RUs không cần
thiết
- - Cơ chế sao chép dữ liệu (Replication):
« - Sao chép dữ liệu giữa nhiều vị trí địa lý dé tang tốc độ đọc
¢ Cau hinh multi-region replication dé tang hiéu suat doc ở các khu vực gần nhất
- Téiuuhéa Consistency Level:
10