Big data là gì, và tại sao lại cần big data.
Big data và các ứng dụng của nó thật ra tồn tại xung quanh chúng ta đâu đó gần 20 năm nay, nhưng có lẽ nhờ trào lưu “cách mạng công nghiệp 4.0” mà ở ở big data là 1 yếu tố chính cho nên nó mới trở nên hot như ngày nay. Câu hỏi thường trực của rất nhiều người là:
– Big data là gì?
– Dữ liệu lớn thế nào thì lại gọi là big data?
– Tôi có cần big data hay không?
– Big data đóng góp gì cho tôi?
Để trả lời được 4 câu hỏi đó, chắc phải xuất bản thành 1 quyển sách. May mắn thay là đã có người xuất bản rồi và mọi người có thể tham khảo nếu cần. Tên sách là “Dữ liệu lớn – Cuộc cách mạng sẽ làm thay đổi cách chúng ta sống, làm việc và tư duy” của các tác giả “Viktor Mayer – SchÖnberger & Kenneth Cukier”
Định nghĩa 1 cách đơn giản nhất về dữ liệu lớn có thể là như sau. Dữ liệu lớn là cách chúng ta sử dụng các kỹ thuật advanced analytic trên các tập dữ liệu đa dạng từ cấu trúc, bán cấu trúc tới phi cấu trúc, được thu thập từ nhiều nguồn khác nhau, và dĩ nhiên độ lớn phải thật sự lớn.
Để dễ hình dung, big data sẽ được chia làm 3 Vs như sau (sẽ có bạn thích 4 Vs, nhưng cá nhân tôi không mấy thuyết phục với cái V thứ 4 lắm và tôi sẽ giải thích sau).
Volume: Nhắc tới dữ liệu lớn dĩ nhiên không thể thiếu độ lớn của dữ liệu. Nhưng lớn thế nào mới là lớn? Thật sự độ lớn của 1 dữ liệu tùy thuộc khá nhiều vào cảm nhận của người ra đề bài và người tiếp nhận đề bài.
Với 1 sinh viên mới ra trường, 1 hệ thống hơn 100 bảng với vài trăm ngàn records đã là lớn. Nhưng rồi, bạn sẽ nhanh chóng phát hiện ra cái đó chỉ dành cho dân mẫu giáo ngồi tập đếm thôi. Dữ liệu phải cỡ vài ngàn bảng với vài triệu đến vài chục triệu dòng mới gọi là lớn. Tương tự, sẽ rất nhanh chóng bạn phát hiện ra là cái đó chỉ đáng cho mấy bé cấp 1 ngồi học các phép tính cơ bản thôi mà. Dữ liệu phải tầm hàng tỷ dòng với TB dữ liệu mới gọi là lớn. Mấy anh cấp 3 sẽ bảo là cái thứ trò chơi cấp 2 đó mà giờ còn nhắc lại làm gì? Dữ liệu phải hàng trăm tỷ dòng, hàng chục TB hoặc hàng tram TB kìa. Haiz, thứ lý thuyết cấp 3 vớ vỉn đó giờ thực tế ai xài nữa.
Với giá thành của ổ cứng lưu trữ và RAM ngày càng rẻ, 1 cái laptop bình thường cũng có thể lưu được 1 TB dữ liệu và RAM đâu đó cỡ 8-16 GB. Có lẽ, khái niệm GB sẽ nhanh chóng bị quên lãng và thay thế bằng TB. Nhưng việc dữ liệu không load nỗi trên laptop không có nghĩa nó là dữ liệu lớn. Một server bình thường bây giờ cũng có RAM 32-64 GB với ổ cứng vài TB. 1 hệ thống server siêu khủng tầm 2000 CPU cores, 2 TB RAM và 800 TB dung lượng lưu trữ cũng chỉ đâu đó 200-300k USD, một con số không quá mắc với những doanh nghiệp lớn.
Vậy rốt cục dữ liệu lớn cỡ nào thì gọi là lớn. Thật ra, cho tới giờ phút này vẫn chưa có ai đưa ra được ngưỡng đó. Có người nói hàng tram TB hoặc cỡ PB (1000 TB) hoặc cỡ ZB (1 triệu TB). Ngoài ra, độ lớn của dữ liệu phụ thuộc rất nhiều vào “công lực” của người xử lý và phân tích nó. Với công lực của tôi bây giờ, vài chục TB chắc cũng chẳng khác vài chục GB là mấy.
Chữ V thứ 2 chính là Variety. Những khái niệm về dữ liệu có cấu trúc (structure data) vốn dĩ đã lạc hậu lắm rồi. Những dữ liệu có cấu trúc là dữ liệu có thể tổ chức thành dòng và cột. Trong đó, một dòng là 1 đối tượng cần nghiên cứu và 1 các cột là thuộc tính của đối tượng cần nghiên cứu. Ví dụ điển hình chính là Excel. Khái niệm hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) vốn là khái niệm của thập niên 70-80s. Khái niệm data warehouse đâu đó cũng của thế kỷ thứ 20 và ngày càng ít nhiều có dấu hiệu hụt hơi với thời đại.
Cuối thế kỷ 20, khái niệm lập trình hướng đối tượng trở nên bùng phát mạnh mẽ, với sự giúp sức đắc lực của Java và .NET. Người ta bắt đâu thấy sự thiếu linh hoạt của dữ liệu có cấu trúc khi quá cồng kềnh và thiếu linh hoạt. Do đó, người ta bắt đầu hướng tới dữ liệu hướng đối tượng, và do đó các khái niệm như noSQL và JSON ra đời, đánh dấu 1 khái niệm mới về dữ liệu bán cấu trúc. Dữ liệu bán cấu trúc (semi structure) có thể là JSON, XML, hoặc những dữ liệu tuy không thể tổ chức thành dòng và cột, nhưng vẫn có quy luật nhất định, và có thể dễ dàng chuyển về dòng hoặc cột (sau khi đã xử lý).
Với sự bùng phát của ADSL và Internet cáp quang, và sự ra đời của các mạng xã hội đã tạo nên 1 thời kỳ cực kỳ hỗn độn của dữ liệu. Khi người ta tạo ra đủ kiểu dữ liệu không thể nào có quy luật được. Ví dụ facebook status (giống như bài này), facebook comment, photos, videos, music, pdf, device logs, server logs, etc. Những dữ liệu phi cấu trúc (unstructured data) đó, chính là nỗi ác mộng của những người bắt đầu bước chân đầu tiên qua cửa dữ liệu lớn. Đó là 1 đống rác cực kỳ hỗn độn nhưng lại tiềm ẩn những giá trị đắt hơn vàng, buộc các data engineer và data scientist phải vò đầu bức tai để xử lý.
1 bộ dữ liệu lớn, cho dù lớn cỡ nào đi chăng nữa, nhưng nếu chỉ đơn thuần là structure data thì cũng chưa đủ độ phức tạp để gọi là dữ liệu lớn. Ngược lại, 1 dữ liệu đa dạng từ structure, semi-structure và unstructured nhưng không đủ độ lớn mà ở đó sức người không thể xử lý tay được cũng không thể gọi là dữ liệu lớn. Ví dụ, 1 folders vài trăm file pdf, mỗi file 5-7 trang, vài tram file excel mỗi file vài chục MB, vài trăm tấm hình. Tất cả những cái đó đều có thể xử lý tay được.
V cuối cùng cũng chính là thứ tôi yêu thích nhất về dữ liệu lớn, Velocity. Thế nào là tốc độ của dữ liệu? Theo IDC, tính từ 2010 tới 2018, loài người đã tạo ra lượng dữ liệu bằng tổng dữ liệu tạo ra từ khi có con người tới năm 2009. Tốc độ đó đang bay thẳng đứng theo hàm số mũ. Đó chính là tốc độ của dữ liệu. Việc dữ liệu được tạo ra quá nhanh, và nếu chúng ta lưu không kịp sẽ biến mất vĩnh viễn. Ngoài ra, do những yếu tố tức thì, buộc chúng ta phải đưa ra những quyết định rất nhanh ngay từ khi có dữ liệu. Ví dụ, với các IP camera giám sát. Bình quân 1 camera giám sát như thế chỉ đủ dung lương để lưu dữ liệu trong 1-2 ngày, nếu chúng ta không lưu trữ lại kịp nó sẽ bị ghi đè và rất khó phục hồi (trừ khi can thiệp bởi chuyên gia). Ngoài ra, với việc giám sát camera liên tục như thế, đòi hỏi có những xử lý gần như tức thì khi có sự kiện gì đó xảy ra, ví dụ ăn trộm.
Thử tưởng tượng, trong 1 tòa nhà (vd chung cư tôi ở) có 19 tầng lầu, mỗi tầng lầu có 2 camera, ở bãi xe có tổng cộng 8 camera cho 2 tầng, ở khuôn viên ngoài sân có tổng cộng 4 camera. Tổng cộng 50 camera giám sát. Việc giám sát đó hiện giờ chỉ thuần túy quay lại và lưu trữ để trích xuất ra khi cần. Thử tưởng tượng vì 1 lý do gì đó, việc lưu trữ quên tiến hành xảy ra vào lúc đúng có 1 sự kiện quan trọng gì đó. Đồng nghĩa, chúng ta vĩnh viễn không thể biến ai làm gì vào thời điểm đó. Tương tự, rất ít nơi có đủ nguồn lực để mắt nhìn toàn bộ màn hình đó cùng 1 lúc. Vì vậy, việc camera giám sát chỉ thuần túy là lưu trữ và trích lục khi cần.
Thử tưởng tượng, nếu có 1 cơ chế gì đó có thể tự động giám sát toàn bộ các camera giám sát đó và cảnh báo khi có người lạ xuất hiện tại nơi không được phép thì sẽ như thế nào nhỉ? Có thể qua Trung Quôc để trải nghiệm hệ thống đánh giá tín nhiệm nhân dân dựa trên các camera đó được lắp đặt ở mỗi góc phố của các thành phố lớn.
Chữ V thứ 4, và là chữ V tôi không thích nhất, đó là Veracity. Với dữ liệu lớn, chúng ta đâu đó phải chấp nhận tính đúng đắn của dữ liệu chỉ ở mức tương đối. Với các phương pháp thống kê thuần túy, chúng ta luôn bàn về chọn mẫu để nghiên cứu. Vì mẫu đó phải đại diện cho cả 1 quần thể, và mọi khảo sát chỉ làm trên 1 mẫu nhỏ, mẫu đại diện đó phải đảm bảo 2 yếu tố (i) tính đúng đắn và (ii) tính đại diện. Với các phân tích trên dữ liệu lớn, chúng ta không chọn mẫu. Việc phân tích được áp dụng trên 100% quần thể, do đó dữ liệu đâu đó không thể chính xác khi chúng ta chọn lọc mẫu đại diện. Việc đánh giá trên cả 1 quần thể, bao gồm cả dữ liệu sai, đâu đó lại vô tình phản ánh đúng bản chất của dữ liệu.
Tôi không đồng ý với chữ V vì tôi không nghĩ rằng chỉ có dữ liệu lớn mới có sai sót. Với dữ liệu bình thường, sai sót là luôn luôn không tránh khỏi. Do đó, trong mỗi bài phân tích nào, việc làm sạch và chuẩn hóa dữ liệu luôn chiếm tới 80% tổng thời gian cho bài phân tích đó. Điêu duy nhất tôi đồng ý là, để đảm bảo tính khách quan và trung thực của dữ liệu, chúng ta nên áp dụng cho toàn bộ quần thể thay vì chọn mẫu của dữ liệu.
Để tổng kết, tôi sẽ sử dụng lại câu mở đầu cho bài này. Dữ liệu lớn không ám chỉ riêng lẻ về 1 yếu tố độ lớn của dữ liệu. Nó là 1 khía niệm mô tả việc chúng ta sử dụng các kỹ thuật advanced analytic để tiến hành khảo sát trên TOÀN BỘ dữ liệu có ĐỘ PHỨC TẠP đa dạng từ dữ liệu có cấu trúc, bán cấu trúc và phi cấu trúc và có ĐỘ LỚN vượt quá khả năng xử lý bằng tay của con người.
————————
Cre: Lê Nguyên Đúc