1 BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÀI GIẢNG LƯU TRỮ VÀ PHÂN TÍCH DỮ LIỆU Ngành đào tạo Kỹ thuật Điện tử Viễn thông (Lưu hành nội bộ) Hà nội 11/2022[.]
Trang 11
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
- -
BÀI GIẢNG LƯU TRỮ VÀ PHÂN TÍCH DỮ LIỆU
Ngành đào tạo Kỹ thuật Điện tử Viễn thông
(Lưu hành nội bộ)
Hà nội - 11/2022
Trang 2LỜI NÓI ĐẦU
Môn học này trang bị cho sinh viên các kiến thức cơ bản về lưu trữ và phân tích
dữ liệu, hiểu được ý nghĩa và vai trò của các cấu trúc lưu trữ dữ liệu, đặc biệt là Bigdata cũng như kiến thức cơ bản về trích xuất dữ liệu từ các hệ thống lưu trữ dữ liệu lớn Bên cạnh đó cũng cung cấp kiến thức cơ bản về phân tích dữ liệu bao gồm các phương pháp biến đổi dữ liệu có mục tiêu, các phương pháp phân tích dữ liệu truyền thống và phương pháp phân tích dữ liệu thông minh ứng dụng học máy, học sâu Ngoài ra các phương pháp trực quan và báo cáo kết quả phân tích dữ liệu cũng được truyền đạt để giúp cho sinh viên có khả năng khai thác các hệ thống dữ liệu Bigdata
Bài giảng được tổ chức thành 06 chương với các nội dung chính như sau:
✓ Chương 1 Tổng quan về lưu trữ và phân tích dữ liệu: Giới thiệu tổng quan về sự tiến hóa của hệ thống lưu trữ dữ liệu và một số công nghệ lưu trữ dữ liệu hiện nay, đồng thời trình bày các khái niệm cơ bản về phân tích dữ liệu
✓ Chương 2 Cấu trúc dữ liệu hướng đối tượng: Trình bày về một số giải pháp cấu trúc lưu trữ dữ liệu và đánh giá các cấu trúc khả thi
✓ Chương 3 Khai phá và xử lý dữ liệu thô: Giới thiệu các thách thức về xử lý dữ liệu và các vấn đề về chất lượng dữ liệu
✓ Chương 4 Kiến trúc cơ sở dữ liệu lớn: Giới thiệu khái niệm và kiến trúc khung tính toán, kiến trúc kho dữ liệu, kiến trúc hồ dữ liệu và các hệ thống xử lý dữ liệu
✓ Chương 5 Phân tích dữ liệu truyền thống: Giới thiệu các nội dung liên quan đến kỹ thuật thu thập dữ liệu cũng các phương pháp phân tích dữ liệu truyền thống
✓ Chương 6 Phân tích dữ liệu thông minh: Trình bày tổng quan về mục tiêu phân tích dữ liệu thông minh, khái niệm và các vấn đề trích xuất dữ liệu, ngôn ngữ và phương pháp trích xuất, cũng như các phương pháp biến đổi dữ liệu và các phương pháp phân tích học máy cùng việc trực quan hóa và báo cáo phân tích
dữ liệu
Do nội dung môn học rộng trong khi thời gian biên soạn có hạn nên không tránh khỏi các thiếu sót Mọi ý kiến góp ý về nội dung bài giảng xin gửi về Bộ môn Kỹ thuật dữ liệu, Khoa Viễn thông I, tầng 10A2, Học viện Công nghệ Bưu chính Viễn thông Chúng tôi xin chân thành cảm ơn!
Nhóm tác giả
Trang 3MỤC LỤC
LỜI NÓI ĐẦU i
DANH MỤC HÌNH ẢNH v
THUẬT NGỮ VIẾT TẮT viii
CHƯƠNG 1 TỔNG QUAN VỀ LƯU TRỮ VÀ PHÂN TÍCH DỮ LIỆU 1
1.1 Tiến hóa của hệ thống lưu trữ dữ liệu 1
1.2 Các hệ thống lưu trữ dữ liệu hiện nay 3
1.3 Khái niệm về phân tích dữ liệu 9
Câu hỏi và bài tập 12
CHƯƠNG 2 CẤU TRÚC DỮ LIỆU HƯỚNG ĐỐI TƯỢNG 13
2.1 Giới thiệu 13
2.1.1 Cấu trúc dữ liệu 13
2.1.2 Cấu trúc dữ liệu hướng đối tượng 16
2.1.3 Tổ chức theo hướng dữ liệu-DDO 21
2.2 Giải pháp cấu trúc lưu trữ dữ liệu 24
2.3 Đánh giá các cấu trúc khả thi 31
Câu hỏi và bài tập 33
CHƯƠNG 3 KHAI PHÁ VÀ XỬ LÝ DỮ LIỆU THÔ 35
3.1 Giới thiệu 35
3.1.1 Giới thiệu chung 35
3.1.2 Khai phá dữ liệu là gì? 37
3.1.3 Khai phá dữ liệu và khám phá tri thức trong cơ sở dữ liệu 40
3.1.4 Nguồn gốc của khai phá dữ liệu 41
3.1.5 Nhiệm vụ của khai phá dữ liệu 43
3.1.6 Thách thức và động lực 46
3.2 Thách thức về xử lý dữ liệu 48
3.2.1 Xử lí dữ liệu 48
3.2.2 Thách thức của xử lý dữ liệu 49
3.3 Chất lượng dữ liệu 56
3.3.1 Đo lường và dữ liệu 56
Trang 43.3.2 Các vấn đề liên quan đến ứng dụng 61
Câu hỏi và bài tập 62
CHƯƠNG 4: KIẾN TRÚC CƠ SỞ DỮ LIỆU LỚN 63
4.1 Kiến trúc khung tính toán (computing frameworks) 63
4.1.1 Kiến trúc dữ liệu lớn 63
4.1.2 Kiến trúc khung tính toán 66
4.1.3 Khung xử lý tính toán phân tán 78
4.2 Kiến trúc kho dữ liệu 86
4.2.1 Kho dữ liệu 86
4.2.2 Kiến trúc kho dữ liệu 90
4.3 Kiến trúc hồ dữ liệu 98
4.3.1 Giới thiệu hồ dữ liệu 98
4.3.2 Kiến trúc hồ dữ liệu 100
4.3.2.1 Kiến trúc hồ dữ liệu 100
4.3.2.2 Kiến trúc hồ dữ liệu Hadoop 103
4.4 Các hệ thống xử lý dữ liệu 106
Câu hỏi và bài tập 107
CHƯƠNG 5: PHÂN TÍCH DỮ LIỆU TRUYỀN THỐNG 108
5.1 Giới thiệu 108
5.2 Thu thập dữ liệu 108
5.3 Phương pháp phân tích 111
5.3.1 Phân tích thống kê 111
5.3.2 Phân tích cụm 118
5.3.3 Phân tích nhân tố 119
5.3.4 Phân tích hồi quy 124
Câu hỏi và bài tập 126
CHƯƠNG 6: PHÂN TÍCH DỮ LIỆU THÔNG MINH 127
6.1 Tổng quan mục tiêu phân tích dữ liệu thông minh 127
6.2 Trích xuất dữ liệu 128
6.2.1 Ngôn ngữ trích xuất dữ liệu 129
6.2.2 Phương pháp trích xuất 137
6.3 Biến đổi dữ liệu 143
6.3.1 Mục đích biến đổi dữ liệu 143
Trang 56.3.2 Các phương pháp 145
6.4 Phương pháp phân tích học máy 152
6.4.1 Ensemble learning 154
6.4.2 Học sâu (DL) 169
6.5 Trực quan và báo cáo phân tích dữ liệu 180
6.5.1 Trực quan dữ liệu 180
6.5.1.1 Giới thiệu về trực quan hóa dữ liệu 180
6.5.1.2 Quy trình trực quan hóa dữ liệu lớn 181
6.5.1.3 Các loại trực quan hóa dữ liệu 181
6.5.1.4 Phương pháp trực quan hóa dữ liệu lớn 182
6.5.1.5 Các công cụ trực quan hóa dữ liệu 183
6.5.2 Cấu trúc báo báo phân tích dữ liệu 184
6.5.2.1 Cấu trúc tổng thể 184
6.5.2.2 Tầm quan trọng của các báo cáo phân tích dữ liệu hiện đại 185
6.5.2.3 Các bước lập báo cáo phân tích 186
Câu hỏi và bài tập 187
TÀI LIỆU THAM KHẢO 188
Trang 6DANH MỤC HÌNH ẢNH
Hình 1 1: Các đặc tính của dữ liệu lớn 1
Hình 1 2: Tiến hóa của cấu trúc dữ liệu và lưu trữ dữ liệu 2
Hình 1 3: Các loại lưu trữ NoSQL 5
Hình 2 1: Phân loại cấu trúc dữ liệu 14
Hình 2 2: Cấu trúc dữ liệu 15
Hình 2 3: Cấu trúc truyền thống 24
Hình 2 4: Cách tiếp cận dữ liệu lớn 24
Hình 2 5: Lưu trữ đối tượng 28
Hình 3 1: Quá trình khám phá tri thức trong cơ sở dữ liệu (KDD) 41
Hình 3 2: Khai phá dữ liệu như là sự kết hợp của nhiều lĩnh vực 42
Hình 3 3: Minh họa bốn trong số các nhiệm vụ khai phá dữ liệu cốt lõi 43
Hình 3 4: Chiều rộng cánh hoa so với chiều dài cánh hoa đối với 150 bông Iris 45
Hình 3 5: Khối lượng và lưu trữ 53
Hình 3 6: Bảo mật dữ liệu 55
Hình 3 7: Nhiễu theo thơi gian 57
Hình 3 8: Nhiễu theo không gian 58
Hình 4 1: Kiến trúc lambda 63
Hình 4 2: Kiến trúc Kappa 64
Hình 4 3: Kiến trúc Microserive 64
Hình 4 4: Kiến trúc Zeta 65
Hình 4 5: Kiến trúc iot-a 66
Hình 4 6: Tính toán song song 67
Hình 4 7: Điện toán lưới 70
Hình 4 8: Mạng lưới điện toán lưới 70
Hình 4 9: Các thành phần chính của điện toán lưới 72
Hình 4 10: ĐIện toán tiện ích 74
Hình 4 11: Kiến trúc của điện toán cụm 74
Hình 4 12: Kiến trúc điện toán đám mây 76
Hình 4 13: Kiến trúc của HDFS 80
Hình 4 14: Luồng làm việc của MapReduce 81
Hình 4 15: Kiến trúc của Apache Spark 83
Hình 4 16: Kiến trúc của Apache Storm 84
Hình 4 17: Hệ thống OLAP và OLTP 87
Hình 4 18: Các thuộc tính cần có có một kiến trúc kho dữ liệu 89
Hình 4 19: Các thành phần của kho dữ liệu 90
Trang 7Hình 4 20: Kiến trúc một tầng 95
Hình 4 21: Kiến trúc 2 tầng 96
Hình 4 22: Kiến trúc 3 tầng 97
Hình 4 23: Data lake 98
Hình 4 24: Kiến trúc hồ dữ liệu 101
Hình 4 25: Kiến trúc hồ dữ liệu hadoop 104
Hình 4 26: Các khái niệm chính trong hồ dữ liệu 105
Hình 4 27: Dòng thời gian của hệ thống SQL-on Hadoop 107
Hình 5 1: Phân loại biến dữ liệu 112
Hình 5 2: Thống kê suy luận 117
Hình 5 3: Mô hình nhân tố chung 120
Hình 5 4: Mô hình minh họa PCA 123
Hình 5 5: Phân tính hồi quy 125
Hình 6 1: Các bước trích xuất dữ liệu 138
Hình 6 2: Dữ liệu có cấu trúc và dữ liệu phi cấu trúc 139
Hình 6 3: Hai phương pháp trích xuất vật lý 141
Hình 6 4: Dữ liệu tích hợp 147
Hình 6 5: Dạng chuẩn hóa 150
Hình 6 6: Hình ảnh làm mịn 152
Hình 6 7: Bias-Variance Tradeoff 155
Hình 6 8: Các phương pháp Ensemble Learning 157
Hình 6 9: Minh họa quá trình bootstrap 159
Hình 6 10: Bootstrapping thường được sử dụng để đánh giá phương sai hoặc khoảng tin cậy của một số công cụ ước tính thống kê 160
Hình 6 11: Bagging 161
Hình 6 12: Random forest 163
Hình 6 13: Boosting 163
Hình 6 14: Quá trình tính toán của thuật toán AdaBoost 165
Hình 6 15: Gradient boosting 166
Hình 6 16: Mô hình xếp chồng 167
Hình 6 17: Xếp chồng 3 giai đoạn 168
Hình 6 18: Tổng quan về mạng học sâu 169
Hình 6 19: Sơ đồ các bước làm của học sâu 171
Hình 6 20: Mô hình ANN 172
Hình 6 21: Mô hình tổng quát của CNN 174
Hình 6 22: Thủ tục thực hiện tích chập 175
Hình 6 23: Hàm kích hoạt cho NN: a) ReLU, b) sigmoid, và c) tanh 175
Hình 6 24: Cấu trục của máy học cực đoan 177
Hình 6 25: Sự khác biệt trong đào tạo tiêu chuẩn theo phương pháp học máy truyền thống và trong học chuyển tiếp 179
Trang 8Hình 6 26: Quá trình trực quan hóa dữ liệu lớn 181
Trang 9THUẬT NGỮ VIẾT TẮT
Medical Instrumentation
Hiệp hội vì sự tiến bộ của
Thiết bị y tế
ACM Computing Analysis Scheme Hiệp hội Máy tính Quốc tế
AED Automated External Defibrillator Máy khử rung tim tự động
bên ngoài
AGI Artificial General Intelligence Trí tuệ nhân tạo tổng hợp
AHA American Heart Association Hiệp hội Tim mạch Hoa Kỳ
AI Artificial Intelligence Trí tuệ nhân tạo
ANI Artificial Narow Intelligence Trí tuệ nhân tạo hẹp
ASI Artificial Super Intelligence Trí tuệ siêu nhân tạo
AUC Area Under the Curve Diện tích dưới đường cong
AV AtrioVentricular Nút nhĩ thất
Trang 10CNN Convolutional Neural Network Mạng nơ-ron tích chập
CSV Comma Separated Values Các giá trị được phân tách
EMD Empirical Mode Decomposition Phân rã tín hiệu thực nghiệm
IBM International Business Machines Tập đoàn công nghệ máy
tính đa quốc gia
IMF Intricsic Mode Function Hàm chế độ nội tại
KNN K-Nearest Neighbor Thuật toán K láng giềng gần
nhất
ROC Receiver Operating Curve Đường cong đặc trưng hoạt
động của bộ phận thu-nhận
SAA Shock Advice Algorithm Thuật toán tư vấn sốc
SCA Sudden Cardiac Arrest Ngưng tim đột ngột
SVM Support Vector Machine Máy vecto hỗ trợ
VF Ventricular Fibrillation Rung thất
Trang 11VFDB MIT-BIH Malignant Ventricular
Arrhythmia Database
Cơ sở dữ liệu loạn nhịp thất
ác tính MIT-BIH
VT Ventricular Tachycardia Nhịp nhanh thất
WHO World Health Organization Tổ chức Y tế Thế giới
Trang 12CHƯƠNG 1 TỔNG QUAN VỀ LƯU TRỮ VÀ PHÂN TÍCH DỮ LIỆU
1.1 Tiến hóa của hệ thống lưu trữ dữ liệu
Dữ liệu là thông tin, đặc biệt là các dữ kiện hoặc con số, được thu thập để kiểm tra và xem xét và sử dụng để giúp ra quyết định hoặc thông tin ở dạng điện tử có thể được lưu trữ và sử dụng bởi máy tính
Dữ liệu lớn là một tập hợp dữ liệu có khối lượng khổng lồ, nhưng đang phát triển theo cấp số nhân theo thời gian Đây là một dữ liệu có kích thước lớn và độ phức tạp đến nỗi không một công cụ quản lý dữ liệu truyền thống nào có thể lưu trữ hoặc xử lý
nó một cách hiệu quả Dữ liệu lớn cũng là một dữ liệu nhưng với kích thước khổng lồ
Hình 1 1: Các đặc tính của dữ liệu lớn
Các đặc tính của dữ liệu lớn:
• Khối lượng đề cập đến lượng thông tin không thể tưởng tượng được tạo
ra mỗi giây từ mạng xã hội, điện thoại di động, ô tô, thẻ tín dụng, hình ảnh, video và những thứ khác
• Đa dạng Dữ liệu lớn được tạo ra ở nhiều dạng khác nhau So với dữ liệu truyền thống như số điện thoại và địa chỉ, xu hướng mới nhất của dữ liệu
là ở dạng ảnh, video, âm thanh và nhiều dữ liệu khác, khiến khoảng 80%
dữ liệu là hoàn toàn không có cấu trúc
• Tính xác thực về cơ bản có nghĩa là mức độ tin cậy mà dữ liệu phải cung cấp Vì một phần chính của dữ liệu là không có cấu trúc và không liên
Trang 13quan, nên Dữ liệu lớn cần phải tìm một cách thay thế để lọc chúng hoặc dịch chúng ra vì dữ liệu rất quan trọng trong sự phát triển kinh doanh
• Giá trị là vấn đề chính mà chúng ta cần tập trung Nó không chỉ là số lượng
dữ liệu mà còn để lưu trữ hoặc xử lý Nó thực sự là lượng dữ liệu có giá trị, đáng tin cậy cần được lưu trữ, xử lý, phân tích để tìm ra những hiểu biết sâu sắc
• Vận tốc đóng một vai trò quan trọng, đề cập đến thời gian mà dữ liệu lớn
có thể được xử lý Một số hoạt động rất quan trọng và cần phản hồi ngay lập tức, đó là lý do tại sao xử lý nhanh sẽ tối đa hóa hiệu quả Đối với các quy trình nhạy cảm về thời gian như phát hiện gian lận, các luồng dữ liệu lớn phải được phân tích và sử dụng khi chúng truyền vào tổ chức để tối đa hóa giá trị của thông tin
Các hệ quản trị cơ sở dữ liệu quan hệ (ví dụ: MySQL, PostgreSQL, SQL Server, Oracle) đã được coi là giải pháp phù hợp với tất cả mọi người để lưu trữ và truy xuất dữ liệu trong nhiều thập kỷ Họ đã trưởng thành sau những nỗ lực nghiên cứu và phát triển sâu rộng và rất thành công trong việc tạo ra một thị trường rộng lớn và nhiều giải pháp trong các lĩnh vực kinh doanh khác nhau Tuy nhiên, nhu cầu ngày càng tăng về khả năng mở rộng và các yêu cầu ứng dụng mới đã tạo ra những thách thức mới cho RDBMS truyền thống Đặc biệt, chúng ta hiện đang chứng kiến sự gia tăng liên tục của dữ liệu
do người dùng điều khiển và do người dùng tạo ra, dẫn đến sự tăng trưởng vượt bậc về loại và khối lượng dữ liệu được sản xuất, lưu trữ và phân tích Ví dụ, nhiều bộ nguồn mới hơn cho các nguồn dữ liệu đang nổi lên như: công nghệ cảm biến, bộ theo dõi tự động, Hệ thống định vị toàn cầu (GPS) và các thiết bị giám sát đang tạo ra các bộ dữ liệu khổng lồ Ngoài tốc độ phát triển dữ liệu nhanh chóng, dữ liệu cũng ngày càng trở nên thưa thớt và có tính chất bán cấu trúc Đặc biệt, cấu trúc dữ liệu có thể được phân thành bốn loại chính như sau:
2011s (Data Lake)
Hình 1 2: Tiến hóa của cấu trúc dữ liệu và lưu trữ dữ liệu
Trang 14• Dữ liệu có cấu trúc: Dữ liệu có định dạng và cấu trúc xác định, chẳng hạn như tệp CSV, bảng tính, cơ sở dữ liệu quan hệ truyền thống và khối dữ liệu OLAP
• Dữ liệu bán cấu trúc: Các tệp dữ liệu dạng văn bản có cấu trúc linh hoạt có thể được phân tích cú pháp Ví dụ phổ biến về loại dữ liệu này là tệp dữ liệu Ngôn ngữ đánh dấu mở rộng (XML) với thông tin tự mô tả của nó
• Dữ liệu chuẩn cấu trúc: Dữ liệu dạng văn bản có định dạng dữ liệu thất thường, chẳng hạn như dữ liệu dòng nhấp chuột trên web có thể chứa các giá trị và định dạng dữ liệu không nhất quán
• Dữ liệu không có cấu trúc: Dữ liệu không có cấu trúc vốn có như tài liệu văn bản, hình ảnh, tệp PDF và video
Hình 1.2 minh họa sự phát triển của cấu trúc dữ liệu và hệ thống lưu trữ dữ liệu trong những năm qua Trên thực tế, sự tăng trưởng liên tục về kích thước của các loại dữ liệu như vậy đã dẫn đến thách thức rằng các kỹ thuật quản lý dữ liệu truyền thống yêu cầu định nghĩa lược đồ trước và tổ chức dữ liệu dựa trên quan hệ là không đủ trong nhiều trường hợp Do đó, để giải quyết thách thức này, chúng ta đã chứng kiến sự xuất hiện của hệ thống lưu trữ dữ liệu có khả năng mở rộng thế hệ mới được gọi là hệ thống cơ sở
dữ liệu NoSQL (Not Only SQL) và hồ dữ liệu Hồ dữ liệu hiện nay được coi là một trong những xu hướng đối với dữ liệu Hồ dữ liệu là một hệ thống hoặc một kho để lưu trữ dữ dưới dạng thô được lưu trữ và sử dụng khi cần thiết Một khối lượng dữ liệu khổng lồ được lưu trữ và tồn tại một cách tự nhiên được ví như một cái hồ đầy dữ liệu
1.2 Các hệ thống lưu trữ dữ liệu hiện nay
Kết quả của việc phân tích các công nghệ lưu trữ dữ liệu hiện tại và tương lai, một số thông tin chi tiết đã thu được liên quan đến các công nghệ lưu trữ dữ liệu Rõ ràng là lưu trữ dữ liệu lớn đã trở thành một ngành kinh doanh hàng hóa và các công nghệ lưu trữ có thể mở rộng đã đạt đến cấp độ doanh nghiệp có thể quản lý khối lượng dữ liệu hầu như không bị giới hạn Bằng chứng được cung cấp bởi việc sử dụng rộng rãi các giải pháp dựa trên Hadoop được cung cấp bởi các nhà cung cấp như Cloudera, Hortonworks và MapR cũng như các nhà cung cấp cơ sở dữ liệu NoSQL khác nhau, đặc biệt là những nhà cung cấp sử dụng trong bộ nhớ và công nghệ lưu trữ dạng cột So với các hệ thống quản lý cơ sở dữ liệu quan hệ truyền thống dựa trên chiến lược lưu trữ dựa trên hàng và bộ nhớ đệm đắt tiền, các công nghệ lưu trữ dữ liệu lớn mới này cung cấp khả năng mở rộng tốt hơn với độ phức tạp và chi phí hoạt động thấp hơn
Mặc dù những tiến bộ này giúp cải thiện hiệu suất, khả năng mở rộng và khả năng sử dụng của các công nghệ lưu trữ, vẫn còn tiềm năng đáng kể chưa được khai thác cho các công nghệ lưu trữ dữ liệu lớn, cho cả việc sử dụng và phát triển hơn nữa các công nghệ:
• Tiềm năng để chuyển đổi xã hội và doanh nghiệp trên các lĩnh vực: Công nghệ lưu trữ dữ liệu lớn là yếu tố quan trọng cho phép phân tích nâng cao có tiềm năng biến đổi xã hội và cách thức đưa ra các quyết định kinh doanh quan trọng Điều
Trang 15này có tầm quan trọng đặc biệt trong các lĩnh vực truyền thống không dựa trên CNTT như năng lượng Trong khi các lĩnh vực này phải đối mặt với các vấn đề phi kỹ thuật như thiếu chuyên gia dữ liệu lớn có kỹ năng, các công nghệ lưu trữ
dữ liệu mới có tiềm năng cho phép phân tích tạo ra giá trị mới trong và trên các lĩnh vực công nghiệp khác nhau
• Thiếu tiêu chuẩn là một rào cản lớn: Lịch sử của NoSQL dựa trên việc giải quyết các thách thức công nghệ cụ thể dẫn đến một loạt các công nghệ lưu trữ khác nhau Nhiều lựa chọn cùng với việc thiếu các tiêu chuẩn để truy vấn dữ liệu khiến việc trao đổi kho lưu trữ dữ liệu trở nên khó khăn hơn vì nó có thể ràng buộc mã
cụ thể của ứng dụng với một giải pháp lưu trữ nhất định
• Những thách thức về khả năng mở rộng trong kho dữ liệu dựa trên đồ thị: Xử lý
dữ liệu dựa trên cấu trúc dữ liệu đồ thị có lợi trong số lượng ứng dụng ngày càng tăng Nó cho phép nắm bắt tốt hơn ngữ nghĩa và các mối quan hệ phức tạp với các phần thông tin khác đến từ nhiều nguồn dữ liệu khác nhau và có tiềm năng cải thiện giá trị tổng thể có thể được tạo ra bằng cách phân tích dữ liệu Mặc dù
cơ sở dữ liệu đồ thị ngày càng được sử dụng nhiều hơn cho mục đích này, nhưng vẫn khó có thể phân phối hiệu quả cấu trúc dữ liệu dựa trên đồ thị trên các nút máy tính
• Quyền riêng tư và bảo mật đang bị tụt hậu: Mặc dù có một số dự án và giải pháp
đề cập đến quyền riêng tư và bảo mật, nhưng việc bảo vệ các cá nhân và bảo mật
dữ liệu của họ bị tụt hậu so với những tiến bộ công nghệ của hệ thống lưu trữ dữ liệu Cần có nghiên cứu đáng kể để hiểu rõ hơn về cách dữ liệu có thể bị sử dụng sai mục đích, cách nó cần được bảo vệ và tích hợp trong các giải pháp lưu trữ dữ liệu lớn
Công nghệ lưu trữ dữ liệu lớn hiện nay
Trong thập kỷ qua, nhu cầu giải quyết với sự bùng nổ dữ liệu và sự thay đổi phần cứng từ phương pháp tiếp cận mở rộng quy mô (theo chiều dọc) sang mở rộng quy mô (theo chiều ngang) đã dẫn đến sự bùng nổ của các hệ thống lưu trữ dữ liệu lớn mới thay đổi khỏi cơ sở dữ liệu quan hệ truyền thống các mô hình Các phương pháp này thường
hy sinh các thuộc tính như tính nhất quán của dữ liệu để duy trì phản hồi truy vấn nhanh với lượng dữ liệu ngày càng tăng Các kho dữ liệu lớn được sử dụng theo những cách tương tự như các hệ thống quản lý cơ sở dữ liệu quan hệ truyền thống, ví dụ: cho các giải pháp xử lý giao dịch trực tuyến (OLTP) và kho dữ liệu trên dữ liệu có cấu trúc hoặc bán cấu trúc Điểm mạnh đặc biệt là xử lý dữ liệu phi cấu trúc và bán cấu trúc ở quy mô lớn
Phần này đánh giá công nghệ lưu trữ dữ liệu hiện đại nhất có khả năng xử lý lượng lớn dữ liệu và xác định các xu hướng liên quan đến lưu trữ dữ liệu Sau đây là các loại hệ thống lưu trữ khác nhau:
Trang 16• Hệ thống tệp phân tán: Các hệ thống tệp như Hệ thống tệp Hadoop (HDFS) cung cấp khả năng lưu trữ lượng lớn dữ liệu phi cấu trúc một cách đáng tin cậy trên phần cứng hàng hóa Mặc dù có những hệ thống tệp có hiệu suất tốt hơn, nhưng HDFS là một phần không thể thiếu của khuôn khổ Hadoop và đã đạt đến cấp độ của một tiêu chuẩn de-facto Nó đã được thiết kế cho các tệp dữ liệu lớn và rất phù hợp để nhập dữ liệu nhanh chóng và xử lý hàng loạt
• Cơ sở dữ liệu NoSQL: Có lẽ họ công nghệ lưu trữ dữ liệu lớn quan trọng nhất là
hệ quản trị cơ sở dữ liệu NoSQL Cơ sở dữ liệu NoSQL sử dụng các mô hình dữ liệu từ bên ngoài thế giới quan hệ không nhất thiết phải tuân theo các đặc tính giao dịch về tính nguyên tử, tính nhất quán, tính cách ly và độ bền (ACID)
• Cơ sở dữ liệu NewSQL: Một dạng cơ sở dữ liệu quan hệ hiện đại nhằm mục đích
có khả năng mở rộng tương đương như cơ sở dữ liệu NoSQL trong khi vẫn duy trì các đảm bảo giao dịch được thực hiện bởi các hệ thống cơ sở dữ liệu truyền thống
• Nền tảng truy vấn dữ liệu lớn: Công nghệ cung cấp tiền truy vấn trước các lưu trữ dữ liệu lớn như hệ thống tệp phân tán hoặc cơ sở dữ liệu NoSQL Mối quan tâm chính là cung cấp giao diện cấp cao, ví dụ: thông qua SQL như các ngôn ngữ truy vấn và đạt được độ trễ truy vấn thấp
1.2.1 Cơ sở dữ liệu No SQL
Hình 1 3: Các loại lưu trữ NoSQL
Trang 17• Kho khóa-giá trị: Các hệ thống này sử dụng mô hình dữ liệu đơn giản nhất là một tập hợp các đối tượng trong đó mỗi đối tượng có một khóa duy nhất và một tập hợp các cặp thuộc tính/giá trị
• Các kho lưu trữ bản ghi có thể mở rộng: Chúng cung cấp các bảng có chiều rộng thay đổi có thể được phân vùng theo chiều dọc và chiều ngang trên nhiều máy chủ
• Kho lưu trữ tài liệu: Mô hình dữ liệu của các hệ thống này bao gồm các đối tượng với một số thuộc tính thay đổi với khả năng có các đối tượng lồng nhau
• Lưu trữ đồ thị: Mô hình dữ liệu của các hệ thống này sử dụng cấu trúc đồ thị với các cạnh, nút và thuộc tính để mô hình hóa và lưu trữ dữ liệu
Trong thực tế, nhiều hệ thống được xác định là thuộc hệ thống NoSQL khá đa dạng; tuy nhiên, mỗi hệ thống này đều đi kèm với các bộ tính năng và định đề giá trị riêng của chúng Ví dụ: kho lưu trữ dữ liệu khóa/giá trị (KV) đại diện cho mô hình đơn giản nhất của hệ thống NoSQL, ghép khóa với giá trị theo kiểu rất giống với cách một bản đồ (hoặc bảng băm) hoạt động trong bất kỳ ngôn ngữ lập trình tiêu chuẩn nào Nhiều
dự án mã nguồn mở khác nhau đã được thực hiện để cung cấp các hệ thống cơ sở dữ liệu NoSQL có giá trị chính như Memcached, Voldemort, Redis và Riak Columnar, hoặc định hướng cột, là một loại cơ sở dữ liệu NoSQL Trong các hệ thống như vậy, dữ liệu từ một cột nhất định được lưu trữ cùng nhau trái ngược với cơ sở dữ liệu hướng hàng (ví dụ: hệ thống cơ sở dữ liệu quan hệ) giữ thông tin về mỗi hàng cùng nhau Trong
cơ sở dữ liệu hướng cột, việc thêm các cột mới khá linh hoạt và được thực hiện nhanh chóng trên cơ sở từng hàng Đặc biệt, mỗi hàng có thể có một tập hợp cột khác nhau, cho phép các bảng trở nên thưa thớt mà không phải trả thêm bất kỳ chi phí lưu trữ nào cho các giá trị NULL Về nguyên tắc, các hệ thống NoSQL dạng cột đại diện cho khoảng
Trang 18cách giữa các kho lưu trữ giá trị quan hệ và khóa Apache HBase hiện là hệ thống mã nguồn mở phổ biến nhất của thể loại này Một thể loại khác của hệ thống NoSQL là cơ
sở lưu trữ dữ liệu hướng tài liệu Trong danh mục này, tài liệu giống như một hàm băm, với một trường ID duy nhất và các giá trị có thể là bất kỳ loại nào trong số nhiều loại khác nhau, bao gồm nhiều hàm băm hơn Đặc biệt, các tài liệu có thể chứa các cấu trúc lồng nhau và do đó chúng cung cấp mức độ linh hoạt cao, cho phép các miền thay đổi MongoDB và CouchDB hiện là hai hệ thống phổ biến nhất trong danh mục này Cuối cùng, cơ sở dữ liệu NoSQL Graph là một danh mục khác vượt trội trong việc xử lý dữ liệu có tính kết nối cao Về nguyên tắc, một cơ sở dữ liệu đồ thị bao gồm các nút và mối quan hệ giữa các nút trong đó cả mối quan hệ và nút có thể được mô tả bằng cách sử dụng thông tin và thuộc tính mô tả (cặp khóa-giá trị) Về nguyên tắc, lợi thế chính của
cơ sở dữ liệu đồ thị là chúng cung cấp các chức năng dễ dàng để đi qua các nút của cấu trúc đồ thị bằng cách tuân theo các mối quan hệ Hệ thống cơ sở dữ liệu Neo4J hiện là phổ biến nhất trong thể loại này
1.2.2 Cơ sở dữ liệu NewSQL
Cơ sở dữ liệu NewSQL là một dạng cơ sở dữ liệu quan hệ hiện đại nhằm mục đích có khả năng mở rộng tương đương với cơ sở dữ liệu NoSQL trong khi vẫn duy trì các đảm bảo giao dịch được thực hiện bởi các hệ thống cơ sở dữ liệu truyền thống NewSQL có những đặc điểm sau:
• SQL là cơ chế chính để tương tác ứng dụng
• Hỗ trợ ACID cho các giao dịch
• Cơ chế kiểm soát đồng thời không khóa
• Một kiến trúc cung cấp hiệu suất trên mỗi nút cao hơn nhiều
• Một kiến trúc mở rộng quy mô, không chia sẻ, có khả năng chạy trên một số lượng lớn các nút mà không bị tắc nghẽn
Kỳ vọng là các hệ thống NewSQL nhanh hơn khoảng 50 lần so với OLTP RDBMS truyền thống Ví dụ: VoltDB (https://www.voltactivedata.com/) quy mô tuyến tính trong trường hợp truy vấn không phức tạp (phân vùng đơn) và cung cấp hỗ trợ ACID Nó mở rộng quy mô cho hàng chục nút trong đó mỗi nút bị giới hạn ở kích thước của bộ nhớ chính
1.2.3 Nền tảng truy vấn dữ liệu lớn
Nền tảng truy vấn dữ liệu lớn cung cấp các tiền truy vấn trên các kho dữ liệu lớn
cơ bản giúp đơn giản hóa việc truy vấn các kho dữ liệu cơ bản Chúng thường cung cấp giao diện truy vấn giống SQL để truy cập dữ liệu, nhưng khác nhau về cách tiếp cận và hiệu suất của chúng
Hive cung cấp phần trừu tượng trên Hệ thống tệp phân tán Hadoop (HDFS) cho phép các tệp có cấu trúc được truy vấn bằng ngôn ngữ truy vấn giống SQL Hive thực hiện các truy vấn bằng cách dịch các truy vấn trong công việc MapReduce Do đó, các
Trang 19truy vấn Hive có độ trễ cao ngay cả đối với các tập dữ liệu nhỏ Lợi ích của Hive bao gồm giao diện truy vấn giống SQL và tính linh hoạt để dễ dàng phát triển các lược đồ Điều này có thể thực hiện được vì lược đồ được lưu trữ độc lập với dữ liệu và dữ liệu chỉ được xác thực tại thời điểm truy vấn Cách tiếp cận này được gọi là lược đồ khi đọc
so với cách tiếp cận lược đồ trên ghi của cơ sở dữ liệu SQL Do đó, việc thay đổi lược
đồ là một hoạt động tương đối rẻ Hadoop Columnar store HBase cũng được hỗ trợ bởi Hive
Trái ngược với Hive, Impala được thiết kế để thực thi các truy vấn có độ trễ thấp
Nó sử dụng lại siêu dữ liệu và giao diện người dùng giống SQL như Hive nhưng sử dụng công cụ truy vấn phân tán của riêng nó có thể đạt được độ trễ thấp hơn Nó cũng hỗ trợ HDFS và HBase làm kho lưu trữ dữ liệu cơ bản
Spark SQL là một giao diện truy vấn có độ trễ thấp khác hỗ trợ giao diện Hive
Dự án tuyên bố rằng “nó có thể thực hiện các truy vấn Hive QL nhanh hơn gấp 100 lần
so với Hive mà không cần bất kỳ sửa đổi nào đối với dữ liệu hoặc truy vấn hiện có” Điều này đạt được bằng cách thực hiện các truy vấn bằng khung Spark chứ không phải
là khung MapReduce của Hadoop
Cuối cùng, Drill là một triển khai mã nguồn mở của Google’s Dremel tương tự như Impala, được thiết kế như một hệ thống truy vấn đặc biệt tương tác, có thể mở rộng cho dữ liệu lồng nhau Drill cung cấp ngôn ngữ truy vấn giống SQL của riêng DrQL tương thích với Dremel, nhưng được thiết kế để hỗ trợ các ngôn ngữ truy vấn khác như Ngôn ngữ truy vấn Mongo Trái ngược với Hive và Impala, nó hỗ trợ một loạt các nguồn
dữ liệu không có lược đồ, chẳng hạn như cơ sở dữ liệu HDFS, HBase, Cassandra, MongoDB và SQL
1.2.4 Lưu trữ đám mây
Khi điện toán đám mây ngày càng phổ biến, ảnh hưởng của nó đối với dữ liệu lớn cũng tăng theo Trong khi Amazon, Microsoft và Google xây dựng trên nền tảng đám mây của riêng họ, các công ty khác bao gồm IBM, HP, Dell, Cisco, Rackspace, v , xây dựng đề xuất của họ xung quanh OpenStack, một nền tảng mã nguồn mở để xây dựng hệ thống đám mây
Đám mây nói chung và đặc biệt là lưu trữ đám mây, có thể được sử dụng bởi cả doanh nghiệp và người dùng cuối Đối với người dùng cuối, việc lưu trữ dữ liệu của họ trên đám mây cho phép truy cập từ mọi nơi và từ mọi thiết bị một cách đáng tin cậy Ngoài ra, người dùng cuối có thể sử dụng lưu trữ đám mây như một giải pháp đơn giản
để sao lưu trực tuyến dữ liệu máy tính để bàn của họ Tương tự như vậy đối với các doanh nghiệp, lưu trữ đám mây cung cấp khả năng truy cập linh hoạt từ nhiều địa điểm
và dung lượng quy mô nhanh chóng và dễ dàng cũng như giá lưu trữ rẻ hơn và hỗ trợ tốt hơn dựa trên quy mô kinh tế với hiệu quả chi phí đặc biệt cao trong môi trường doanh nghiệp nhu cầu lưu trữ luôn thay đổi theo thời gian
Trang 20Về mặt kỹ thuật, các giải pháp lưu trữ đám mây có thể được phân biệt giữa lưu trữ đối tượng và lưu trữ khối Lưu trữ đối tượng “là một thuật ngữ chung mô tả cách tiếp cận để giải quyết và thao tác các đơn vị lưu trữ rời rạc được gọi là đối tượng” Ngược lại, dữ liệu lưu trữ khối được lưu trữ trong các khối còn được gọi là khối
Ngoài lưu trữ đối tượng và khối, các nền tảng chính cung cấp hỗ trợ cho lưu trữ dựa trên cơ sở dữ liệu quan hệ và không quan hệ cũng như lưu trữ trong bộ nhớ và lưu trữ hàng đợi Trong lưu trữ đám mây, có những khác biệt đáng kể cần được tính đến trong giai đoạn lập kế hoạch ứng dụng:
• Vì lưu trữ đám mây là một dịch vụ, các ứng dụng sử dụng bộ nhớ này có ít quyền kiểm soát hơn và có thể bị giảm hiệu suất do kết nối mạng Những khác biệt về hiệu suất này cần được tính đến trong giai đoạn thiết kế và thực hiện
• Bảo mật là một trong những mối quan tâm chính liên quan đến các đám mây công cộng
• Các đám mây giàu tính năng như AWS hỗ trợ hiệu chỉnh độ trễ, dự phòng và mức thông lượng để truy cập dữ liệu, do đó cho phép người dùng tìm thấy sự cân bằng phù hợp giữa chi phí và chất lượng
Một vấn đề quan trọng khác khi xem xét lưu trữ đám mây là mô hình nhất quán được hỗ trợ (và khả năng mở rộng liên quan, tính khả dụng, dung sai phân vùng và độ trễ) Trong khi Amazon’s Simple Storage Service (S3) hỗ trợ tính nhất quán cuối cùng, thì bộ lưu trữ Microsoft Azure blob hỗ trợ tính nhất quán mạnh mẽ, đồng thời tính khả dụng và khả năng phân vùng cao Microsoft sử dụng hai lớp: (1) lớp luồng “cung cấp tính khả dụng cao khi đối mặt với phân vùng mạng và các lỗi khác”, và (2) lớp phân vùng “cung cấp đảm bảo tính nhất quán mạnh mẽ”
1.3 Khái niệm về phân tích dữ liệu
Dữ liệu là yếu tố then chốt ngày nay Nó bao gồm dữ liệu cá nhân, nghề nghiệp, xã hội và hơn thế nữa Kỹ thuật số hóa và tính liên kết dẫn đến sự tăng trưởng dữ liệu ngoài mong đợi Việc sử dụng ngày càng nhiều phương tiện và mạng vật lý thông qua mạng cảm biến cho các mục đích kinh doanh và cá nhân tạo ra một lượng lớn dữ liệu Điều này nhằm thay đổi quy trình kinh doanh và mở ra cơ hội mới trên toàn thế giới Internet
là động lực chính để tăng trưởng dữ liệu Dữ liệu được tạo trên toàn thế giới đã vượt quá
bộ nhớ hiện có Kể từ năm 2011, sự quan tâm đến một lĩnh vực được gọi là dữ liệu lớn
đã tăng lên theo cấp số nhân Không giống như phần lớn các nghiên cứu khoa học máy tính, dữ liệu lớn đã nhận được sự quan tâm đáng kể của công chúng và phương tiện truyền thông Kỷ nguyên “dữ liệu lớn” đã mở ra nhiều cơ hội để nâng cấp khoa học, thúc đẩy dịch vụ chăm sóc sức khỏe, cải thiện tăng trưởng kinh tế, tái cấu trúc hệ thống giáo dục của chúng ta và chuẩn bị các loại hình dịch vụ giải trí và tương tác xã hội mới Lĩnh vực dữ liệu lớn đang phát triển nhanh chóng và có thể sẽ được cải tiến và sửa đổi trong tương lai
Trang 21Phân tích dữ liệu là một quá trình kiểm tra, làm sạch, chuyển đổi và mô hình
hóa dữ liệu với mục tiêu khám phá thông tin hữu ích, thông báo kết luận và hỗ trợ ra quyết định Phân tích dữ liệu có nhiều khía cạnh và cách tiếp cận, bao gồm các kỹ thuật
đa dạng dưới nhiều tên khác nhau và được sử dụng trong các lĩnh vực kinh doanh, khoa học tự nhiên và khoa học xã hội khác nhau Trong thế giới ngày nay, phân tích dữ liệu đóng vai trò giúp đưa ra quyết định khoa học hơn và giúp các tổ chức, cá nhân hoạt động hiệu quả hơn
Khai thác dữ liệu là một kỹ thuật phân tích dữ liệu cụ thể tập trung vào mô hình thống kê và khám phá tri thức cho mục đích dự đoán thay vì hoàn toàn mô tả, trong khi kinh doanh thông minh bao gồm phân tích dữ liệu dựa chủ yếu vào tổng hợp, tập trung chủ yếu vào thông tin kinh doanh Trong các ứng dụng thống kê, phân tích dữ liệu
có thể được chia thành thống kê mô tả, phân tích dữ liệu khám phá (EDA) và phân tích
dữ liệu xác nhận (CDA) EDA tập trung vào việc khám phá các tính năng mới trong dữ liệu trong khi CDA tập trung vào xác nhận hoặc làm sai lệch các giả thuyết hiện có Phân tích dự đoán tập trung vào việc áp dụng các mô hình thống kê để dự báo hoặc phân loại
dự đoán, trong khi phân tích văn bản áp dụng các kỹ thuật thống kê, ngôn ngữ và cấu trúc để trích xuất và phân loại thông tin từ các nguồn văn bản, một loại dữ liệu phi cấu trúc Tất cả các phương thức bên trên là các dạng khác nhau của phân tích dữ liệu
Quy trình phân tích dữ liệu
Quá trình phân tích dữ liệu thường di chuyển qua một số giai đoạn lặp đi lặp lại Chúng ta hãy xem xét kỹ hơn từng cái
• Xác định câu hỏi kinh doanh mà bạn muốn trả lời Công ty đang cố gắng giải quyết vấn đề gì? Bạn cần đo những gì, và bạn sẽ đo lường nó như thế nào?
• Thu thập các tập dữ liệu thô mà bạn cần để giúp bạn trả lời câu hỏi đã xác định Việc thu thập dữ liệu có thể đến từ các nguồn nội bộ, chẳng hạn như phần mềm quản lý quan hệ khách hàng (CRM) của công ty hoặc từ các nguồn thứ cấp, như
hồ sơ chính phủ hoặc giao diện lập trình ứng dụng truyền thông xã hội (API)
• Làm sạch dữ liệu để chuẩn bị cho phân tích Điều này thường liên quan đến việc loại bỏ dữ liệu trùng lặp và bất thường, điều chỉnh sự không nhất quán, chuẩn hóa cấu trúc và định dạng dữ liệu cũng như xử lý khoảng trắng và các lỗi cú pháp khác
• Phân tích dữ liệu Bằng cách sử dụng các công cụ và kỹ thuật phân tích dữ liệu khác nhau, có thể bắt đầu tìm ra các xu hướng, mối tương quan, ngoại lệ và các biến thể kể một câu chuyện Trong giai đoạn này, có thể sử dụng khai thác dữ
Trang 22liệu để khám phá các mẫu trong cơ sở dữ liệu hoặc phần mềm trực quan hóa dữ liệu để giúp chuyển đổi dữ liệu sang định dạng đồ họa dễ hiểu
Các loại phân tích dữ liệu
• Phân tích mô tả cho chúng ta biết điều gì đã xảy ra Loại phân tích này giúp mô
tả hoặc tóm tắt dữ liệu định lượng bằng cách trình bày các số liệu thống kê Ví dụ: phân tích thống kê mô tả có thể cho thấy sự phân bổ doanh số bán hàng trong một nhóm nhân viên và số liệu bán hàng trung bình trên mỗi nhân viên Phân tích
mô tả trả lời câu hỏi, "điều gì đã xảy ra?"
• Phân tích chẩn đoán Nếu phân tích mô tả xác định “cái gì” thì phân tích chẩn đoán xác định “tại sao” Giả sử một phân tích mô tả cho thấy một lượng bệnh nhân bất thường trong bệnh viện Đi sâu vào dữ liệu hơn nữa có thể tiết lộ rằng nhiều bệnh nhân trong số này có chung các triệu chứng của một loại virus cụ thể Phân tích chẩn đoán trả lời câu hỏi, "tại sao nó lại xảy ra?"
• Phân tích dự đoán Phân tích dự đoán sử dụng dữ liệu để hình thành các dự báo
về tương lai Phân tích dự đoán trả lời câu hỏi, "điều gì có thể xảy ra trong tương lai?"
• Phân tích đề xuất Phân tích đề xuất lấy tất cả những hiểu biết sâu sắc thu thập được từ ba loại phân tích đầu tiên và sử dụng chúng để hình thành các khuyến nghị về cách một công ty nên hành động
Ngày nay, dữ liệu cần được phân tích không chỉ lớn mà còn bao gồm nhiều loại dữ liệu khác nhau, và thậm chí bao gồm cả dữ liệu trực tuyến Vì dữ liệu lớn có các đặc điểm độc đáo là “khối lượng lớn, nhiều chiều, không đồng nhất, phức tạp, không có cấu trúc, không đầy đủ, nhiễu và sai sót”, điều này có thể thay đổi các phương pháp phân tích dữ liệu và thống kê Mặc dù có vẻ như dữ liệu lớn giúp chúng ta có thể thu thập nhiều dữ liệu hơn để tìm kiếm thông tin hữu ích hơn, nhưng sự thật là nhiều dữ liệu hơn không nhất thiết có nghĩa là thông tin hữu ích hơn Nó có thể chứa nhiều dữ liệu không
rõ ràng hoặc bất thường hơn Ví dụ: một người dùng có thể có nhiều tài khoản hoặc một tài khoản có thể được sử dụng bởi nhiều người dùng, điều này có thể làm giảm độ chính xác của kết quả khai thác Do đó, một số vấn đề mới đối với phân tích dữ liệu xuất hiện, chẳng hạn như quyền riêng tư, bảo mật, lưu trữ, khả năng chịu lỗi và chất lượng của dữ liệu Dữ liệu lớn có thể được tạo bởi thiết bị cầm tay, mạng xã hội, internet vạn vật, đa phương tiện và nhiều ứng dụng mới khác, tất cả đều có các đặc điểm về khối lượng, vận tốc và sự đa dạng Do đó, toàn bộ phân tích dữ liệu phải được kiểm tra lại từ các khía cạnh sau:
• Từ góc độ khối lượng, vô số dữ liệu đầu vào là điều đầu tiên mà chúng ta cần phải đối mặt vì nó có thể làm cho việc phân tích dữ liệu bị vô tác dụng
Trang 23• Từ quan điểm vận tốc, dữ liệu thời gian thực hoặc truyền trực tuyến dẫn đến vấn
đề số lượng lớn dữ liệu được đưa vào phân tích dữ liệu trong thời gian ngắn nhưng thiết bị và hệ thống có thể không xử lý được những dữ liệu đầu vào này Tình huống này tương tự như tình huống phân tích luồng mạng mà chúng ta thường không thể phản chiếu và phân tích mọi thứ chúng ta có thể thu thập được
• Từ góc độ đa dạng, vì dữ liệu đến có thể sử dụng các loại khác nhau hoặc có dữ liệu không đầy đủ, cách xử lý chúng cũng đặt ra một vấn đề khác cho người vận hành đầu vào của phân tích dữ liệu
Câu hỏi và bài tập
1 Trình bày sự tiến hóa của hệ thống lưu trữ dữ liệu
2 Hãy giới thiệu và so sánh ưu, nhược điểm của một số hệ thống lưu trữ dữ liệu chính hiện nay
3 Hãy trình bày khái niệm dữ liệu lớn (Big data) và công nghệ lưu trữ dữ liệu lớn hiện nay
4 So sánh các hệ cơ sở dữ liệu SQL, No SQL và New SQL
5 Điện toán đám mây là gì? Hãy trình bày khái niệm về lưu trữ đám mây
6 Hãy cho biết khái niệm phân tích dữ liệu và quy trình phân tích dữ liệu
Trang 24CHƯƠNG 2 CẤU TRÚC DỮ LIỆU HƯỚNG ĐỐI TƯỢNG
2.1 Giới thiệu
Việc xử lý thông tin vượt qua hầu hết các hoạt động của cuộc sống hàng ngày Cho
dù đó là hoạt động của cơ thể con người hay hoạt động của một tập đoàn lớn, nhu cầu đại diện, lưu trữ, xóa, chuyển đổi, truy xuất và chuyển thông tin luôn hiện hữu ở các mức độ trừu tượng khác nhau Máy tính kỹ thuật số hỗ trợ xử lý tất cả thông tin này Cơ bản để xử lý dữ liệu và giải quyết vấn đề với máy tính là sự cần thiết của:
• Một cấu trúc dữ liệu cơ bản để đại diện cho dữ liệu
• Một phương pháp hoặc thuật toán để xử lý
Ngành khoa học máy tính là nghiên cứu về dữ liệu, cấu trúc dữ liệu và thuật toán,
và ứng dụng của máy tính kỹ thuật số cho các hoạt động đó Việc nghiên cứu cấu trúc
dữ liệu thực sự là nghiên cứu các thuật toán và ngược lại Áp đặt một tổ chức vào một tập hợp dữ liệu là ngụ ý một phương pháp xử lý dữ liệu; để áp đặt một phương pháp xử
lý một tập dữ liệu là ngụ ý một cấu trúc để đại diện cho dữ liệu Thế giới kỹ thuật số xử
lý một lượng dữ liệu ngày càng tăng mỗi năm Theo Forbes, có 2,5 nghìn tỷ byte dữ liệu được tạo ra hàng ngày Thế giới đã tạo ra hơn 90% dữ liệu hiện có vào năm 2018 trong hai năm trước đó Internet of Things (IoT) tạo ra một phần đáng kể của sự bùng nổ dữ liệu
Cấu trúc dữ liệu là cần thiết để quản lý lượng lớn dữ liệu được tạo ra và là yếu tố quan trọng trong việc tăng cường hiệu quả của thuật toán
2.1.1 Cấu trúc dữ liệu
Cấu trúc dữ liệu là một kho lưu trữ được sử dụng để lưu trữ và tổ chức dữ liệu
Nó là một cách sắp xếp dữ liệu trên máy tính để nó có thể được truy cập và cập nhật một cách hiệu quả Cấu trúc dữ liệu không chỉ được sử dụng để tổ chức dữ liệu Nó cũng được sử dụng để xử lý, truy xuất và lưu trữ dữ liệu Có nhiều kiểu cấu trúc dữ liệu cơ bản và nâng cao khác nhau được sử dụng trong hầu hết mọi chương trình hoặc hệ thống phần mềm đã được phát triển
Cấu trúc dữ liệu là công cụ tổ chức mà các nhà khoa học dữ liệu sử dụng để cập nhật, quản lý và lập chỉ mục các dịch vụ internet một cách hiệu quả Cấu trúc dữ liệu cũng được sử dụng làm cơ sở cho nhiều thuật toán, do cách chúng có thể lọc và sắp xếp
số lượng lớn dữ liệu Có ba phần chính trong cấu trúc dữ liệu giúp nó hoạt động:
• Địa chỉ bộ nhớ: Phần tử dữ liệu thô cố định của bất kỳ tính năng hoặc chức năng mong muốn nào
• Con trỏ: Một công cụ tham chiếu đại diện cho vị trí của địa chỉ bộ nhớ
Trang 25• Thủ tục: Một đoạn mã được viết ra để thao tác hoặc tạo ra các chức năng khác nhau bên trong cấu trúc, tự động hoặc thủ công
Con trỏ, địa chỉ bộ nhớ và các thủ tục của cấu trúc dữ liệu là cực kỳ quan trọng,
vì việc sử dụng chúng hoặc cách chúng được biểu diễn trong bất kỳ cơ sở dữ liệu hoặc trang web nhất định nào, xác định các kiểu cấu trúc dữ liệu khác nhau mà cơ sở dữ liệu
có thể rơi vào
Phân loại cấu trúc dữ liệu
❖ Cấu trúc dữ liệu tuyến tính: Cấu trúc dữ liệu trong đó các phần tử dữ liệu được sắp xếp theo trình tự hoặc tuyến tính, trong đó mỗi phần tử được gắn với các phần tử liền kề trước đó và tiếp theo của nó, được gọi là cấu trúc dữ liệu tuyến tính Ví dụ
về cấu trúc dữ liệu tuyến tính là mảng, ngăn xếp, hàng đợi, danh sách liên kết
• Cấu trúc dữ liệu tĩnh: Cấu trúc dữ liệu tĩnh có kích thước bộ nhớ cố định Việc truy cập các phần tử trong cấu trúc dữ liệu tĩnh sẽ dễ dàng hơn Một ví dụ về cấu trúc dữ liệu này là một mảng
• Cấu trúc dữ liệu động: Trong cấu trúc dữ liệu động, kích thước không cố định
Nó có thể được cập nhật ngẫu nhiên trong thời gian chạy, điều này có thể được coi là hiệu quả liên quan đến độ phức tạp của bộ nhớ (không gian) của mã Ví dụ
về cấu trúc dữ liệu này là hàng đợi, ngăn xếp
❖ Cấu trúc dữ liệu phi tuyến tính: Cấu trúc dữ liệu mà các phần tử dữ liệu không được đặt một cách tuần tự hoặc tuyến tính được gọi là cấu trúc dữ liệu phi tuyến tính Trong cấu trúc dữ liệu phi tuyến tính, chúng tôi không thể duyệt qua tất cả các phần
tử chỉ trong một lần chạy Ví dụ về cấu trúc dữ liệu phi tuyến tính là cây và đồ thị
Hình 2 1: Phân loại cấu trúc dữ liệu
Trang 26Hình 2 2: Cấu trúc dữ liệu
Có 3 loại cấu trúc dữ liệu khác nhau
❖ Dữ liệu có cấu trúc
• Dữ liệu có cấu trúc là dữ liệu tuân theo mô hình dữ liệu được xác định trước và
do đó dễ phân tích Dữ liệu có cấu trúc tuân theo định dạng bảng với mối quan
hệ giữa các hàng và cột khác nhau Các ví dụ phổ biến về dữ liệu có cấu trúc là tệp Excel hoặc cơ sở dữ liệu SQL Mỗi trong số này có các hàng và cột có cấu trúc có thể được sắp xếp
• Dữ liệu có cấu trúc phụ thuộc vào sự tồn tại của mô hình dữ liệu - một mô hình
về cách dữ liệu có thể được lưu trữ, xử lý và truy cập Bởi vì mô hình dữ liệu, mỗi trường là rời rạc và có thể được truy cập riêng biệt hoặc cùng với dữ liệu từ các trường khác Điều này làm cho dữ liệu có cấu trúc trở nên cực kỳ mạnh mẽ:
có thể nhanh chóng tổng hợp dữ liệu từ các vị trí khác nhau trong cơ sở dữ liệu
• Dữ liệu có cấu trúc được coi là hình thức lưu trữ dữ liệu ‘truyền thống’ nhất, vì các phiên bản đầu tiên của hệ quản trị cơ sở dữ liệu (DBMS) đã có thể lưu trữ,
xử lý và truy cập dữ liệu có cấu trúc
❖ Dữ liệu phi cấu trúc
• Dữ liệu phi cấu trúc là thông tin không có mô hình dữ liệu được xác định trước hoặc không được tổ chức theo cách xác định trước Thông tin phi cấu trúc thường
có nhiều văn bản, nhưng cũng có thể chứa dữ liệu như ngày tháng, số và dữ kiện Điều này dẫn đến sự bất thường và mơ hồ gây khó hiểu khi sử dụng các chương trình truyền thống so với dữ liệu được lưu trữ trong cơ sở dữ liệu có cấu trúc Các
ví dụ phổ biến về dữ liệu phi cấu trúc bao gồm tệp âm thanh, video hoặc cơ sở
dữ liệu No-SQL
• Khả năng lưu trữ và xử lý dữ liệu phi cấu trúc đã phát triển vượt bậc trong những năm gần đây, với nhiều công nghệ và công cụ mới được tung ra thị trường có khả năng lưu trữ các loại dữ liệu phi cấu trúc chuyên biệt MongoDB, ví dụ, được tối
ưu hóa để lưu trữ tài liệu Apache Giraph, là một ví dụ ngược lại, được tối ưu hóa
để lưu trữ các mối quan hệ giữa các nút
• Khả năng phân tích dữ liệu phi cấu trúc đặc biệt có liên quan trong bối cảnh Dữ liệu lớn, vì một phần lớn dữ liệu trong các tổ chức là phi cấu trúc Nghĩ về hình ảnh, video hoặc tài liệu PDF Khả năng trích xuất giá trị từ dữ liệu phi cấu trúc
Trang 27là một trong những động lực chính đằng sau sự phát triển nhanh chóng của Dữ liệu lớn
❖ Dữ liệu bán cấu trúc
• Dữ liệu bán cấu trúc là một dạng dữ liệu có cấu trúc không tuân theo cấu trúc chính thức của mô hình dữ liệu được liên kết với cơ sở dữ liệu quan hệ hoặc các dạng bảng dữ liệu khác, nhưng vẫn chứa các thẻ hoặc các dấu hiệu khác để phân tách các phần tử ngữ nghĩa và thực thi phân cấp các bản ghi và trường trong dữ liệu Do đó, nó còn được gọi là cấu trúc tự mô tả Ví dụ về dữ liệu bán cấu trúc bao gồm JSON và XML là các dạng dữ liệu bán cấu trúc
• Lý do mà loại thứ ba này tồn tại (giữa dữ liệu có cấu trúc và không có cấu trúc)
là vì dữ liệu bán cấu trúc dễ phân tích hơn đáng kể so với dữ liệu không có cấu trúc Nhiều giải pháp và công cụ Dữ liệu lớn có khả năng 'đọc' và xử lý JSON hoặc XML Điều này làm giảm độ phức tạp để phân tích dữ liệu có cấu trúc, so với dữ liệu không có cấu trúc
❖ Siêu dữ liệu - Dữ liệu về Dữ liệu
• Loại cuối cùng của kiểu dữ liệu là siêu dữ liệu Từ quan điểm kỹ thuật, đây không phải là một cấu trúc dữ liệu riêng biệt, nhưng nó là một trong những yếu tố quan trọng nhất cho phân tích Dữ liệu lớn và các giải pháp dữ liệu lớn Siêu dữ liệu là
dữ liệu về dữ liệu Nó cung cấp thông tin bổ sung về một tập dữ liệu cụ thể
• Ví dụ, trong một bộ ảnh, siêu dữ liệu có thể mô tả thời gian và địa điểm chụp ảnh Sau đó, siêu dữ liệu cung cấp các trường cho ngày tháng và vị trí mà bản thân nó
có thể được coi là dữ liệu có cấu trúc Vì lý do này, siêu dữ liệu thường xuyên được sử dụng bởi các giải pháp Dữ liệu lớn để phân tích ban đầu
2.1.2 Cấu trúc dữ liệu hướng đối tượng
Thuật ngữ kiểu dữ liệu đề cập đến các loại dữ liệu cơ bản mà các biến có thể chứa, như được chỉ định bởi ngôn ngữ lập trình đã chọn Để phù hợp với quan điểm rằng các kiểu dữ liệu có thể bao gồm các kiểu không có cấu trúc và có cấu trúc, thì kiểu dữ liệu
là các đối tượng dữ liệu Định nghĩa cơ bản về một cấu trúc dữ liệu được trình bày lại dưới dạng tóm tắt đơn giản sau
Cấu trúc dữ liệu là một tập hợp các thứ tự các đối tượng dữ liệu và một tập hợp các thao tác trên các đối tượng này
Ví dụ về mảng, chúng ta có thể thay thế về các mục dữ liệu, phần tử dữ liệu và đối tượng dữ liệu và tham chiếu đến cùng một thực thể Đối với cấu trúc mảng, tổ chức tuần
tự của các đối tượng dữ liệu là ngầm định vì dữ liệu được tự động gán vào các vị trí bộ nhớ liền kề Các ứng dụng xử lý thông tin về cơ bản quan tâm đến việc tổ chức các nhóm
dữ liệu có liên quan lẫn nhau Thuật ngữ cơ sở dữ liệu được sử dụng để chỉ một tổ chức hoặc cấu trúc như vậy (cũng như phần cứng máy tính mà nó được xử lý và các chương
Trang 28trình thao tác với nó) Các nhóm dữ liệu liên quan thường được gọi là bản ghi Các thành phần hoặc mục dữ liệu riêng lẻ của một bản ghi là các thuộc tính của nó Các hoạt động của cơ sở dữ liệu nguyên tử thường liên quan đến việc sắp xếp và tìm kiếm các bản ghi dựa trên các thuộc tính đã chọn của các bản ghi được gọi là khóa Ví dụ, mỗi bản ghi của cơ sở dữ liệu nhân viên có thể chứa tên thuộc tính ngày thuê và chức danh Nếu tập hợp các bản ghi này được tìm kiếm một bản ghi (hoặc số lượng bản ghi) khớp với một tên nhất định thì thuộc tính name được coi là khóa tìm kiếm hoặc mục tiêu của tìm kiếm
Định nghĩa về cấu trúc dữ liệu trừu tượng
Khái niệm về kiểu dữ liệu trừu tượng (ADT, abstract data type) hay cấu trúc dữ liệu trừu tượng lần đầu tiên được Liskov và Ziles đưa ra như một phương tiện cung cấp cho việc bảo mật dữ liệu ADT là một tập hợp dữ liệu và một tập hợp các hoạt động được phép (hành động) được sử dụng để xác định và thao tác dữ liệu
Tập hợp các phần tử dữ liệu của một ADT được gọi là trừu tượng hóa dữ liệu trong khi tập hợp các hoạt động được phép được gọi là trừu tượng hóa chương trình Khái niệm ADT kết hợp dữ liệu và chương trình trừu tượng với nhau ADT được chỉ định bởi:
• Một loại lên duy nhất
• Một tập hợp các giá trị của một số loại
• Một tập hợp các thao tác hoạt động trên kiểu dữ liệu đó
Kiểu dữ liệu có thể đơn giản như các kiểu dựng sẵn như int, char và float hoặc các kiểu phức tạp hơn do người dùng định nghĩa Khái niệm ADT là nền tảng cho các cấu trúc dữ liệu được giới thiệu và triển khai trong suốt văn bản này Các tính năng chính của ADT là:
• Biểu diễn bên trong của một kiểu dữ liệu có thể được thay đổi mà không cần làm thay đổi các hoạt động được sử dụng bởi các chương trình bên ngoài hoặc các hàm để trừu tượng hóa dữ liệu không thay đổi
• Một ADT được xem như một thực thể duy nhất
• Dữ liệu không cần thiết trong ADT được che giấu khỏi bất kỳ chương trình nào không được quyền truy cập vào dữ liệu đó
Thiết kế hướng đối tượng
Thiết kế hướng đối tượng (ODD – object-oriented design) là một thiết kế dựa trên khái niệm trừu tượng ADT Một cách đơn giản để hiểu các nguyên tắc của thiết kế hướng đối tượng là phân biệt nó với thiết kế hướng chức năng (FOD – function-oriented design) truyền thống hơn
Trang 29Thiết kế hướng đối tượng coi hệ thống phần mềm như một nhóm các đối tượng tương tác chứ không phải là một tập hợp các chức năng tương tác như trong thiết kế hướng chức năng Chương trình hướng đối tượng (OOP) là một thiết kế hướng đối tượng Nói cách khác, các phương pháp lập trình hướng đối tượng được sử dụng để triển khai các khái niệm ADT Trong OOP, dữ liệu và hoạt động cho một ADT được kết hợp thành một thực thể duy nhất, được gọi là một đối tượng Các ngôn ngữ lập trình hướng đối tượng như C ++, Smalltalk và Object Pascal hỗ trợ trực tiếp mô hình đối tượng và đơn giản hóa việc triển khai OOD Trong C ++, cấu trúc lớp được sử dụng để triển khai một ADT và do đó xác định kiểu của một đối tượng
Lập trình hướng đối tượng có cấu trúc và mô-đun nhiều hơn so với lập trình hướng chức năng, tạo ra các chương trình dễ bảo trì, linh hoạt và mạnh mẽ OOP cho phép lập trình viên mô phỏng các tình huống trong thế giới thực một cách gần gũi hơn Lập trình hướng đối tượng có 4 tính chất:
• Encapsulation – tính đóng gói: các phương thức và dữ liệu có mối quan hệ với nhau được lưu vào một lớp để thuận tiện cho việc quản lý, sử dụng Chỉ có phương thức nội tại của chính đối tượng mới có thể thay đổi trạng thái nội tại của
nó
• Abstraction – tính trừu tượng: chỉ tập trung vào những thuộc tính và phương thức cần thiết cho việc giải quyết vấn đề trong lập trình và bỏ qua các thông tin không quan trọng
• Inheritance – tính kế thừa: các đối tượng “con” có thể thừa hưởng các đặc tính
có sẵn từ đối tượng “cha” mà không cần định nghĩa lại (tùy theo ngôn ngữ lập trình)
• Polymorphism – tính đa hình: các đối tượng không cùng một lớp, khi tiếp nhận cùng một thông điệp thì sẽ phản hồi theo những cách khác nhau
a Cấu trúc dữ liệu hướng chức năng
Cấu trúc dữ liệu hướng chức năng được xây dựng dựa trên khái niệm tập hợp các biến dữ liệu được xác định và các hoạt động được phép trên chúng mà không liên quan đến việc ẩn và bảo vệ dữ liệu Các phương pháp lập trình hướng chức năng dựa trên một lược đồ
• Xác định các yêu cầu dữ liệu
• Xây dựng cấu trúc dữ liệu
Trang 30giống nhau) bắt nguồn từ các kiểu dữ liệu cơ bản Với cách tiếp cận này, các kiểu dữ liệu do người dùng xác định với việc ẩn dữ liệu sẽ bị bỏ qua
Cấu trúc dữ liệu truyền thống và phương pháp lập trình này có một thiếu sót nghiêm trọng trong việc bảo vệ dữ liệu khỏi bị lạm dụng có thể xảy ra Sự thiếu hụt này sẽ được giải quyết trong một phương pháp lập trình và cấu trúc dữ liệu hướng đối tượng
b Cấu trúc dữ liệu hướng đối tượng
Vì ADT được xem như một kiểu cho một đối tượng và thiết kế hướng đối tượng (OOD) phân tách hầu hết các ứng dụng trong thế giới thực như một tập hợp các đối tượng hợp tác, nên ADT (và do đó là cấu trúc dữ liệu hướng đối tượng) là một tính năng tích hợp của OOD Khi một OOD được thực hiện bởi một chương trình bằng một số ngôn ngữ hỗ trợ OOD, chẳng hạn như C ++, chương trình đó được gọi là chương trình hướng đối tượng (OOP) Một OOP sử dụng các lớp và đối tượng Các tính năng cơ bản của OOD bao gồm:
• Nhập dữ liệu trừu tượng: ADT chỉ định dữ liệu và hoạt động của một đối tượng
• Dữ liệu trừu tượng: Sự trừu tượng hóa dữ liệu cung cấp một khái niệm về một đối tượng và một giao diện cho dữ liệu của một đối tượng mà không liên quan đến các chi tiết của việc triển khai dữ liệu Như đã nói bởi Booch, “Một sự trừu tượng biểu thị các đặc điểm cơ bản của một đối tượng giúp phân biệt nó với tất
cả các loại đối tượng khác và do đó cung cấp các ranh giới khái niệm được xác định rõ ràng, liên quan đến quan điểm của người xem.”
• Đóng gói và ẩn dữ liệu: Tính năng đóng gói che giấu (ẩn) chi tiết triển khai của
dữ liệu và phương thức của một đối tượng khỏi chương trình hoặc chức năng người dùng của nó Điều này giúp bảo vệ thông tin của đối tượng (dữ liệu và phương pháp) khỏi những người dùng trái phép Do đó, trừu tượng bổ sung cho tính đóng gói
• Tính mô-đun: Modularity là một phương tiện phân tách một ứng dụng thành một tập hợp các đối tượng hợp tác Như Booch nói: Các nguyên tắc trừu tượng, đóng gói và mô-đun là hiệp lực Theo mô đun, các phần trừu tượng liên quan đến logic được nén chặt lại
• Các lớp: Các lớp xác định kiểu hoặc mẫu của các đối tượng Khái niệm kiểu có nguồn gốc từ ADT Một lớp được bắt nguồn từ một ADT ngoài việc bảo vệ dữ liệu và hoạt động Các lớp là các mẫu mô tả cấu trúc dữ liệu và các hành động hợp lệ tác động lên dữ liệu
• Xác định Đối tượng và Lớp: Một đối tượng là một thể hiện của một lớp; nó có một tên biến duy nhất Nó được xác định bởi hành vi và trạng thái của nó Một lớp chung được sử dụng để xác định hành vi và cấu trúc của các đối tượng cùng kiểu
• Phương pháp: Các hành động hợp lệ được thực hiện với các hàm thành viên của lớp định nghĩa một đối tượng Các hàm thành viên như vậy được gọi là các
Trang 31phương thức (hoặc các phép toán hoặc các hành động) Các phương thức được
sử dụng để gửi thông điệp đến một đối tượng chỉ có thể hoạt động dựa trên thông báo
• Hệ thống phân cấp và kế thừa: Một vấn đề được chia thành một tập hợp các đối tượng hoặc lớp Một tập hợp các lớp thể hiện một hệ thống phân cấp kế thừa vì một lớp này dẫn xuất từ một lớp khác (kế thừa các thành viên) theo kiểu phân cấp Lớp gốc của một hệ thống phân cấp kế thừa là lớp cơ sở Lớp cơ sở thiết lập các thành viên dữ liệu chung và các hàm thành viên cho tất cả các lớp Các lớp
kế thừa các thành viên từ lớp cơ sở là lớp con hoặc lớp dẫn xuất của lớp cơ sở gốc Các lớp dẫn xuất này mở rộng khả năng của lớp cơ sở để cung cấp chức năng cụ thể của riêng chúng và/hoặc triển khai chức năng của lớp cơ sở Tính kế thừa cho phép chia sẻ dữ liệu và phương thức giữa các lớp với mức độ trừu tượng
• Truyền thông điệp giữa các đối tượng: Các đối tượng độc lập với nhau Một đối tượng giống nhau hoặc các lớp khác nhau có thể gửi một thông điệp đến bất kỳ đối tượng nào, và đối tượng nhận thông điệp chỉ có thể hoạt động dựa trên thông điệp đó Một thông báo có thể chứa một yêu cầu hành động như tạo một đối tượng, khởi tạo một đối tượng, in các mục dữ liệu nội bộ trong một đối tượng
• Tính đa hình và liên kết động: Tính đa hình có nghĩa là một tên phương thức duy nhất có thể được sử dụng cho các hoạt động khác nhau trên các lớp dẫn xuất (lớp con) Vì hoạt động cụ thể được gọi phụ thuộc vào lớp của đối tượng mà thông điệp đang được gửi đến, địa chỉ của hoạt động sẽ không được biết cho đến thời gian chạy Địa chỉ được đính kèm động, một quá trình được gọi là liên kết động hoặc liên kết muộn
Mục đích của một thiết kế hướng đối tượng tốt là cung cấp cho người dùng một tập hợp phong phú các thành phần có thể thay thế và sử dụng lại có thể mở rộng mà trên đó
hệ thống phần mềm có thể được xây dựng Trong một môi trường như vậy, các đối tượng
có thể được xem như là các mô-đun có sẵn, OOP là một mạng lưới các đối tượng như vậy được cắm vào nhau và giao tiếp bằng tin nhắn đi qua các giao diện công cộng được chỉ định của chúng Tính năng đóng gói ẩn cấu trúc dữ liệu và các thuật toán được liên kết với một đối tượng khỏi người dùng Vì vậy, trong một thiết kế hướng đối tượng, người dùng quan tâm đến những gì một đối tượng làm hơn là cách nó thực hiện
Một thiết kế hướng chức năng truyền thống trình bày một cách tiếp cận bổ sung cho thiết kế hướng đối tượng Trong thiết kế hướng chức năng, mô-đun cơ bản là một chức năng chứ không phải một thực thể dữ liệu trừu tượng Trong một môi trường như vậy, người dùng thường liên quan đến chức năng làm gì và nó hoạt động như thế nào Tuy nhiên, trong bất kỳ thiết kế nào, dù là hướng chức năng hay hướng đối tượng, người triển khai hoặc người dùng thường quan tâm đến hiệu suất của hệ thống phần mềm Cấu trúc dữ liệu và các thuật toán liên quan của chúng được đặc trưng bởi tính hiệu quả của chúng trong các điều kiện ứng dụng khác nhau Do đó, trong một thiết kế hướng
Trang 32đối tượng, người ta có thể không chỉ quan tâm đến những gì một đối tượng làm mà còn
là nó hoạt động tốt như thế nào
Các bước khai thác thiết kế theo định hướng đối tượng
Một số bước chính trong việc tạo OOD cho một vấn đề nhất định là:
• Bước 1 Phân vùng: Chia vấn đề thành một tập hợp các đối tượng Xác định từng đối tượng bằng dữ liệu của nó và các hoạt động liên quan (ADT)
• Bước 2 Chia sẻ: Xác định tính chung giữa các đối tượng và thứ bậc của các lớp
• Bước 3 Đóng gói: Xác định mức độ bảo vệ cho dữ liệu và hoạt động trong mỗi đối tượng
• Bước 4 Kế thừa: Xác định các mức bảo vệ cho dữ liệu và hoạt động trong (các) lớp cơ sở được kế thừa bởi các lớp con
• Bước 5 Tính đa hình và liên kết động: Xác định phương thức nào trong (các) lớp
cơ sở sẽ có cùng tên giao diện trên (các) lớp con nhưng có thể cần phải hoạt động khác nhau trong (các) lớp con khác nhau
• Bước 6 Sàng lọc: Lặp lại năm bước trên theo cách lặp đi lặp lại cho đến khi đạt được thiết kế để triển khai ban đầu
2.1.3 Tổ chức theo hướng dữ liệu-DDO
Trong ngành công nghiệp hiện đại ngày nay, dữ liệu là thành phần quan trọng trong chiến lược của mọi công ty Hầu hết các công ty, đặc biệt là các doanh nghiệp lớn, đang đầu tư rất nhiều vào việc thu thập, lưu trữ và phân tích dữ liệu Một tổ chức tuân theo các thông lệ này được gọi là Tổ chức theo hướng dữ liệu
Thuật ngữ “Tổ chức theo hướng dữ liệu” không phải là một khái niệm mới Đơn giản là bất kỳ doanh nghiệp nào đưa ra quyết định dựa trên sự thật thay vì dựa trên ý kiến, cảm xúc và cảm xúc Trong một tổ chức như vậy, việc ra quyết định theo hướng
dữ liệu không chỉ xảy ra ở cấp quản lý cấp cao mà ở tất cả các cấp của tổ chức Tổ chức theo hướng dữ liệu đưa ra các quyết định đúng đắn trong một chu kỳ kinh doanh liên tục theo hướng dữ liệu
Các tổ chức định hướng dữ liệu nổi tiếng nhất là các công ty Internet tiêu dùng: Google, Amazon, Facebook và LinkedIn Tuy nhiên, hướng dữ liệu không chỉ giới hạn
ở Internet Walmart đã đi tiên phong trong việc sử dụng dữ liệu từ những năm 1970 Đây là một trong những tổ chức đầu tiên xây dựng kho dữ liệu lớn để quản lý hàng tồn kho trong toàn bộ hoạt động kinh doanh của mình Điều này giúp nó trở thành công ty đầu tiên có doanh thu hơn 1 tỷ đô la trong 17 năm đầu tiên Và sự đổi mới không dừng lại ở đó Vào những năm 1980, Walmart nhận ra rằng chất lượng dữ liệu của mình không
đủ, vì vậy để có được dữ liệu tốt hơn, Walmart đã trở thành công ty đầu tiên sử dụng máy quét mã vạch tại máy tính tiền Công ty muốn biết những sản phẩm đang bán và vị trí của những sản phẩm đó trong cửa hàng ảnh hưởng như thế nào đến doanh số bán
Trang 33hàng Nó cũng cần phải hiểu các xu hướng theo mùa và sự khác biệt giữa các khu vực
đã ảnh hưởng đến khách hàng của mình như thế nào Khi số lượng cửa hàng và khối lượng hàng hóa tăng lên, sự phức tạp trong quản lý hàng tồn kho của nó cũng tăng lên Nhờ vào dữ liệu lịch sử, kết hợp với mô hình dự đoán nhanh, công ty có thể quản lý đường cong tăng trưởng của mình Để giảm thêm thời gian đưa dữ liệu của mình thành quyết định, nó đã trở thành công ty lớn đầu tiên đầu tư vào công nghệ RFID Gần đây,
nó đã nỗ lực đằng sau các công nghệ xử lý dữ liệu tiên tiến như Hadoop và Cassandra
Điều gì về các tổ chức dựa trên dữ liệu này cho phép họ sử dụng dữ liệu để đạt được lợi thế cạnh tranh? Thu thập, xử lý và tận dụng dữ liệu kịp thời để tạo ra hiệu quả, lặp lại và phát triển các sản phẩm mới cũng như điều hướng bối cảnh cạnh tranh
Các bước đầu tiên khi làm việc với dữ liệu là thu thập và xử lý Nhưng không rõ phải làm những việc này thường xuyên là gì Các tổ chức dựa trên dữ liệu tốt nhất tập trung không ngừng vào việc giữ cho dữ liệu của họ sạch sẽ Dữ liệu phải được sắp xếp, ghi chép tốt, định dạng nhất quán và không có lỗi Làm sạch dữ liệu thường là phần quan trọng nhất của khoa học dữ liệu và thường là 80% công việc Việc thiết lập quy trình làm sạch dữ liệu trên quy mô lớn thêm phức tạp hơn Các tổ chức thành công đầu
tư rất nhiều vào công cụ, quy trình và đánh giá thường xuyên Họ đã phát triển một nền văn hóa hiểu được tầm quan trọng của chất lượng dữ liệu; nếu không, như câu ngạn ngữ, rác vào, rác ra
Một số lượng đáng ngạc nhiên là các tổ chức đầu tư rất nhiều vào việc xử lý dữ liệu, với hy vọng rằng mọi người sẽ đơn giản bắt đầu tạo ra giá trị từ nó Kết quả là chi phí hoạt động và vốn lớn để tạo ra một kho dữ liệu hiếm khi được sử dụng Các tổ chức tốt nhất sử dụng dữ liệu của họ Họ sử dụng dữ liệu để hiểu khách hàng và các sắc thái kinh doanh của họ Họ phát triển các thí nghiệm cho phép họ kiểm tra các giả thuyết cải thiện tổ chức và quy trình của họ Và họ sử dụng dữ liệu để xây dựng sản phẩm mới Phần tiếp theo giải thích cách họ làm điều đó
Dân chủ hóa dữ liệu
Dân chủ hóa dữ liệu là một trong những ý tưởng mạnh mẽ nhất của khoa học dữ liệu Mọi người trong một tổ chức phải có quyền truy cập vào càng nhiều dữ liệu hợp pháp càng tốt
Trong khi quyền truy cập rộng rãi vào dữ liệu đã trở nên phổ biến hơn trong ngành khoa học (ví dụ, có thể truy cập dữ liệu thô từ Dịch vụ Thời tiết Quốc gia hoặc Viện Y tế Quốc gia), Facebook là một trong những công ty đầu tiên cấp cho nhân viên của mình quyền truy cập vào dữ liệu ở quy mô Ngay từ sớm, Facebook đã nhận ra rằng việc cho phép mọi người truy cập vào dữ liệu là một điều tốt Nhân viên không phải đưa
ra yêu cầu, chờ mức độ ưu tiên và nhận dữ liệu có thể đã lỗi thời Ý tưởng này là cấp tiến bởi vì niềm tin phổ biến là nhân viên sẽ không biết cách truy cập dữ liệu, dữ liệu không chính xác sẽ được sử dụng để đưa ra các quyết định kinh doanh kém và chi phí
kỹ thuật sẽ trở nên nghiêm trọng Mặc dù chắc chắn có những thách thức, nhưng
Trang 34Facebook nhận thấy rằng lợi ích vượt xa chi phí; nó trở thành một công ty linh hoạt hơn
có thể phát triển các sản phẩm mới và phản ứng nhanh chóng với những thay đổi của thị trường Quyền truy cập vào dữ liệu đã trở thành một phần quan trọng trong thành công của Facebook và vẫn là thứ mà Facebook tích cực đầu tư vào
Tất cả các công ty web lớn đã sớm làm theo Có thể truy cập dữ liệu thông qua SQL đã trở thành một kỹ năng bắt buộc đối với những người trong các chức năng kinh doanh tại các tổ chức như Google và LinkedIn Và làn sóng vẫn chưa dừng lại với các công ty Internet tiêu dùng Các tổ chức phi lợi nhuận đang thấy những lợi ích thực sự từ việc khuyến khích truy cập vào dữ liệu của họ - đến nỗi nhiều tổ chức đang công khai
dữ liệu của họ Họ đã nhận ra rằng các chuyên gia bên ngoài tổ chức có thể đưa ra những khám phá quan trọng mà có thể đã bị bỏ lỡ Ví dụ, Ngân hàng Thế giới hiện công khai
dữ liệu của mình để các nhóm tình nguyện viên có thể cùng nhau làm sạch và giải thích
dữ liệu đó Nó nhận được nhiều giá trị đến nỗi nó đã tiến thêm một bước nữa và có một trang web đặc biệt dành riêng cho dữ liệu công khai
Tổ chức theo hướng dữ liệu làm tốt điều gì? Hầu như không có gì thú vị hơn việc được truy cập vào một tập dữ liệu mới và tưởng tượng những gì nó có thể cho bạn biết
về thế giới Các nhà khoa học dữ liệu có thể có một quy trình phương pháp và chính xác
để tiếp cận một tập dữ liệu mới, nhưng trong khi họ đang tìm kiếm rõ ràng những điều
cụ thể trong dữ liệu, họ cũng đang phát triển trực giác về độ tin cậy của tập dữ liệu và cách nó có thể được sử dụng
Tóm lại công việc của DDO làm những việc sau:
• Thu thập dữ liệu
• Đưa ra quyết định dựa trên dữ liệu chứ không phải trực giác
• Sử dụng dữ liệu để thúc đẩy các ứng dụng
Mô hình tham chiếu cho cho giải pháp tổ chức theo hướng dữ liệu
Mục đích của mô hình tham chiếu
• Cung cấp một framework cho: việc hiểu nhu cầu của bạn, so sánh các giải pháp
• Nó chưa hoàn chỉnh nhưng đưa ra được cách tiếp cận hiểu về các hệ thống phân tích dữ liệu
Trang 35Hình 2 3: Cấu trúc truyền thống
Hình 2 4: Cách tiếp cận dữ liệu lớn
2.2 Giải pháp cấu trúc lưu trữ dữ liệu
Phần mềm lưu trữ dữ liệu (SDS) là một chương trình máy tính quản lý tài nguyên
và chức năng lưu trữ dữ liệu và không phụ thuộc vào phần cứng lưu trữ vật lý bên dưới Mọi người cho rằng bất kỳ sản phẩm lưu trữ dữ liệu nào cũng có thể được mô tả là do phần mềm định nghĩa, vì tất cả các sản phẩm lưu trữ đều yêu cầu phần mềm để quản lý phần cứng cơ bản và kiểm soát các tác vụ liên quan đến lưu trữ Tuy nhiên, thuật ngữ tiếp thị lưu trữ do phần mềm xác định thường được kết hợp với các sản phẩm phần mềm được thiết kế để chạy trên phần cứng máy chủ hàng hóa với bộ xử lý Intel x86 và cho phép tiết kiệm chi phí trên mạng khu vực lưu trữ truyền thống (SAN) và các hệ thống lưu trữ gắn liền với mạng (NAS) kết hợp chặt chẽ giữa phần mềm và phần cứng
Trang 36Không giống như các hệ thống SAN và NAS nguyên khối, các sản phẩm lưu trữ được xác định bằng phần mềm cho phép người dùng nâng cấp phần mềm riêng biệt với phần cứng Các đặc điểm chung của các sản phẩm SDS bao gồm khả năng tổng hợp tài nguyên lưu trữ, mở rộng quy mô hệ thống trên một cụm máy chủ, quản lý nhóm lưu trữ được chia sẻ và các dịch vụ lưu trữ thông qua một giao diện quản trị duy nhất và thiết lập các chính sách để kiểm soát các tính năng và chức năng lưu trữ
Các yếu tố góp phần vào sự gia tăng các sản phẩm SDS bao gồm sự phát triển bùng nổ của dữ liệu phi cấu trúc, tạo ra nhu cầu lớn hơn đối với kiến trúc lưu trữ mở rộng; sự sẵn có của phần cứng máy chủ hiệu suất cao với bộ xử lý đa lõi; sự chấp nhận chung của ảo hóa trong máy chủ, máy tính để bàn, ứng dụng và mạng; và sự phổ biến của các công nghệ đám mây
Các trường hợp sử dụng cho lưu trữ do phần mềm xác định khác nhau tùy theo loại sản phẩm Ví dụ: các trường hợp sử dụng phổ biến cho SDS đối tượng và tệp mở rộng bao gồm các ứng dụng tạo ra lượng dữ liệu phi cấu trúc đáng kể, chẳng hạn như phân tích dữ liệu, hệ gen và internet vạn vật Khối mở rộng quy mô SDS có thể nhắm mục tiêu khối lượng công việc hiệu suất cao hơn chẳng hạn như cơ sở dữ liệu Nhiều loại SDS có thể hấp dẫn đối với môi trường DevOps yêu cầu cung cấp bộ nhớ linh hoạt cho các ứng dụng mới Lưu trữ do phần mềm xác định là một phần của xu hướng ngành lớn hơn, bao gồm mạng do phần mềm xác định (SDN), cơ sở hạ tầng do phần mềm xác định và trung tâm dữ liệu do phần mềm xác định Có 3 kiến trúc cốt lõi mà hệ thống lưu trữ dữ liệu sử dụng để cấu trúc dữ liệu được lưu trữ
a Lưu trữ tệp
Các giải pháp lưu trữ dữ liệu dựa trên tệp là một cách tiếp cận cũ để lưu trữ dữ liệu chỉ đơn giản là đặt tên tệp, gắn thẻ chúng bằng siêu dữ liệu, sau đó sắp xếp các tệp được gắn thẻ vào các thư mục trong thư mục và thư mục con Các tệp này tập trung, có thể truy cập và được đặt tên bằng cách sử dụng các quy ước đặt tên tiêu chuẩn để thúc đẩy tổ chức dễ dàng Các giải pháp lưu trữ dựa trên tệp cũng có thể tương tác với các công cụ lưu trữ dữ liệu NAS để chia sẻ tệp cục bộ thuận tiện
Các công cụ lưu trữ dữ liệu dựa trên tệp cho phép chia sẻ tệp một cách đơn giản, lưu trữ cục bộ với các tùy chọn khả năng mở rộng và sử dụng các công nghệ ổ đĩa khác nhau
để bảo vệ dữ liệu kinh doanh quan trọng tất cả đều nằm trong ngân sách có thể quản lý được Lỗi chính của lưu trữ dựa trên tệp là hệ thống phân cấp của nó, xử lý tốt lượng dữ liệu nhỏ nhưng không thể cung cấp hỗ trợ tìm kiếm có thể mở rộng Do đó khi càng tích lũy nhiều tệp, việc tìm kiếm thông tin cụ thể càng trở nên khó khăn hơn
b Lưu trữ khối
Hệ thống quản lý lưu trữ dữ liệu khối thu thập khối lượng lưu trữ thô, chứa các tệp được chia thành các phần dữ liệu có kích thước bằng nhau Các khối lượng này được quản lý bởi một nền tảng hoạt động dựa trên máy chủ, có nghĩa là chúng hoạt động
Trang 37tương tự như một hệ điều hành riêng lẻ do đó, các giải pháp lưu trữ khối thường sử dụng các công cụ của bên thứ ba để quản lý và sao lưu dữ liệu quan trọng Không giống như các hệ thống lưu trữ dựa trên tệp, phần mềm quản lý lưu trữ dữ liệu khối tự động phân
bổ dữ liệu và chỉ định vị trí của nó trong khối
Các khối lượng được tạo bằng phần mềm lưu trữ khối hoạt động giống như ổ cứng, điều này làm cho giải pháp lưu trữ dữ liệu này trở nên hữu ích rộng rãi Bạn có thể bật lưu trữ khối trên cơ sở dữ liệu và máy chủ email của mình (ví dụ: lưu trữ khối trên thực tế là đối với Microsoft Exchange) và kết hợp nhiều đĩa thành khối lượng độc lập để xây dựng nền tảng cho việc sắp xếp RAID Vì lý do này, kiến trúc lưu trữ khối thường được triển khai với các hệ thống lưu trữ dữ liệu SAN
Thuận lợi và khó khăn của lưu trữ khối
Một trong những ưu điểm đáng chú ý nhất của lưu trữ khối là khả năng truy cập
và lấy dữ liệu có cấu trúc từ cơ sở dữ liệu một cách hiệu quả, thường qua kết nối mạng vùng lưu trữ (SAN) sử dụng các loại giao thức khác nhau như iSCSI và Fibre Channel, Direct Attached Storage (DAS ) Lưu trữ khối rất tốt cho dữ liệu có cấu trúc do cách các giải pháp lưu trữ cũ thực hiện việc nhớ lại siêu dữ liệu của chúng về vị trí của một khối nhất định trên ổ cứng, sử dụng cái được gọi là ghi nhật ký Hệ thống ghi nhật ký theo dõi tất cả dữ liệu đã từng được ghi theo thời gian Vì vậy, từ góc độ cơ sở dữ liệu có cấu trúc, nếu đang đọc và truy cập dữ liệu theo cách đó thì rất nhanh
Bởi vì lưu trữ khối sử dụng hệ thống ghi nhật ký theo thứ tự thời gian này, bổ sung ngày càng nhiều dữ liệu theo thời gian và từng khối dữ liệu riêng lẻ có thể sống độc lập trên nhiều môi trường, các yêu cầu dữ liệu được phục vụ nhanh chóng bằng cách truy xuất và tập hợp lại các khối từ đường dẫn hiệu quả nhất có thể Mặc dù lưu trữ khối thể hiện một phương pháp hiệu quả và đáng tin cậy để quản lý dữ liệu có cấu trúc, nhưng đáng tiếc là nó ít khả dụng hơn rất nhiều để quản lý dữ liệu phi cấu trúc Xem xét lưu trữ khối rất hạn chế về khả năng xử lý siêu dữ liệu, các ứng dụng được xây dựng xung quanh dữ liệu phi cấu trúc vốn dĩ sẽ phải vật lộn với các hoạt động dựa vào siêu dữ liệu bao gồm các chức năng tìm kiếm và truy xuất cơ bản
c Lưu trữ đối tượng (Object storage –OS)
Lưu trữ đối tượng, còn được gọi là lưu trữ dựa trên đối tượng, là một kiến trúc lưu trữ dữ liệu máy tính được thiết kế để xử lý một lượng lớn dữ liệu phi cấu trúc Không giống như các kiến trúc khác, nó chỉ định dữ liệu là các đơn vị riêng biệt, đi kèm với siêu dữ liệu và một số nhận dạng duy nhất có thể được sử dụng để định vị và truy cập từng đơn vị dữ liệu
Các đơn vị, hoặc các đối tượng có thể được lưu trữ tại chỗ, nhưng thường được lưu trữ trên đám mây, giúp chúng có thể dễ dàng truy cập từ mọi nơi Do khả năng mở rộng quy mô của bộ lưu trữ đối tượng, có một số giới hạn đối với khả năng mở rộng của
Trang 38nó và việc lưu trữ khối lượng dữ liệu lớn sẽ ít tốn kém hơn so với các tùy chọn khác, chẳng hạn như lưu trữ khối
Phần lớn dữ liệu ngày nay không có cấu trúc: email, tệp phương tiện và âm thanh, trang web, dữ liệu cảm biến và các loại nội dung kỹ thuật số khác không dễ dàng phù hợp với cơ sở dữ liệu truyền thống Do đó, việc tìm kiếm các cách hiệu quả và hợp lý
để lưu trữ và quản lý nó đã trở thành một vấn đề nan giải Càng ngày, lưu trữ đối tượng càng trở thành phương pháp ưa thích để lưu trữ nội dung tĩnh, cung cấp dữ liệu và các bản sao lưu
Lưu trữ đối tượng là một kiến trúc lưu trữ dữ liệu để lưu trữ dữ liệu phi cấu trúc, chia dữ liệu thành các đơn vị, đối tượng và lưu trữ chúng trong một môi trường dữ liệu, siêu dữ liệu và một số nhận dạng duy nhất và các ứng dụng có thể sử dụng để dễ dàng truy cập và truy xuất
Với tính năng lưu trữ đối tượng, các khối dữ liệu của tệp được lưu giữ cùng nhau như một đối tượng, cùng với siêu dữ liệu có liên quan và số nhận dạng tùy chỉnh, và được đặt trong môi trường dữ liệu phẳng được gọi là nhóm lưu trữ
Khi muốn truy cập dữ liệu, hệ thống lưu trữ đối tượng sẽ sử dụng mã định danh duy nhất và siêu dữ liệu để tìm đối tượng, chẳng hạn như tệp hình ảnh hoặc âm thanh
Có thể tùy chỉnh siêu dữ liệu, cho phép thêm nhiều ngữ cảnh hữu ích cho các mục đích khác, chẳng hạn như truy xuất để phân tích dữ liệu
Có thể định vị và truy cập các đối tượng bằng cách sử dụng RESTful API, HTTP
và HTTPS để truy vấn siêu dữ liệu đối tượng Vì các đối tượng được lưu trữ trong một nhóm lưu trữ toàn cầu nên việc xác định chính xác dữ liệu sẽ nhanh chóng và dễ dàng Thêm vào đó, môi trường phẳng cho phép mở rộng quy mô nhanh chóng, ngay cả đối với tải trọng petabyte hoặc exabyte Các nhóm lưu trữ có thể được trải rộng trên nhiều thiết bị lưu trữ đối tượng và vị trí địa lý, cho phép mở rộng quy mô không giới hạn Do
đó chỉ cần thêm nhiều thiết bị lưu trữ hơn vào nhóm khi dữ liệu phát triển
Những lợi ích của lưu trữ đối tượng, như tính linh hoạt và khả năng mở rộng của
nó, đã làm cho nó trở thành một lựa chọn lý tưởng để quản lý dữ liệu phi cấu trúc trong
cơ sở hạ tầng đám mây Vậy, lưu trữ đối tượng trong đám mây là gì? Nó lưu trữ dựa trên đối tượng như một dịch vụ đám mây theo yêu cầu Trên thực tế, lưu trữ đối tượng đám mây là định dạng lưu trữ chính của hầu hết các nhà cung cấp dịch vụ đám mây lớn
Trang 39Hình 2 5: Lưu trữ đối tượng
Lưu trữ đối tượng so với lưu trữ tệp so với lưu trữ khối
Theo thời gian, nhu cầu lưu trữ dữ liệu của thế giới đã phát triển với sự ra đời của Internet và danh sách các loại và nguồn dữ liệu ngày càng mở rộng Lưu trữ tệp truyền thống và lưu trữ khối không phù hợp để xử lý lượng dữ liệu khổng lồ đang được tạo, đặc biệt là dữ liệu phi cấu trúc không được tạo ra để phù hợp với các phương pháp lưu trữ dữ liệu có cấu trúc
• Lưu trữ tệp: Lưu trữ tệp lưu trữ và sắp xếp dữ liệu thành các thư mục, tương tự như các tệp vật lý mà có thể lưu trữ trong hệ thống lưu trữ giấy trong văn phòng Nếu cần thông tin từ một tệp, thì cần biết phòng, tủ, ngăn kéo và thư mục nào chứa tài liệu cụ thể đó Cấu trúc lưu trữ phân cấp tương tự này được sử dụng để lưu trữ tệp, nơi tệp được đặt tên, gắn thẻ siêu dữ liệu và sau đó được đặt trong các thư mục Để tìm một phần dữ liệu, cần biết đường dẫn chính xác để tìm nó
Trang 40Theo thời gian, việc tìm kiếm và truy xuất tệp dữ liệu có thể trở nên tốn thời gian khi số lượng tệp tăng lên Mặc dù khả năng mở rộng hạn chế hơn, nhưng đây là một cách đơn giản để lưu trữ một lượng nhỏ của bất kỳ loại dữ liệu nào và giúp nhiều người dùng có thể truy cập cùng một lúc
• Lưu trữ khối: Lưu trữ khối cải thiện hiệu suất của lưu trữ tệp, chia nhỏ tệp thành các khối riêng biệt và lưu trữ chúng riêng biệt Hệ thống lưu trữ khối sẽ chỉ định một mã định danh duy nhất cho từng đoạn dữ liệu thô, sau đó có thể được sử dụng để tập hợp chúng lại thành tệp hoàn chỉnh khi bạn cần truy cập Lưu trữ khối không yêu cầu một đường dẫn duy nhất đến dữ liệu, vì vậy có thể lưu trữ ở bất kỳ đâu thuận tiện nhất mà vẫn truy xuất nhanh chóng khi cần Lưu trữ khối hoạt động tốt cho các tổ chức làm việc với lượng lớn dữ liệu giao dịch hoặc các ứng dụng quan trọng cần độ trễ tối thiểu và hiệu suất nhất quán Tuy nhiên, nó
có thể tốn kém, không cung cấp khả năng siêu dữ liệu và yêu cầu hệ điều hành
để truy cập các khối
• Lưu trữ đối tượng: Lưu trữ đối tượng, như đã thảo luận trước đó, lưu tệp trong môi trường dữ liệu phẳng hoặc nhóm lưu trữ, dưới dạng một đối tượng độc lập chứa tất cả dữ liệu, số nhận dạng duy nhất và siêu dữ liệu chi tiết chứa thông tin
về dữ liệu, quyền, chính sách và các khoản dự phòng khác Lưu trữ đối tượng hoạt động tốt nhất đối với lưu trữ tĩnh, đặc biệt là đối với dữ liệu phi cấu trúc, nơi ghi dữ liệu một lần nhưng có thể cần đọc nhiều lần Mặc dù lưu trữ đối tượng loại
bỏ nhu cầu về thư mục, thư mục và tổ chức phân cấp phức tạp khác, nhưng đây không phải là giải pháp tốt cho dữ liệu động thay đổi liên tục vì bạn sẽ cần phải viết lại toàn bộ đối tượng để sửa đổi nó Trong một số trường hợp, lưu trữ tệp và lưu trữ khối vẫn có thể phù hợp với nhu cầu của bạn tùy thuộc vào yêu cầu về tốc
độ và hiệu suất của bạn
Lợi ích của lưu trữ đối tượng
• Khả năng mở rộng lớn: Dễ dàng mở rộng quy mô kiến trúc phẳng của lưu trữ đối tượng mà không bị các hạn chế như lưu trữ tệp hoặc khối Kích thước lưu trữ đối tượng về cơ bản là vô hạn, vì vậy dữ liệu có thể mở rộng đến exabyte chỉ bằng cách thêm thiết bị mới
• Giảm độ phức tạp: Lưu trữ đối tượng không có thư mục, loại bỏ phần lớn sự phức tạp đi kèm với hệ thống phân cấp Việc thiếu các cây hoặc phân vùng phức tạp làm cho việc truy xuất tệp dễ dàng hơn vì bạn không cần biết vị trí chính xác
• Khả năng tìm kiếm: Siêu dữ liệu là một phần của các đối tượng, giúp bạn dễ dàng tìm kiếm và điều hướng mà không cần ứng dụng riêng biệt Nó cũng linh hoạt hơn và có thể tùy chỉnh Bạn có thể gắn thẻ các đối tượng bằng các thuộc tính và thông tin, chẳng hạn như mức tiêu thụ, chi phí và các chính sách để xóa, lưu giữ
và phân cấp tự động
• Khả năng phục hồi: Lưu trữ đối tượng có thể tự động sao chép dữ liệu và lưu trữ trên nhiều thiết bị và vị trí địa lý Điều này có thể giúp bảo vệ khỏi sự cố mất