Data Compression là gì? Data Compression hoạt động như thế nào?
BÀI LIÊN QUAN
Data stewardship là gì? Lợi ích của việc quản lý dữ liệuData splitting là gì? Tỷ lệ Train/Dev/Test phù hợp nhấtData science platform là gì? Giá trị của Data science platformData compression là gì?
Data Compression hay nén dữ liệu là hành động hoặc quá trình giảm kích thước của tệp máy tính. Thông qua một thuật toán hoặc một bộ quy tắc để thực hiện một thao tác, máy tính có thể xác định các cách để rút ngắn các chuỗi dữ liệu dài và sau đó tập hợp lại chúng ở dạng dễ nhận biết khi truy xuất. Kết quả là một tệp sử dụng ít bit hoặc đơn vị thông tin hơn so với tệp gốc. Có hai kiểu nén dữ liệu:
Nén mất dữ liệu
Nén mất dữ liệu làm giảm kích thước tệp bằng cách loại bỏ các bit thông tin không cần thiết. Loại nén này được sử dụng phổ biến nhất trên các tệp hình ảnh, video và âm thanh, nơi không yêu cầu phải thể hiện hoàn hảo nguồn dữ liệu.
Ví dụ: tệp âm thanh MP3 không chứa tất cả thông tin âm thanh từ bản ghi gốc. Thay vào đó, nén mất dữ liệu MP3 sẽ loại bỏ âm thanh mà con người không thể nghe thấy. Vì tai người bình thường sẽ không nhận thấy sự khác biệt này nên kết quả là tệp nhỏ hơn nhưng không ảnh hưởng nhiều đến người sử dụng.
Nhược điểm của phương pháp này là gì? Tệp được nén càng nặng bằng phương pháp nén mất dữ liệu thì chất lượng càng giảm rõ rệt. Ngoài ra, nén mất dữ liệu không hoạt động tốt với các tệp trong đó tất cả dữ liệu đều quan trọng (ví dụ: nén bảng tính sẽ mang lại kết quả không sử dụng được).
Nén không mất dữ liệu
Nén không mất dữ liệu làm giảm kích thước tệp mà không loại bỏ bất kỳ bit thông tin nào. Thay vào đó, định dạng này hoạt động bằng cách loại bỏ phần dư thừa trong dữ liệu để giảm kích thước tệp tổng thể. Với nén không mất dữ liệu
lossless, có thể tái tạo lại tập tin gốc một cách hoàn hảo.
Ví dụ: định dạng nén không mất dữ liệu phổ biến nhất (ZIP) thường được sử dụng cho các tệp chương trình trong Windows vì nó lưu giữ tất cả thông tin gốc. Giải nén tệp (giải nén) tạo ra một chương trình thực thi mà nếu không sẽ vô dụng với mất dữ liệu.
Các định dạng nén dữ liệu lossless phổ biến bao gồm PNG cho hình ảnh, FLAC cho âm thanh và ZIP. Các định dạng không mất dữ liệu cho video rất hiếm, vì các tệp nguồn này sẽ chiếm một lượng lớn dung lượng.
Cách data compression hoạt động
Đối với những người chưa quen, việc nén dữ liệu giống như một loại ma thuật nào đó. Bạn chỉ cần nhấn một vài nút và thì bạn đã có tệp .zip hoặc .rar nhỏ hơn đáng kể so với (các) tệp bạn đã bắt đầu. Làm thế nào để máy tính “biết” cách đóng gói tất cả dữ liệu đó mà không làm hỏng bất kỳ thứ gì?
Đó là nơi các thuật toán phát huy tác dụng. Mỗi kỹ thuật nén dữ liệu có một bộ quy tắc cụ thể. Ví dụ: khi quá trình nén văn bản được bắt đầu, máy tính sẽ lấy tất cả các khoảng trống trong văn bản và gán cho chúng một byte đơn. Sau đó, nó sẽ đóng gói byte thành một chuỗi báo cho bộ giải mã biết nơi đặt mọi thứ trở lại.
Nén hình ảnh hoạt động tương tự. Tùy thuộc vào thuật toán, bạn có thể nhận được tệp nhỏ hơn với chất lượng hình ảnh rõ ràng kém hơn hoặc tệp nào đó có kích thước gần giống nhau và trông khá giống với tệp gốc.
Nén hoạt động bằng cách loại bỏ dữ liệu không cần thiết hoặc thu thập các byte giống nhau hoặc tương tự và cung cấp cho chúng một giá trị mới, do đó cho phép máy tính tái tạo lại dữ liệu gốc.
Tại sao nén dữ liệu lại quan trọng?
Nén dữ liệu giảm thiểu dung lượng mà các tệp chiếm trên ổ cứng và giảm thời gian cần thiết để chuyển hoặc tải chúng xuống. Việc giảm không gian và thời gian này có thể dẫn đến tiết kiệm chi phí đáng kể. Ví dụ: các tổ chức lưu trữ lượng lớn dữ liệu, chẳng hạn như các tập đoàn và nhà cung cấp dịch vụ chăm sóc sức khỏe, có thể tiết kiệm chi phí lưu trữ dữ liệu vì tính năng nén cho phép họ lưu trữ nhiều tệp hơn với dung lượng ít hơn. Ngoài ra, vì các tệp nén mất ít thời gian hơn để truyền qua internet nên các tổ chức như vậy ít cần đầu tư vào việc nâng cấp băng thông tốn kém hơn.
Đối với một số tổ chức khác, nén cho phép họ cung cấp dịch vụ tối ưu với sự thuận tiện cao nhất. Chẳng hạn, các nhà cung cấp dịch vụ viễn thông xử lý một lượng lớn dữ liệu âm thanh và video. Nén cho phép họ cung cấp dịch vụ cho một số lượng lớn khách hàng với sự thỏa hiệp tối thiểu về chất lượng thính giác hoặc hình ảnh.
Phương pháp nén dữ liệu
Sau đây là một số phương pháp nén dữ liệu phổ biến:
Lempel–Ziv
Nén Lempel–Ziv là một thuật toán nén không mất dữ liệu tìm các ký tự lặp lại trong tập dữ liệu và thay thế chúng bằng mã thông báo hoặc chuỗi rút gọn. Ví dụ: trong một tin nhắn có nội dung "AAABABAAABAA", thuật toán sẽ quét tin nhắn, dừng ở mọi chuỗi ký tự lạ và chỉ định một mã thông báo. Chuỗi không quen thuộc đầu tiên sẽ là chữ "A" duy nhất, có thể nhận được mã thông báo là "1". Tiếp theo sẽ là "AA", sẽ là "2." "BA" sẽ là chuỗi thứ ba, nhận được "3." Các trình tự sau đó sẽ quen thuộc. Thuật toán có thể chuyển đổi tin nhắn gốc thành "1233231", mức nén gần 60%.
Mã hóa độ dài chạy
Mã hóa độ dài chạy là một phương pháp nén không mất dữ liệu, tận dụng lợi thế của các chuỗi thường được lặp lại hoặc chạy dữ liệu lặp lại. Ví dụ: nếu một tệp hình ảnh bao gồm một chuỗi 10 pixel liên tiếp cùng màu, thì thuật toán có thể chèn một mốc dữ liệu báo cáo có 10 pixel như vậy và sau đó xóa mọi dữ liệu dư thừa. Mặc dù thuật toán thêm một số dữ liệu, nhưng nó lại loại bỏ nhiều dữ liệu hơn, làm giảm kích thước tổng thể của tệp.
Mã hóa từ điển
Mã hóa từ điển là một phương pháp không mất dữ liệu khác giúp chuyển đổi dữ liệu gốc thành mã số viết tắt bằng cách sử dụng các bit 0 và 1, sau đó sử dụng "từ điển" làm tham chiếu để chuyển đổi mã trở lại dạng dễ nhận biết. Điều này có thể so sánh với việc một nhà hàng sử dụng các con số để thể hiện các cách kết hợp thực phẩm khác nhau trên thực đơn của họ. Ví dụ: số một có thể đại diện cho "gà rán với khoai tây và đậu Hà Lan." Mô tả của mục menu chiếm 36 ký tự, nhưng mã số chỉ có một. Ở đây, từ điển là kiến thức về một số nhất định đại diện cho một món ăn cụ thể.
Đối với các tệp máy tính, hãy tưởng tượng một tệp hình ảnh 100 byte được tạo thành từ hai màu. Thuật toán có thể chia các byte thành các nhóm 10 và sử dụng mã ba chữ số cho mỗi màu. Mỗi nhóm 10 byte giống như một mục menu và từ điển là một chú giải liên kết từng mục với một mã. Do đó, bằng cách thay thế cứ sau 10 byte bằng một chuỗi ba chữ số, thuật toán có thể tạo ra kích thước hình ảnh nén cuối cùng chỉ 30 bit. Khi truy xuất tệp, nó có thể chuyển đổi các bit trở lại dạng ban đầu.
Mã hóa tri giác
Mã hóa tri giác là một phương pháp nén mất dữ liệu loại bỏ các phần của tệp mà hầu hết con người không thể nhận biết được. Tùy thuộc vào loại tệp, thuật toán có thể xác định phần tử nào của tệp phù hợp với mô tả này và sau đó giảm hoặc xóa sự hiện diện của nó. Ví dụ: một tệp nhạc thô có thể chứa sóng âm thanh trong phạm vi siêu âm mà con người không thể nghe thấy. Do đó, thuật toán có thể loại bỏ hoàn toàn mọi dữ liệu liên quan đến siêu âm, giảm đáng kể tổng kích thước tệp mà không làm giảm chất lượng âm thanh.
Điều tương tự cũng có thể áp dụng cho hình ảnh và video. Trước đây, thuật toán có thể giữ lại các yếu tố mà mắt người thường cảm nhận tốt, chẳng hạn như độ tương phản giữa các đối tượng, nhưng giảm các thành phần không thể nhận thấy bên trong các đối tượng, chẳng hạn như pixel có màu tương tự. Đối với trường hợp thứ hai, thuật toán có thể giảm việc truyền các pixel tĩnh giữa các khung hình, chẳng hạn như các đối tượng đứng yên.
Cách tốt nhất để nén dữ liệu
Xem xét các mẹo sau để thực hiện nén dữ liệu:
Chọn kiểu nén phù hợp
Đối với mọi tệp bạn phải nén, trước tiên hãy xác định xem tệp đó có mất dữ liệu hay không mất dữ liệu. Để quyết định sử dụng cái nào, hãy tự hỏi liệu có thể chấp nhận bất kỳ thỏa hiệp nào về chất lượng dữ liệu hay không. Như đã đề cập ở trên, một số chi tiết bị mất trong các tệp âm thanh, video và hình ảnh khó có thể nhận thấy được, do đó nén mất dữ liệu sẽ phù hợp với những điều này. Tuy nhiên, trong các tệp như tài liệu văn bản, việc mất chi tiết sẽ dễ nhận thấy, vì vậy nên chọn cách nén không mất dữ liệu.
Sử dụng đồng bộ xử lý
Đồng bộ xử lý cho phép máy tính của bạn chuyển hướng sức mạnh xử lý sang CPU phụ, giải phóng tài nguyên máy tính chính của bạn để thực hiện các hoạt động bình thường. Điều này cho phép bạn duy trì năng suất trong khi nén tệp, đây có thể là một chức năng sử dụng nhiều tài nguyên. Cân nhắc thêm một mảng cổng có thể lập trình theo trường hoặc FPGA, một vi mạch mà bạn có thể định cấu hình để hoạt động như một bộ xử lý bổ sung. Điều này đặc biệt hữu ích cho việc nén các loại dữ liệu lớn.
Xem xét sao chép dữ liệu
Chống trùng lặp dữ liệu là một quá trình loại bỏ các bản sao trong một tập dữ liệu. Nó hoạt động bằng cách so sánh các mẫu dữ liệu, xác định mẫu nào đã tồn tại trong một tập hợp được lưu trữ và thay thế các phiên bản dư thừa bằng tham chiếu hướng đến mẫu đã được lưu trữ. Do các mẫu như vậy có thể xảy ra lặp lại trong một trường hợp truyền hoặc lưu trữ dữ liệu nhất định, nên việc chống trùng lặp có thể làm giảm đáng kể lượng dữ liệu được xử lý. Do đó, nó là một sự bổ sung hữu ích cho quy trình data compression
Data Compression giúp việc lưu trữ dữ liệu ít tốn không gian hơn đồng thời gửi dữ liệu đi nhanh chóng hơn. Tuy nhiên người dùng nên nén dữ liệu theo cách phù hợp nhất để tránh mất thông tin dữ liệu quan trọng.