Một định dạng file dữ liệu mới có tên F3 ( Future-proof File Format ) đã xuất hiện từ Carnegie Mellon University và Tsinghua University , hứa hẹn giải quyết các vấn đề tương thích trong lưu trữ dữ liệu. Tuy nhiên, cách tiếp cận độc đáo của định dạng này khi nhúng trực tiếp các bộ giải mã WebAssembly vào trong file đã gây ra cuộc thảo luận sôi nổi trong cộng đồng lập trình viên về việc liệu những lợi ích có đáng để chấp nhận những chi phí này hay không.
Tranh cãi về WebAssembly
Cuộc tranh luận gay gắt nhất tập trung vào quyết định của F3 trong việc nhúng các bộ giải mã WebAssembly ( WASM ) vào trong mỗi file dữ liệu. Những người chỉ trích chỉ ra rằng cách tiếp cận này ngay lập tức gây ra mức giảm hiệu suất 10-30% so với các triển khai native. Mối quan ngại không chỉ dừng lại ở tốc độ - các lập trình viên lo lắng về việc từ bỏ các cơ hội tối ưu hóa trong tương lai và các chức năng giải mã nâng cao.
Tuy nhiên, những người ủng hộ cho rằng điều này bỏ lỡ bức tranh tổng thể. WASM được nhúng phục vụ như một cơ chế dự phòng khi các bộ giải mã native không có sẵn. Như một trong những người tạo ra định dạng này đã giải thích, việc giảm hiệu suất là đáng giá so với việc hoàn toàn không thể đọc được file. Các hệ thống sẽ ưu tiên các bộ giải mã native khi có sẵn, chỉ quay lại sử dụng WASM khi cần thiết.
WebAssembly ( WASM ): Một định dạng lệnh nhị phân chạy trong môi trường sandbox, cho phép code thực thi an toàn trên các nền tảng khác nhau.
Tác động hiệu suất của F3
- Giải mã WebAssembly : phạt hiệu suất 10-30% so với triển khai gốc
- Kích thước bộ giải mã nhúng: Chi phí lưu trữ tối thiểu (kilobyte)
- Trường hợp sử dụng mục tiêu: Các tệp có kích thước dữ liệu quy mô terabyte
Mối quan ngại về bảo mật và payload độc hại
Ý tưởng về code có thể thực thi được nhúng trong các file dữ liệu đã làm dấy lên cảnh báo đỏ trong cộng đồng lập trình viên có ý thức bảo mật. Nhiều năm kinh nghiệm với các định dạng file chứa scripting tích hợp đã dạy cho cộng đồng phải cảnh giác với những cách tiếp cận như vậy. Tiềm năng cho các payload độc hại ẩn giấu trong code WebAssembly đại diện cho một mối quan ngại đáng kể.
Các nhà thiết kế F3 thừa nhận những thách thức bảo mật này và đề xuất các giải pháp bao gồm không gian bộ nhớ tuyến tính được sandbox và khả năng tạo allowlist cho các module WASM đã được xác minh. Họ đề xuất tạo ra một kho lưu trữ trung tâm nơi các nhà tạo bộ giải mã có thể đăng ký và xác minh các module của họ, làm cho chúng chống lại việc can thiệp.
Bối cảnh định dạng phân mảnh
Có lẽ tiết lộ đáng ngạc nhiên nhất từ các cuộc thảo luận cộng đồng là sự tồn tại của nhiều dự án định dạng file universal cạnh tranh. Những gì bắt đầu như một liên minh được lên kế hoạch giữa các tổ chức lớn bao gồm CMU , Meta và các tổ chức khác đã tan rã do các biến chứng pháp lý xung quanh các thỏa thuận bảo mật.
Một định dạng yêu cầu một chương trình để giải mã thì thật điên rồ. Cũng giống như việc đóng gói 7zip với mỗi file zip vậy.
Sự tan rã này dẫn đến ít nhất năm sáng kiến định dạng riêng biệt: Nimble của Meta , FastLanes của CWI , Vortex của SpiralDB , F3 của CMU và Tsinghua , và AnyBlox của Đức. Mỗi cái có cách tiếp cận khác nhau để giải quyết các vấn đề tương tự, tạo ra một bối cảnh phân mảnh mà một cách trớ trêu lại đi ngược lại khả năng tương tác mà những định dạng này nhằm mục đích đạt được.
Các Dự Án Định Dạng File Cạnh Tranh
- Nimble của Meta: https://github.com/facebookincubator/nimble
- FastLanes của CWI: https://github.com/cwida/FastLanes
- Vortex của SpiralDB: https://vortex.dev
- F3 của CMU + Tsinghua: https://github.com/future-file-format/f3
- AnyBlox (Đức): https://github.com/AnyBlox
Các câu hỏi triển khai thực tế
Ngoài các cuộc tranh luận triết học, những mối quan ngại thực tế nổi lên về tính hữu dụng trong thế giới thực của F3 . Định dạng này nhắm đến các kịch bản nơi kích thước file đạt đến terabyte, làm cho overhead kilobyte của các bộ giải mã nhúng trở nên không đáng kể. Tuy nhiên, vẫn còn những câu hỏi về khả năng mã hóa, sự cần thiết của WASM runtime trên các nền tảng ít phổ biến, và liệu việc triển khai một bộ giải mã có thể dễ dàng hơn việc hỗ trợ một WASM runtime đầy đủ hay không.
Sự phụ thuộc của định dạng vào các mảng Apache Arrow để trả về dữ liệu cũng hạn chế khả năng ứng dụng của nó như một định dạng file thực sự generic, cho thấy nó phù hợp hơn cho các workload phân tích cụ thể thay vì lưu trữ dữ liệu đa mục đích.
Thông số kỹ thuật F3
- Nguyên tắc cốt lõi: Khả năng tương tác, tính mở rộng, hiệu quả
- Tổ chức dữ liệu: Các tệp tự mô tả với siêu dữ liệu được nhúng
- Định dạng bộ giải mã: Các tệp nhị phân WebAssembly để tương thích đa nền tảng
- Cơ chế dự phòng: Ưu tiên bộ giải mã gốc, WASM làm phương án dự phòng
- Định dạng trả về dữ liệu: Mảng Apache Arrow
Kết luận
F3 đại diện cho một nỗ lực đầy tham vọng để làm cho lưu trữ dữ liệu có thể chống chọi với tương lai, nhưng cách tiếp cận tập trung vào WebAssembly của nó đã chia rẽ cộng đồng. Trong khi định dạng này giải quyết các vấn đề tương thích thực sự trong phân tích dữ liệu, các hình phạt hiệu suất, mối quan ngại bảo mật và sự gia tăng của các tiêu chuẩn cạnh tranh đặt ra câu hỏi về việc áp dụng thực tế của nó. Dự án hiện tại vẫn là một prototype học thuật, cho cộng đồng thời gian để đánh giá liệu cách tiếp cận sáng tạo của nó sẽ chứng minh có giá trị hay liệu các giải pháp đơn giản hơn có thể phục vụ tốt hơn cho nhu cầu của hệ sinh thái lưu trữ dữ liệu.
Tham khảo: F3: The Open-Source Data File Format for the Future
