Hiện tượng data skew là một trong những vấn đề khó chịu nhưng phổ biến trong các hệ thống xử lý dữ liệu lớn. Nó xuất phát từ sự khác biệt giữa cách dữ liệu được phân vùng và cách dữ liệu thực sự được truy cập.
Khi làm việc với hệ thống dữ liệu lớn (big data) hoặc các hệ thống phân tán (distributed systems), một khái niệm quan trọng mà bạn cần nắm rõ là data skew (độ lệch dữ liệu). Đây không phải là một khái niệm đặc thù của AWS, nhưng lại cực kỳ quan trọng trong việc tối ưu hiệu năng khi xử lý và lưu trữ dữ liệu.
Nói một cách đơn giản, data skew là hiện tượng phân phối dữ liệu không đồng đều giữa các partition (phân vùng). Trong các hệ thống phân tán, dữ liệu thường được chia thành nhiều phân vùng để xử lý song song, từ đó tăng hiệu suất. Tuy nhiên, nếu một số phân vùng chứa nhiều dữ liệu hoặc nhận nhiều traffic hơn các phân vùng khác, thì sẽ xảy ra hiện tượng lệch – data skew.
Một cách ẩn dụ thường được dùng là “celebrity problem” (vấn đề người nổi tiếng). Ví dụ, hãy tưởng tượng bạn đang xây dựng một cơ sở dữ liệu như IMDb – nơi lưu trữ thông tin về diễn viên và phim ảnh. Nếu bạn sử dụng hashing (băm) trên actor ID
để phân phối dữ liệu thì thoạt nghe có vẻ hợp lý. Tuy nhiên, một số diễn viên như Brad Pitt sẽ có lưu lượng truy cập cao hơn rất nhiều so với những diễn viên ít tên tuổi. Kết quả là, phân vùng chứa dữ liệu về Brad Pitt sẽ bị quá tải, trong khi các phân vùng khác thì nhàn rỗi.
Non-uniform data distribution (Phân phối dữ liệu không đồng đều): Khi dữ liệu không được phân phối đều từ đầu.
Ineffective partitioning strategy (Chiến lược phân vùng kém hiệu quả): Sử dụng thuật toán băm hoặc phương pháp phân vùng không phù hợp.
Temporal skew (Lệch dữ liệu theo thời gian): Khi dữ liệu tăng mạnh theo thời gian, ví dụ như phân vùng theo tháng hoặc năm, sẽ dẫn đến phân vùng gần đây chứa nhiều dữ liệu hơn.
Data skew dẫn đến việc một số nodes (nút) trong hệ thống phải xử lý nhiều dữ liệu hơn, gây bottleneck (điểm nghẽn) và ảnh hưởng đến hiệu suất toàn hệ thống. Điều này khiến khả năng parallel processing (xử lý song song) bị suy giảm nghiêm trọng.
Mặc dù trong kỳ thi AWS bạn không cần phải nhớ tất cả các giải pháp này, nhưng việc hiểu chúng sẽ giúp bạn có cái nhìn sâu hơn khi thiết kế hệ thống:
Adaptive partitioning (Phân vùng thích ứng): Tự động điều chỉnh phân vùng dựa trên quan sát thực tế về lưu lượng và phân phối dữ liệu.
Salting (Bổ sung ngẫu nhiên): Thêm một giá trị ngẫu nhiên vào trước partition key để tăng tính ngẫu nhiên và phân phối đồng đều hơn.
Repartitioning (Tái phân vùng): Di chuyển lại dữ liệu giữa các phân vùng – nhưng cách này khá tốn kém và có thể gây gián đoạn hệ thống.
Sampling (Lấy mẫu): Dựa vào một mẫu nhỏ dữ liệu để phân tích và điều chỉnh chiến lược xử lý.
Custom partitioning (Phân vùng tùy chỉnh): Sử dụng các quy tắc đặc biệt dựa trên kiến thức domain – ví dụ như tạo riêng một phân vùng chỉ cho Brad Pitt.
Cuối cùng, điều quan trọng nhất là bạn phải monitor (giám sát) hệ thống và thiết lập alert (cảnh báo) khi phát hiện hiện tượng data skew. Với các dịch vụ của AWS, bạn có thể sử dụng CloudWatch để theo dõi các chỉ số và phát hiện sớm vấn đề.
Hiện tượng data skew là một trong những vấn đề khó chịu nhưng phổ biến trong các hệ thống xử lý dữ liệu lớn. Nó xuất phát từ sự khác biệt giữa cách dữ liệu được phân vùng và cách dữ liệu thực sự được truy cập. Nắm được bản chất của nó sẽ giúp bạn thiết kế hệ thống hiệu quả hơn, tránh được những bottleneck khó lường trong thực tế.