Chuyển đến nội dung chính

Apache Iceberg là gì?

Apache Iceberg là định dạng bảng dữ liệu mã nguồn mở 100% được cấp phép Apache 2.0, phân tán, điều khiển cộng đồng, giúp đơn giản hóa việc xử lý dữ liệu trên các tập dữ liệu lớn được lưu trữ trong hồ dữ liệu. Các kỹ sư dữ liệu sử dụng Apache Iceberg vì tốc độ nhanh, tính hiệu quả và độ tin cậy ở mọi quy mô, cũng như khả năng lưu giữ hồ sơ về mức độ thay đổi của các tập dữ liệu theo thời gian. Apache Iceberg cung cấp khả năng tích hợp dễ dàng với các khung xử lý dữ liệu phổ biến như Apache Spark, Apache Flink, Apache Hive, Presto, v.v.

Hồ dữ liệu giao dịch là gì?

Hồ dữ liệu là một kho lưu trữ tập trung cho phép bạn lưu trữ tất cả dữ liệu có cấu trúc và phi cấu trúc của bạn ở bất kỳ quy mô nào. Giao dịch dữ liệu là một loạt các trao đổi dữ liệu được thực hiện trong một hoạt động duy nhất. Ví dụ, khi một khách hàng rút tiền từ tài khoản ngân hàng, ngân hàng tiến hành nhiều trao đổi dữ liệu cùng một lúc trong một giao dịch dữ liệu, bao gồm xác minh tài khoản có đủ số dư, xác minh danh tính và ghi nợ việc rút khỏi tài khoản. Hồ dữ liệu trong giao dịch là một loại hồ dữ liệu không chỉ lưu trữ dữ liệu quy mô lớn mà còn hỗ trợ các hoạt động giao dịch và đảm bảo rằng dữ liệu chính xác, nhất quán và cho phép bạn theo dõi cách thức dữ liệu và cấu trúc dữ liệu thay đổi theo thời gian. Những đặc tính này được gọi chung là Tính nguyên tử, Tính nhất quán, Cô lập và Độ bền (ACID):

  • Atomicity đảm bảo rằng mỗi giao dịch là một sự kiện duy nhất thành công hoặc thất bại hoàn toàn; không có trạng thái nửa đường.

  • Tính nhất quán đảm bảo rằng tất cả dữ liệu được ghi đều hợp lệ theo các quy tắc được xác định của hồ dữ liệu, đảm bảo rằng dữ liệu chính xác và đáng tin cậy.

  • Sự cô lập đảm bảo nhiều giao dịch có thể xảy ra cùng một lúc mà không can thiệp lẫn nhau, đảm bảo rằng mỗi giao dịch thực hiện độc lập.

  • Độ bền có nghĩa là dữ liệu không bị mất hoặc bị hỏng sau khi giao dịch được gửi. Dữ liệu có thể được khôi phục trong trường hợp lỗi hệ thống, chẳng hạn như mất điện.

Lợi ích của việc sử dụng Apache Iceberg là gì?

Một số lợi ích chính của việc sử dụng Apache Iceberg cho hồ dữ liệu giao dịch bao gồm:

  • Quen thuộc về SQL: Ngôn ngữ truy vấn có cấu trúc (SQL) là một ngôn ngữ truy vấn phổ biến thường được sử dụng trong tất cả các loại ứng dụng. Các nhà phân tích dữ liệu và nhà phát triển học và sử dụng SQL vì nó tích hợp tốt với các ngôn ngữ lập trình khác nhau và cũng khá dễ học vì nó sử dụng các từ khóa tiếng Anh thông dụng trong các câu lệnh của nó. Apache Iceberg cho phép bất cứ ai quen thuộc với ngôn ngữ truy vấn có cấu trúc (SQL) xây dựng hồ dữ liệu và thực hiện hầu hết các hoạt động hồ dữ liệu mà không cần phải học một ngôn ngữ mới.

  • Tính nhất quán dữ liệu: Apache Iceberg cung cấp tính nhất quán dữ liệu để đảm bảo rằng bất kỳ người dùng nào đọc và ghi vào dữ liệu đều nhìn thấy cùng một dữ liệu.

  • Cấu trúc dữ liệu: Apache Iceberg cho phép dễ dàng thay đổi cấu trúc dữ liệu của bạn, còn được gọi là tiến hóa giản đồ, có nghĩa là người dùng có thể thêm, đổi tên hoặc loại bỏ cột khỏi bảng dữ liệu mà không làm gián đoạn dữ liệu cơ bản.

  • Quản lý phiên bản dữ liệu: Apache Iceberg cung cấp hỗ trợ cho phiên bản dữ liệu, cho phép người dùng theo dõi các thay đổi đối với dữ liệu theo thời gian. Điều này cho phép tính năng du hành thời gian, cho phép người dùng truy cập và truy vấn các phiên bản lịch sử của dữ liệu và phân tích các thay đổi đối với dữ liệu giữa các bản cập nhật và xóa.

  • Hỗ trợ đa nền tảng: Apache Iceberg hỗ trợ nhiều hệ thống lưu trữ và công cụ truy vấn khác nhau, bao gồm Apache Spark, Apache Hive và Presto. Điều này giúp bạn dễ dàng sử dụng Iceberg trong nhiều môi trường xử lý dữ liệu khác nhau.

  • Xử lý gia tăng: Iceberg hỗ trợ xử lý gia tăng, cho phép người dùng chỉ xử lý dữ liệu đã thay đổi kể từ lần chạy cuối cùng, còn được gọi là CDC (Change Data Capture). Điều này có thể giúp cải thiện hiệu quả xử lý dữ liệu và hiệu suất.

Các trường hợp sử dụng phổ biến cho Apache Iceberg là gì?

Apache Iceberg phù hợp với nhiều trường hợp sử dụng hồ dữ liệu, bao gồm:

  • Bảng dữ liệu trong hồ dữ liệu yêu cầu xóa thường xuyên, chẳng hạn như khi thực thi luật về quyền riêng tư dữ liệu.

  • Bảng dữ liệu trong hồ dữ liệu yêu cầu cập nhật cấp bản ghi. Điều này rất hữu ích khi tập dữ liệu của bạn yêu cầu cập nhật thường xuyên sau khi dữ liệu ổn định, ví dụ: dữ liệu bán hàng có thể thay đổi do các sự kiện sau bán hàng, chẳng hạn như khách hàng trả lại sản phẩm. Iceberg cung cấp khả năng cập nhật các bản ghi riêng lẻ mà không cần phải xuất bản lại toàn bộ tập dữ liệu.

  • Bảng dữ liệu trong hồ dữ liệu có những thay đổi không thể đoán trước, chẳng hạn như bảng Slowly Changing Dimension (SCD). Một ví dụ về SCD là bảng hồ sơ khách hàng bao gồm tên, vị trí và thông tin liên hệ có thể thay đổi theo thời gian trong các khoảng thời gian không xác định.

  • Khi các giao dịch với hồ dữ liệu yêu cầu đảm bảo tính hợp lệ, độ lâu bền và độ tin cậy của dữ liệu, các định dạng bảng Apache Iceberg có thể được triển khai để đảm bảo các giao dịch ACID.

  • Khi có nhu cầu quay trở lại để truy vấn các phiên bản cũ của dữ liệu để thực hiện phân tích xu hướng, phân tích các thay đổi đối với dữ liệu trong một khoảng thời gian hoặc khôi phục phiên bản trước đó để khắc phục sự cố.

Ai sử dụng Apache Iceberg?

Kỹ sư dữ liệu, quản trị viên dữ liệu, nhà phân tích dữ liệu và nhà khoa học dữ liệu nằm trong số những nhân vật sử dụng Apache Iceberg.  Các kỹ sư và quản trị viên dữ liệu có thể sử dụng Apache Iceberg để thiết kế và xây dựng các hệ thống lưu trữ dữ liệu có thể điều chỉnh quy mô.  Các nhà phân tích dữ liệu và nhà khoa học dữ liệu có thể sử dụng Apache Iceberg để phân tích các bộ dữ liệu lớn một cách hiệu quả.

Tại sao bạn nên chọn Apache Iceberg?

Apache Iceberg cung cấp một cách nhanh chóng, hiệu quả để xử lý các tập dữ liệu lớn trên quy mô lớn. Nó mang lại những lợi ích sau:

  1. Mã nguồn mở: Apache Iceberg là một dự án mã nguồn mở, có nghĩa là nó được sử dụng miễn phí và có thể được tùy chỉnh để đáp ứng nhu cầu cụ thể của bạn. Nó cũng có một cộng đồng tích cực của các nhà phát triển, những người liên tục cải tiến và thêm các tính năng mới vào dự án.

  2. Khả năng mở rộng: Apache Iceberg được thiết kế để xử lý các bộ dữ liệu lớn một cách hiệu quả. Nó có thể phân vùng và tổ chức dữ liệu trên nhiều nút, giúp phân phối khối lượng công việc và tăng tốc độ xử lý dữ liệu.

  3. Hiệu suất: Apache Iceberg có nhiều tính năng để tối ưu hóa hiệu suất truy vấn, bao gồm các kỹ thuật lưu trữ và nén cột như tiên ngữ push down và lược đồ tiến hóa.

  4. Tính linh hoạt: Apache Iceberg cho phép bạn thay đổi cách tổ chức dữ liệu của mình để nó có thể phát triển theo thời gian mà không yêu cầu bạn phải viết lại các truy vấn hoặc xây dựng lại cấu trúc dữ liệu của mình. Nó cũng hỗ trợ nhiều định dạng dữ liệu và nguồn dữ liệu, giúp dễ dàng tích hợp với các hệ thống hiện có.

  5. Độ tin cậy: Apache Iceberg đảm bảo tính nhất quán và độ tin cậy của dữ liệu thông qua hỗ trợ cho các giao dịch. Bạn có thể theo dõi cách dữ liệu thay đổi theo thời gian và quay trở lại các phiên bản lịch sử để giúp bạn khắc phục sự cố.

Những dịch vụ AWS nào hỗ trợ Iceberg?

Apache Iceberg hỗ trợ các khung xử lý dữ liệu phổ biến như Apache Spark, Apache Flink, Apache Hive và Presto. Các dịch vụ AWS như Amazon Redshift , Amazon Athena , Amazon EMR , AWS Glu e Amazon Data Firehose , bao gồm hỗ trợ gốc cho khung hồ dữ liệu giao dịch bao gồm Apache Iceberg. Apache Iceberg kết hợp với các dịch vụ AWS được hỗ trợ cho phép một hồ dữ liệu giao dịch, thường dựa trên lưu trữ trong S3.

  • Amazon Redshift là một dịch vụ phân tích SQL và lưu trữ dữ liệu được quản lý đầy đủ, hỗ trợ AI để thúc đẩy việc ra quyết định kinh doanh cho khách hàng một cách nhanh chóng và hiệu quả về chi phí. Amazon Redshift cung cấp kiến trúc xử lý song song hàng loạt (MPP), đa cụm và phi máy chủ với các khả năng không dùng ETL giúp thúc đẩy phân tích gần theo thời gian thực và các trường hợp sử dụng AI/ML với khả năng chia sẻ dữ liệu. Khách hàng có thể sử dụng Amazon Redshift để truy vấn các bảng Apache Iceberg trong hồ dữ liệu, được truy cập thông qua danh mục Dữ liệu AWS Glue và kết hợp với bảng của họ trong kho dữ liệu để phân tích toàn diện.

  • Amazon Athena là một dịch vụ phân tích tương tác, không máy chủ được xây dựng trên các khung mã nguồn mở, hỗ trợ các định dạng tệp và bảng mở. Athena mang đến cách thức đơn giản, linh hoạt để phân tích hàng petabyte dữ liệu ở chính nơi lưu trữ dữ liệu đó. Athena cung cấp hỗ trợ gốc cho các truy vấn đọc, du hành thời gian, ghi và DDL cho các bảng Apache Iceberg sử dụng định dạng Apache Parquet cho dữ liệu và danh mục AWS Glue cho metastore của chúng.

  • Amazon EMR là một giải pháp dữ liệu lớn để xử lý dữ liệu quy mô petabyte, phân tích tương tác và học máy bằng cách sử dụng các khung mã nguồn mở như Apache Spark, Hadoop, Presto và Hive. Bắt đầu với Amazon EMR 6.5.0, bạn có thể sử dụng Apache Spark 3 trên các cụm Amazon EMR với định dạng bảng Iceberg. Các framework EMR bao gồm Spark, Trino, Flink và Hive hỗ trợ Apache Iceberg.

  • AWS Glue là dịch vụ tích hợp dữ liệu không máy chủ giúp bạn dễ dàng khám phá, chuẩn bị, di chuyển và tích hợp dữ liệu từ nhiều nguồn để phân tích, học máy (ML) và phát triển ứng dụng.  AWS Glue phiên bản 3.0 trở lên hỗ trợ khung Apache Iceberg cho các hồ dữ liệu. Bạn có thể sử dụng AWS Glue để thực hiện các thao tác đọc và ghi trên các bảng Iceberg trong Amazon S3 hoặc làm việc với các bảng Iceberg bằng cách sử dụng Danh mục dữ liệu AWS Glue. Các hoạt động bổ sung bao gồm chèn, cập nhật và tất cả các truy vấn Spark, ghi Spark cũng được hỗ trợ.

  • Amazon Data Firehose là một dịch vụ không có máy chủ được quản lý hoàn toàn để cung cấp dữ liệu phát trực tuyến theo thời gian thực đến các điểm đến như Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Serverless, Splunk, Snowflake, Apache Iceberg Tables và bất kỳ điểm cuối HTTP tùy chỉnh hoặc điểm cuối HTTP thuộc sở hữu của các nhà cung cấp dịch vụ bên thứ ba được hỗ trợ, bao gồm Datadog, Dynatrace, LogicMonitor, MongoDB, New Corc, Alogix và Elastic. Với Amazon Data Firehose, bạn không cần phải viết ứng dụng hay quản lý tài nguyên. Bạn đặt cấu hình đối tượng tạo dữ liệu để gửi dữ liệu tới Amazon Data Firehose và dịch vụ này sẽ tự động đưa dữ liệu đến điểm đích được chỉ định. Bạn cũng có thể định cấu hình Amazon Data Firehose để chuyển đổi dữ liệu của mình trước khi phân phối.