CHƯƠNG 1. CÁC KHÁI NIỆM CƠ BẢN 1. Khái niệm chung về dữ liệu lớn Bộ dữ liệu (Data sets) Nhiều tập dữ liệu hay nhiều nhóm dữ liệu có liên quan đến nhau được gọi là bộ dữ liệu [5]. Trong đó mỗi nhóm hoặc tập con dữ liệu đó có cùng thuộc tính giống nhau.
Một số ví dụ về bộ dữ liệu ở 03 định dạng khác nhau: + Dữ liệu Tweets được lưu giữ trong tập tin phẳng (flat file). + Trích xuất các hàng từ bảng dữ liệu (database table) được lưu giữ trong tệp định dạng CSV. Bộ sưu tập ảnh được lưu trong thư mục. + Các thông tin quan sát về lịch sử thời tiết được lưu dưới dạng XML Đặc điểm dữ liệu lớn 5V (Volume, Velocity, Variety, Veracity, Value) Dữ liệu lớn BigData có 05 đặc điểm hay còn gọi là 5V: Volume-Khối lượng lớn; Velocity-Tốc độ; Variety-Tính đa dạng; Veracity-Tính xác thực và Value- Mang lại giá trị.
Hầu hết các đặc điểm về dữ liệu lớn được Doug Laney xác định vào năm 2001 khi đăng bài viết về dữ liệu doanh nghiệp (Volume, Velocity, Variety). Tính xác thực (Veracity) được bổ sung để tính tỷ lệ signal-to-noise khi so sánh dữ liệu phi cấu trúc với dữ liệu có cấu trúc. Cuối cùng, Value- để xác định các kết quả phân tích dữ liệu lớn mang lại giá trị gì? [8]. Phân biệt các loại dữ liệu Dữ liệu có cấu trúc (Structured Data): Dữ liệu có cấu trúc phù hợp với mô hình dữ liệu được lưu trữ ở dạng bảng.
Chúng được sử dụng để mô tả mối quan hệ giữa các thực thể khác nhau và do đó thường được lưu trữ trong cơ sở dữ liệu quan hệ. Dữ liệu có cấu trúc thường được tạo bởi các ứng dụng doanh nghiệp và hệ thống thông tin như hệ thống ERP và CRM. Ví dụ về loại dữ liệu này bao gồm các giao dịch ngân hàng, hóa đơn và hồ sơ khách hàng. Dữ liệu phi cấu trúc (Unstructured Data): Dữ liệu không phù hợp với mô hình dữ liệu hoặc lược đồ dữ liệu được gọi là dữ liệu phi cấu trúc.
Người ta ước tính rằng dữ liệu phi cấu trúc chiếm tới 80% dữ liệu trong bất kỳ doanh nghiệp nào. Ngày nay, dữ liệu phi cấu trúc có tốc độ tăng trưởng nhanh hơn dữ liệu có cấu trúc. Một số loại dữ liệu phi cấu trúc phổ biến như dữ liệu có dạng văn bản (text) hoặc nhị phân (binary). 5 Luận văn thạc sĩ Công nghệ thông tin Dữ liệu phi cấu trúc không thể được xử lý hoặc truy vấn trực tiếp bằng cơ sở dữ liệu quan hệ SQL.
Nếu muốn lưu trữ dữ liệu phi cấu trúc trong cơ sở dữ liệu quan hệ, thì phải được lưu trữ trong một bảng dưới dạng BLOB (Binary Large Object). Ngoài ra, cơ sở dữ liệu NonSQL có thể được sử dụng để lưu trữ dữ liệu phi cấu trúc. Dữ liệu bán cấu trúc (Semi-structured Data): Dữ liệu bán cấu trúc thường là dữ liệu có cấu trúc nhưng không đồng nhất. Thay vào đó, dữ liệu bán cấu trúc có dạng phân cấp (hierarchical) hoặc đồ thị (graphbased).
Loại dữ liệu này thường được lưu trữ trong các tệp có chứa văn bản. Ví dụ như các tệp XML và JSON là các dạng phổ biến của dữ liệu bán cấu trúc. Do tính chất văn bản của dữ liệu này và sự phù hợp của nó với một mức độ cấu trúc nào đó, nó dễ dàng khai thác hơn dữ liệu phi cấu trúc. Các nguồn phổ biến của dữ liệu bán cấu trúc bao gồm các tệp trao đổi dữ liệu điện tử (EDI), bảng tính, nguồn dữ liệu từ các bộ cảm biến.
Dữ liệu bán cấu trúc thường có các yêu cầu lưu trữ và xử lý trước đặc biệt, đặc biệt nếu định dạng cơ bản không dựa trên văn bản. Một ví dụ về tiền xử lý dữ liệu bán cấu trúc sẽ là xác thực tệp XML để đảm bảo rằng nó tuân thủ theo lược đồ của nó. Siêu dữ liệu (Metadata): Siêu dữ liệu cung cấp thông tin về các đặc điểm và cấu trúc của bộ dữ liệu. Loại dữ liệu này chủ yếu được tạo bằng máy và có thể được thêm vào dữ liệu.
Việc theo dõi siêu dữ liệu rất quan trọng đối với việc xử lý, lưu trữ và phân tích dữ liệu lớn vì nó cung cấp thông tin về phả hệ của dữ liệu và nguồn gốc của nó trong quá trình xử lý. Ví dụ về siêu dữ liệu bao gồm: Thẻ XML cung cấp ngày xác thực và ngày tạo tài liệu; Các thuộc tính cung cấp kích thước tệp và độ phân giải của ảnh kỹ thuật số; Các giải pháp dữ liệu lớn thường dựa trên siêu dữ liệu, đặc biệt khi xử lý dữ liệu bán cấu trúc và không cấu trúc [5]. Các khái niệm lưu trữ dữ liệu lớn Các dữ liệu thu được từ các nguồn bên ngoài thường không ở định dạng hoặc cấu trúc có thể xử lý ngay được. Để khắc phục được tình trạng này, việc sắp xếp lưu trữ dữ liệu là vô cùng cần thiết.
Xử lý sắp xếp lưu trữ dữ liệu bao gồm các bước: Lọc dữ liệu, làm sạch dữ liệu và chuẩn bị dữ liệu. Do nhu cầu lưu trữ dữ liệu trong BigData, nên có nhiều công nghệ tiên tiến được tạo ra để hướng tới việc lưu trữ hiệu quả và có khả năng mở rộng cao [5]. 6 Luận văn thạc sĩ Công nghệ thông tin Cụm dữ liệu (Clusters) Trong điện toán, một cụm là một tập hợp các máy chủ hoặc các nút được liên kết chặt chẽ. Các máy chủ này thường có cùng phần cứng và được kết nối với nhau thông qua một mạng để hoạt động như một đơn vị lưu trữ và xử lý dữ liệu.
Mỗi nút trong cụm có các tài nguyên riêng biệt, chẳng hạn như bộ nhớ, bộ xử lý và ổ cứng. Một cụm có thể thực thi một tác vụ bằng cách chia nó thành các phần nhỏ và phân phối thực thi của chúng trên các máy tính khác nhau thuộc cụm. Hệ thống lưu trữ file, hệ thống lưu trữ file phân tán Hệ thống lưu trữ file (gọi tắt là hệ thống file) là hệ thống sử dụng phương pháp lưu trữ và sắp xếp dữ liệu trên thiết bị lưu trữ (ổ đĩa flash, DVD, ổ cứng…). File (tệp) là một đơn vị lưu trữ dữ liệu nhỏ nhất được quản lý bởi hệ thống file.
Về mặt logic, hệ thống file có cấu trúc như một cây thư mục. Các hệ điều hành sử dụng hệ thống file để lưu trữ và truy xuất dữ liệu cho các ứng dụng. Mỗi một hệ điều hành có thể có một hoặc nhiều hệ thống file, ví dụ hệ thống file NTFS trên hệ điều hành Microsoft Windows và hệ thống file EXT trên Linux. Một hệ thống lưu trữ file phân tán (hệ thống file phân tán) là một hệ thống file có thể lưu trữ các file (tệp) có dung lượng lớn được phân tán đều trên các nút của cụm dữ liệu.
Nó cho phép các file được truy cập từ nhiều vị trí khác nhau. Ví dụ, hệ thống file phân tán của Google (GFS) và hệ thống file phân tán Hadoop (HDFS) [5]. Cơ sở dữ liệu không quan hệ (Non-SQL) Cơ sở dữ liệu Non-SQL là CSDL không quan hệ, có khả năng mở rộng cao, tính chịu lỗi và được thiết kế đặc biệt cho dữ liệu không có cấu trúc hoặc bán cấu trúc. CSDL Non-SQL này thường được cung cấp giao diện truy vấn API và có thể được gọi từ bên trong ứng dụng.
CSDL Non-SQL còn có khả năng hỗ trợ các truy vấn có cấu trúc (SQL). CSDL Non-SQL có thể được phân thành bốn loại dựa trên cách chúng lưu trữ dữ liệu, như trong Hình 1.4: Dạng key-value (khóa-giá trị); Dạng document (tài liệu); Dạng column-family; Dạng graph (đồ thị) [5]. 7 Luận văn thạc sĩ Công nghệ thông tin Hình 1. Một ví dụ về lưu trữ dạng Key-value.
Một ví dụ về lưu trữ dạng Document. Một ví dụ về lưu trữ dạng Column-family. Một ví dụ về lưu trữ dạng Graph. Phân đoạn dữ liệu (Sharding) Phân đoạn dữ liệu là quá trình phân vùng dữ liệu theo chiều ngang, từ một tập dữ liệu lớn thành một tập hợp các bộ dữ liệu nhỏ hơn, dễ quản lý hơn được gọi là phân đoạn.
Các phân đoạn được phân phối trên nhiều nút, trong đó mỗi một nút là máy chủ. Mỗi phân đoạn được lưu trữ trên một nút riêng biệt và mỗi nút chỉ chịu trách nhiệm cho dữ liệu được lưu trữ trên đó. Mỗi phân đoạn có cùng một lược đồ (schema) và tất cả các phân đoạn đều đại diện cho một bộ dữ liệu hoàn chỉnh [5]. Việc xử lý phân đoạn dữ liệu thường trong suốt với các máy client, phân đoạn dữ liệu cho phép phân phối tải xử lý trên nhiều nút (node) để có khả năng mở rộng lưu trữ dữ liệu theo chiều ngang.
Đây là phương pháp để tăng năng lực của hệ thống 8 Luận văn thạc sĩ Công nghệ thông tin bằng cách thêm các tài nguyên (node). Khi đó mỗi một node chỉ chịu trách nhiệm cho một phần của toàn bộ tập dữ liệu, do vậy thời gian đọc/ghi được cải thiện rất nhiều. Một lợi ích khác của phân đoạn dữ liệu là khả năng chịu lỗi. Trong trường hợp một node bị lỗi, chỉ có dữ liệu trên node đó bị ảnh hưởng [5].
Sao lưu dữ liệu (Repilication) Sao lưu dữ liệu là quá trình tạo ra nhiều bản sao cho một tập dữ liệu nằm ở trên nhiều node. Sao lưu dữ liệu cung cấp khả năng mở rộng và tính khả dụng của dữ liệu do được lưu trên nhiều node khác nhau. Khả năng chịu được lỗi cũng được cải thiện do có dự phòng dữ liệu – dữ liệu không bị mất đi khi một node riêng lẻ bị lỗi. Hiện nay, có 02 mô hình sao lưu dữ liệu là sao lưu chủ – tớ (master-slave) và sao lưu ngang hàng (peer-to-peer) [5].
Nguyên lý CAP (Consistency, Availability, and Partition tolerance) Nguyên lý CAP [5] còn được gọi là nguyên lý Brewer, thể hiện với ba ràng buộc liên quan đến các hệ thống cơ sở dữ liệu phân tán đó là tính nhất quán (C-Consistency), độ khả dụng (Availability) và ngưỡng phân vùng (Partition tolerance). Nguyên lý nói rằng một hệ thống cơ sở dữ liệu phân tán, chạy trên một cụm, chỉ có thể đáp Hình 1. Sơ đồ Venn - định lý CAP. ứng hai trong ba thuộc tính sau: + Tính nhất quán:Việc đọc từ bất kỳ nút nào đều có dữ liệu đầu ra như nhau + Tính khả dụng: Yêu cầu đọc/ghi sẽ luôn được xác nhận dưới hai dạng: thành công hay thất bại.
+ Ngưỡng phân vùng: Hệ thống cơ sở dữ liệu có thể chịu đựng được mất điện liên lạc chia cụm thành nhiều silo và vẫn có thể phục vụ các yêu cầu đọc/ghi.