Trong một động thái bất ngờ đang tạo ra làn sóng chú ý đáng kể trong cộng đồng cơ sở dữ liệu, Snowflake đã công bố mã nguồn mở pg_lake, một tiện ích mở rộng cho PostgreSQL mang khả năng của Apache Iceberg và hồ dữ liệu trực tiếp vào thế giới của cơ sở dữ liệu mã nguồn mở phổ biến nhất. Bản phát hành này đánh dấu một sự thay đổi lớn trong cách các tổ chức có thể tiếp cận kiến trúc dữ liệu của họ, có khả năng loại bỏ các quy trình ETL phức tạp trong khi vẫn duy trì tính nhất quán giao dịch xuyên suốt các khối lượng công việc vận hành và phân tích.
Thời điểm của bản phát hành này đặc biệt đáng chú ý - xuất hiện chỉ vài tháng sau khi Snowflake mua lại Crunchy Data vào tháng 6 năm 2025, và sau khi Databricks mua lại nhóm phát triển pg_mooncake đối thủ. Bối cảnh cơ sở dữ liệu rõ ràng đang nóng lên với các nhà cung cấp lớn đặt cược mạnh mẽ vào tương lai của PostgreSQL trong lĩnh vực hồ dữ liệu.
Cầu Nối Giữa Khối Lượng Công Việc Vận Hành và Phân Tích
Điểm đổi mới cốt lõi của pg_lake nằm ở khả năng cho phép PostgreSQL hoạt động đồng thời như một cơ sở dữ liệu vận hành truyền thống và một hệ thống lakehouse. Các nhà phát triển có thể tạo và sửa đổi các bảng Iceberg trực tiếp từ PostgreSQL với đầy đủ các đảm bảo giao dịch ACID, sau đó truy vấn chính những bảng đó từ các engine khác như Spark. Điều này loại bỏ sự ma sát truyền thống giữa các hệ thống vận hành và xử lý phân tích.
Điều làm cho điều này đặc biệt mạnh mẽ là mô hình thực thi lai. Trong khi người dùng kết nối và tương tác với PostgreSQL tiêu chuẩn, hệ thống một cách minh bạch ủy thác các truy vấn phân tích đòi hỏi nhiều tài nguyên tính toán cho engine thực thi của DuckDB, vốn có tính song song cao và định hướng cột, thông qua một tiến trình pgduck_server riêng biệt. Kiến trúc này tránh được những hạn chế về luồng và an toàn bộ nhớ có thể phát sinh từ việc nhúng trực tiếp DuckDB vào thiết kế theo mô hình tiến trình cô lập của PostgreSQL.
Các giao dịch không phải miễn phí. Việc nhúng engine vào catalog thay vì nhúng catalog vào engine cho phép thực hiện các giao dịch xuyên suốt các bảng phân tích và vận hành.
So sánh Kiến trúc:
- pg_lake: Frontend PostgreSQL + backend DuckDB
- DuckLake: Frontend DuckDB + catalog PostgreSQL
- pg_mooncake: PostgreSQL với cách tiếp cận kiến trúc khác (đã được Databricks mua lại)
Ứng Dụng Thực Tế và Sự Phấn Khích Của Nhà Phát Triển
Phản hồi từ cộng đồng đã cực kỳ tích cực, với các nhà phát triển ngay lập tức nhận ra các ứng dụng thực tế có thể đơn giản hóa đáng kể ngăn xếp dữ liệu của chúng tôi cho một b2b saas như một bình luận đã ghi nhận. Khả năng sử dụng các công cụ và cú pháp PostgreSQL quen thuộc cho các thao tác với hồ dữ liệu thể hiện một sự giảm thiểu đáng kể độ phức tạp cho nhiều tổ chức.
Một số tính năng chính nổi bật là đặc biệt có giá trị: hỗ trợ lệnh COPY để xuất kết quả truy vấn trực tiếp đến S3 ở các định dạng Parquet, CSV hoặc JSON; khả năng suy luận lược đồ tự động từ các nguồn dữ liệu bên ngoài; và khả năng kết hợp các bảng heap truyền thống, bảng Iceberg và các tệp bên ngoài trong cùng một truy vấn. Một nhà phát triển bày tỏ sự phấn khích về việc có thể định kỳ dỡ dữ liệu từ Postgres sang dữ liệu được phân vùng trong lake house chỉ với một truy vấn duy nhất - một nhiệm vụ trước đây đòi hỏi các tiện ích tùy chỉnh.
Các Định Dạng File Được Hỗ Trợ:
- Đầu vào: Parquet, CSV, JSON, Iceberg, GeoJSON, Shapefiles
- Đầu ra: Parquet, CSV, JSON
- Nén: hỗ trợ gzip, zstd một cách minh bạch
- Lưu trữ: S3 và các object store tương thích
Bối Cảnh Cạnh Tranh và Hàm Ý Chiến Lược
Việc mã nguồn mở hóa pg_lake định vị nó trực tiếp chống lại các giải pháp mới nổi khác như DuckLake và pg_mooncake, mỗi giải pháp áp dụng các cách tiếp cận kiến trúc hơi khác nhau. Trong khi DuckLake sử dụng DuckDB làm engine truy vấn chính với PostgreSQL như một catalog, pg_lake đảo ngược mô hình này - sử dụng PostgreSQL làm giao diện phía trước với DuckDB làm backend tính toán.
Bản phát hành này đặt ra những câu hỏi thú vị về chiến lược của Snowflake, bởi lẽ pg_lake về lý thuyết có thể làm ảnh hưởng đến sản phẩm chính của họ. Tuy nhiên, như một nhà quan sát nhận xét, Snowflake đã chứng minh một cam kết thực sự với việc tự ảnh hưởng đến chính mình bằng cách là những người ủng hộ sớm cho Iceberg bất chấp tiềm năng gây xáo trộn của nó. Động thái này dường như là một phần của xu hướng rộng lớn hơn khi các nhà cung cấp nền tảng dữ liệu lớn đang chấp nhận các định dạng bảng mở trong khi cạnh tranh ở lớp tính toán.
Mức Độ Sẵn Sàng Cho Sản Xuất và Định Hướng Tương Lai
Điều làm cho pg_lake khác biệt so với một số giải pháp cạnh tranh là độ trưởng thành của nó. Công nghệ này đã được thử thách trong môi trường sản xuất với tên gọi Crunchy Data Warehouse trước khi được mua lại, và nhóm phát triển đằng sau nó có kinh nghiệm sâu rộng trong việc xây dựng các tiện ích mở rộng PostgreSQL cấp độ sản xuất như Citus và pg_cron. Kinh nghiệm này thể hiện rõ trong bộ tính năng toàn diện, bao gồm hỗ trợ SQL đầy đủ, xử lý giao dịch và khả năng đẩy các phần truy vấn phù hợp xuống DuckDB.
Kiến trúc mô-đun - bao gồm một số tiện ích mở rộng có thể tương tác với nhau thay vì một mã nguồn nguyên khối - cho thấy một cách tiếp cận có suy nghĩ đến khả năng bảo trì lâu dài. Các hạn chế hiện tại về hỗ trợ bảng Iceberg bên ngoài và kiểm soát truy cập chi tiết đã được thừa nhận, với hỗ trợ catalog REST vừa được hợp nhất và nhiều tính năng hơn có khả năng sẽ xuất hiện do dự án đang trong quá trình phát triển tích cực.
Các thành phần chính của pg_lake:
- pg_lake.iceberg: Triển khai đặc tả Iceberg cho PostgreSQL
- pg_lake.table: Foreign data wrapper để truy vấn các tệp lưu trữ đối tượng
- pg_lake.copy: Triển khai chức năng COPY đến/từ data lake
- pg_lake.engine: Module chung cho các tiện ích mở rộng pg_lake
- pgduck_server: Tiến trình riêng biệt chạy DuckDB với giao thức wire PostgreSQL
- duckdb_pglake: Tiện ích mở rộng DuckDB bổ sung các hàm tương thích với PostgreSQL
Kỷ Nguyên Mới Của PostgreSQL
Việc phát hành pg_lake đánh dấu một cột mốc khác trong cái mà nhiều người gọi là kỷ nguyên vàng của PostgreSQL. Khi các tổ chức ngày càng tìm cách hợp nhất cơ sở hạ tầng dữ liệu và giảm thiểu sự phức tạp, các giải pháp mở rộng khả năng của PostgreSQL sang các lĩnh vực mới đang thu hút sự quan tâm đáng kể. Khả năng xử lý cả khối lượng công việc giao dịch lớn và các truy vấn phân tích trong cùng một hệ thống quen thuộc là đặc biệt hấp dẫn đối với các tổ chức quy mô trung, nơi Snowflake có thể là quá mức cần thiết nhưng PostgreSQL thuần túy thì không đủ.
Đối với các nhà phát triển và kỹ sư dữ liệu, pg_lake mở ra một con đường hấp dẫn để đơn giản hóa kiến trúc dữ liệu mà không phải hy sinh khả năng. Khi hệ sinh thái tiếp tục phát triển, ranh giới giữa cơ sở dữ liệu vận hành, kho dữ liệu và hồ dữ liệu ngày càng trở nên mờ đi - và PostgreSQL dường như đã sẵn sàng đóng một vai trò trung tâm trong sự hội tụ này.
Tham khảo: pg_lake: Postgres for Iceberg and Data lakes
