Apache Iceberg คืออะไร?
Apache Iceberg เป็นกระจายขับเคลื่อนชุมชน Apache 2.0 ได้รับใบอนุญาตแล้ว โอเพนซอร์สรูปแบบตารางข้อมูล100% ที่ช่วยให้การประมวลผลข้อมูลในชุดข้อมูลขนาดใหญ่ที่เก็บไว้ใน Data lake วิศวกรข้อมูลใช้ Apache Iceberg เพราะมันรวดเร็ว มีประสิทธิภาพและเชื่อถือได้ในระดับใด ๆ และเก็บบันทึกของวิธีการเปลี่ยนแปลงชุดข้อมูลเมื่อเวลาผ่านไป Apache Iceberg มีการบูรณาการง่ายกับเฟรมเวิร์คการประมวลผลข้อมูลที่เป็นที่นิยมเช่น Apache Spark, Apache Flink, Apache Hive, Presto และอื่น ๆ
Data Lake เชิงธุรกรรมคืออะไร?
Data Lake คือพื้นที่เก็บข้อมูลส่วนกลางที่ให้คุณสามารถเก็บข้อมูลที่มีโครงสร้างและไม่มีโครงสร้างทั้งหมดของคุณในทุกระดับ การทำธุรกรรมข้อมูลเป็นชุดของการแลกเปลี่ยนข้อมูลที่จะดำเนินการในการดำเนินการเพียงครั้งเดียว ตัวอย่างเช่น เมื่อลูกค้าถอนเงินจากบัญชีธนาคาร ธนาคารจะดำเนินการแลกเปลี่ยนข้อมูลหลายรายการในเวลาเดียวกันในการทำธุรกรรม ซึ่งข้อมูลหนึ่งๆประกอบด้วย การตรวจสอบบัญชีมียอดคงเหลือเพียงพอหรือไม่ การตรวจสอบตัวตน และการหักเงินถอนออกจากบัญชี Transectional Data Lake เป็นชนิดของdata lake ที่ไม่เพียงแต่เก็บข้อมูลในระดับหนึ่ง แต่ยังสนับสนุนการดำเนินการทำธุรกรรม เพื่อให้แน่ใจว่าข้อมูลมีความถูกต้องสอดคล้อง และช่วยให้คุณสามารถติดตามวิธีการเปลี่ยนแปลงข้อมูลและโครงสร้างข้อมูลเมื่อเวลาผ่านไป คุณสมบัติเหล่านี้เป็นที่รู้จักกันในชื่อ Atomicity Consistency Isolation and Durability (ACID):
- การเป็นหน่วยเดียวที่แบ่งแยกไม่ได้ (Atomicity) รับประกันว่าธุรกรรมแต่ละครั้งจะเป็นเหตุการณ์เดียวที่ประสบความสำเร็จหรือล้มเหลวโดยสมบูรณ์อย่างใดอย่างหนึ่ง ไม่มีสถานะครึ่งๆ กลางๆ
- ความสอดคล้องกัน (Consistency) ให้ความมั่นใจว่าข้อมูลทั้งหมดที่เขียนจะถูกต้องตามกฎที่กำหนดไว้ของ Data Lake เพื่อรับรองว่าข้อมูลมีความถูกต้องและเชื่อถือได้
- การแยกอิสระ (Isolation) ให้ความมั่นใจว่าธุรกรรมหลายรายการสามารถเกิดขึ้นในเวลาเดียวกันโดยไม่รบกวนซึ่งกันและกัน เพื่อรับประกันว่าแต่ละธุรกรรมจะดำเนินการได้อย่างเป็นอิสระ
- ความทนทาน (Durability) หมายความว่าข้อมูลจะไม่สูญหายหรือเสียหายเมื่อมีการส่งธุรกรรม ข้อมูลสามารถกู้คืนได้ในกรณีที่ระบบล้มเหลว เช่น ไฟฟ้าดับ
อะไรคือประโยชน์ของการใช้ Apache Iceberg?
บางส่วนของผลประโยชน์ที่สำคัญของการใช้ Apache Iceberg สำหรับการทำธุรกรรมใน Data lake ซึ่งประกอบด้วย:
- ความคุ้นเคยกับภาษา SQL: Structured Query Language (SQL) เป็นภาษาสอบถามข้อมูลที่นิยมใช้ในแอปพลิเคชันทุกประเภท นักวิเคราะห์ข้อมูลและนักพัฒนาเรียนรู้และใช้ SQL เพราะมันบูรณาการได้ดีกับการเขียนโปรแกรมภาษาที่แตกต่างกันและยังค่อนข้างง่ายที่จะเรียนรู้ที่จะใช้คำหลักภาษาอังกฤษทั่วไปการประกาศ Apache Iceberg ช่วยให้ทุกคนที่มีความคุ้นเคยกับภาษาแบบสอบถามที่มีโครงสร้าง (SQL) เพื่อสร้างData lake และดำเนินการ Data Lake ให้มากที่สุดโดยไม่จำเป็นต้องเรียนรู้ภาษาใหม่
- ความสอดคล้องของข้อมูล: Apache Iceberg ให้ข้อมูลที่สอดคล้อง เพื่อให้แน่ใจว่าผู้ใช้ที่อ่านและเขียนข้อมูลใด ๆ ที่เห็นข้อมูลเดียวกัน
- โครงสร้างข้อมูล: Apache Iceberg ช่วยให้การเปลี่ยนแปลงที่ง่ายต่อโครงสร้างข้อมูลของคุณ ยังเป็นที่รู้จักในชื่อ schema evolution หมายความว่าผู้ใช้สามารถเพิ่มเปลี่ยนชื่อหรือลบคอลัมน์จากตารางข้อมูลโดยไม่รบกวนข้อมูลพื้นฐาน
- เวอร์ชันข้อมูล: Apache Iceberg ให้การสนับสนุนสำหรับการกำหนดรุ่นข้อมูลซึ่งจะช่วยให้ผู้ใช้สามารถติดตามการเปลี่ยนแปลงการทำงานล่วงเวลาของข้อมูล ซึ่งเปิดใช้งานคุณลักษณะ time-travel ซึ่งช่วยให้ผู้ใช้สามารถเข้าถึงและสอบถามข้อมูลในเวอร์ชันในอดีตและวิเคราะห์การเปลี่ยนแปลงข้อมูลระหว่างการอัปเดตและลบข้อมูลได้
- การสนับสนุนข้ามแพลตฟอร์ม: Apache Iceberg รองรับความหลากหลายของระบบจัดเก็บข้อมูลที่แตกต่างกันและเครื่องมือแบบสอบถามรวมทั้ง Apache Spark, Apache Hive และ Presto ซึ่งทำให้ง่ายต่อการใช้ Iceberg ในความหลากหลายของสภาพแวดล้อมการประมวลผลข้อมูลที่แตกต่างกัน
- การประมวลผลที่เพิ่มขึ้น: Iceberg สนับสนุนการประมวลผลที่เพิ่มขึ้นซึ่งจะช่วยให้ผู้ใช้สามารถประมวลผลเฉพาะข้อมูลที่มีการเปลี่ยนแปลงตั้งแต่การทำงานครั้งล่าสุดหรือที่เรียกว่า CDC (Change Data Capture) วิธีนี้จะช่วยปรับปรุงประสิทธิภาพและประสิทธิภาพในการประมวลผลข้อมูล
อะไรคือกรณีการใช้งานทั่วไปสำหรับ Apache Iceberg?
Apache Iceberg เหมาะสำหรับหลายกรณีการใช้ข้อมูล Data Lake ได้แก่:
- ตารางข้อมูลในData lakeที่จำเป็นต้องลบบ่อย เช่น เมื่อบังคับใช้กฎหมายความเป็นส่วนตัวของข้อมูล
- ตารางข้อมูลใน Data Lake ที่จำเป็นต้องมีการปรับปรุงระดับระเบียน สิ่งนี้จะเป็นประโยชน์เมื่อชุดข้อมูลของคุณต้องมีการปรับปรุงให้ทันสมัยบ่อยๆ หลังจากสรุปข้อมูลแล้ว ตัวอย่างเช่น ข้อมูลการขาย ที่อาจมีการเปลี่ยนแปลงเนื่องจากเหตุการณ์ที่เกิดภายหลัง เช่นการส่งคืนสินค้าจากลูกค้า Iceberg มีความสามารถในการปรับปรุงระเบียนของแต่ละบุคคลโดยไม่จำเป็นต้องเผยแพร่ชุดข้อมูลทั้งหมด
- ตารางข้อมูลในData lake ที่มีการเปลี่ยนแปลงที่คาดเดาไม่ได้ เช่น ตารางขนาดการเปลี่ยนช้า (SCD) ตัวอย่างของ SCD เป็นตารางการบันทึกลูกค้าที่มีชื่อสถานที่และข้อมูลการติดต่อซึ่งอาจมีการเปลี่ยนแปลงในช่วงเวลาที่ไม่รู้จัก
- เมื่อการทำธุรกรรมกับ Data Lake ต้องรับประกันความถูกต้องของข้อมูล ความทนทาน และความน่าเชื่อถือในรูปแบบตาราง Apache Iceberg สามารถนำไปใช้เพื่อให้แน่ใจในการทำธุรกรรม ACID transaction
- เมื่อมีความจำเป็นที่จะต้องย้อนเวลากลับไปสอบถามข้อมูลในอดีตเพื่อทำการวิเคราะห์แนวโน้ม วิเคราะห์การเปลี่ยนแปลงข้อมูลในช่วงระยะเวลาหนึ่ง หรือเพื่อเรียกคืนหรือย้อนกลับไปยังเวอร์ชันก่อนหน้าเพื่อแก้ไขปัญหา
ใครใช้ Apache Iceberg?
วิศวกรข้อมูล, ผู้ดูแลข้อมูล, นักวิเคราะห์ข้อมูลและนักวิทยาศาสตร์ข้อมูลเป็นหนึ่งในบุคคลที่ใช้ Apache Iceberg วิศวกรข้อมูลและผู้ดูแลระบบสามารถใช้ Apache Iceberg ในการออกแบบและสร้างระบบจัดเก็บข้อมูลที่ปรับขนาดได้ นักวิเคราะห์ข้อมูลและนักวิทยาศาสตร์ข้อมูลสามารถใช้ Apache Iceberg ในการวิเคราะห์ชุดข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ
ทำไมคุณควรเลือก Apache Iceberg?
Apache Iceberg มีวิธีที่มีประสิทธิภาพในการประมวลผลอย่างรวดเร็วสำหรับชุดข้อมูลขนาดใหญ่ มันนำมาซึ่งประโยชน์ดังต่อไปนี้
- โอเพนซอร์ส: Apache Iceberg เป็นโครงการโอเพนซอร์สซึ่งหมายความว่ามันมีอิสระที่จะใช้และสามารถปรับแต่งเพื่อตอบสนองความต้องการเฉพาะของคุณ นอกจากนี้ยังมีชุมชนที่กระตือรือร้นของนักพัฒนาที่มีการปรับปรุงอย่างต่อเนื่องและเพิ่มคุณสมบัติใหม่ให้กับโครงการ
- ความสามารถในการปรับขนาด: Apache Iceberg ถูกออกแบบมาเพื่อจัดการกับชุดข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ มันสามารถแบ่งพาร์ทิชันและจัดระเบียบข้อมูลข้ามหลายโหนด ซึ่งจะช่วยกระจายภาระงานและเพิ่มความเร็วในการประมวลผลข้อมูล
- ผลการดำเนินงาน: Apache Iceberg มีความหลากหลายของคุณสมบัติเพื่อเพิ่มประสิทธิภาพการทำงานของแบบสอบถาม รวมทั้งการจัดเก็บคอลัมน์ และเทคนิคการบีบอัด เช่น พุชดาวน์ และ Schema evolution
- ความยืดหยุ่น: Apache Iceberg ช่วยให้คุณสามารถเปลี่ยนวิธีการจัดระเบียบข้อมูลของคุณเพื่อที่จะสามารถพัฒนาในช่วงเวลาโดยไม่ต้องให้คุณเขียนคำสั่งของคุณหรือสร้างโครงสร้างข้อมูลของคุณใหม่อีกครั้ง นอกจากนี้ยังสนับสนุนรูปแบบข้อมูลและแหล่งข้อมูลหลายรูปแบบ ซึ่งทำให้ง่ายต่อการบูรณาการกับระบบที่มีอยู่
- ความน่าเชื่อถือ: Apache Iceberg ช่วยให้มั่นใจในความสอดคล้องของข้อมูลและความน่าเชื่อถือผ่านการสนับสนุนสำหรับการทำธุรกรรม คุณสามารถติดตามการเปลี่ยนแปลงของข้อมูลเมื่อเวลาผ่านไป และย้อนกลับไปเป็นเวอร์ชันเก่าเพื่อช่วยคุณแก้ไขปัญหา
บริการ AWS ใดบ้างที่สนับสนุน Iceberg
Apache Iceberg รองรับเฟรมเวิร์คการประมวลผลข้อมูลที่เป็นที่นิยมเช่น Apache Spark Apache Flink Apache Hive และ Presto บริการ AWS เช่น Amazon Redshift, Amazon Athena, Amazon EMR, AWS Glue และ Amazon Data Firehose ประกอบด้วยการสนับสนุนพื้นฐานสำหรับข้อมูลธุรกรรมในเฟรมเวิร์กของ Data Lake รวมทั้ง Apache Iceberg การใช้ Apache Iceberg ร่วมกับบริการ AWS รองรับการเปิดใช้งานการทำธุรกรรมด้วย Data Lake ซึ่งส่วนใหญ่มักจะขึ้นอยู่กับการจัดเก็บข้อมูลในS3
- Amazon Redshift เป็นบริการการวิเคราะห์ SQL และการคลังข้อมูลที่ได้รับการจัดการอย่างเต็มรูปแบบและขับเคลื่อนด้วย AI เพื่อขับเคลื่อนการตัดสินใจทางธุรกิจให้กับลูกค้าได้อย่างรวดเร็วและคุ้มค่า Amazon Redshift มอบสถาปัตยกรรมการประมวลผลแบบขนานปริมาณมาก (MPP) หลายคลัสเตอร์ และไม่ต้องใช้เซิร์ฟเวอร์ พร้อมความสามารถ ETL แบบไร้รอยต่อที่ขับเคลื่อนการวิเคราะห์แบบเกือบเรียลไทม์และกรณีการใช้งาน AI/ML ด้วยการแชร์ข้อมูล ลูกค้าสามารถใช้ Amazon Redshift เพื่อสืบค้นตาราง Apache Iceberg ใน Data Lake ได้ โดยเข้าถึงผ่านแค็ตตาล็อกข้อมูลของ AWS Glue และรวมตารางดังกล่าวเข้ากับตารางของพวกเขาในคลังข้อมูลเพื่อการวิเคราะห์ที่ครอบคลุม
- Amazon Athena เป็นบริการวิเคราะห์อินเทอร์แอคทีฟแบบไม่ต้องใช้เซิร์ฟเวอร์ที่สร้างขึ้นบนเฟรมเวิร์กโอเพนซอร์ส รองรับรูปแบบไฟล์และตารางเปิด Athena มอบวิธีการที่เรียบง่ายและยืดหยุ่นในการวิเคราะห์ข้อมูลขนาดเพตะไบต์ในที่ที่มันอาศัยอยู่ Athena ให้การสนับสนุนพื้นฐานสำหรับการอ่าน time-travel การเขียน และแบบสอบถาม DDL สำหรับตาราง Apache Iceberg ที่ใช้รูปแบบ Apache Parquet สำหรับข้อมูลและ AWS Glue catalog สำหรับ MetaStore ของพวกเขา
- Amazon EMR คือโซลูชัน Big Data สำหรับการประมวลผลข้อมูลขนาดเพตะไบต์ การวิเคราะห์เชิงโต้ตอบ และแมชชีนเลิร์นนิงโดยใช้เฟรมเวิร์กโอเพนซอร์ส เช่น Apache Spark, Hadoop, Presto และ Hive เริ่มต้นด้วย Amazon EMR 6.5.0 คุณสามารถใช้ Apache Spark 3 ในกลุ่ม Amazon EMR ที่มีตารางรูปแบบของ Iceberg EMR เฟรมเวิร์ค ที่รวมทั้ง Spark, Trino, Flink และ Hive รองรับการทำงานของ Apache Iceberg
- AWS Glue คือบริการผสานรวมข้อมูลแบบไม่ต้องใช้เซิร์ฟเวอร์ที่ช่วยอำนวยความสะดวกในการค้นหา จัดเตรียม ย้าย ผสานข้อมูลสำหรับการวิเคราะห์ แมชชีนเลิร์นนิง (ML) และการพัฒนาแอปพลิเคชันมากยิ่งขึ้น AWS Glue 3.0 และต่อมาสนับสนุนเฟรมเวิร์ค Apache Iceberg สำหรับdata lake คุณสามารถใช้ AWS Glue เพื่อดำเนินการอ่านและเขียนบนตาราง Iceberg ใน Amazon S3 หรือทำงานกับตารางIceberg โดยใช้ AWS Glue Data Catalog การดำเนินงานเพิ่มเติมรวมทั้งแทรกปรับปรุงและทุกคำสั่งของ Spark queries Spark writes ก็ยังได้รับการสนับสนุนเช่นกัน
- Amazon Data Firehose เป็นบริการแบบไม่ต้องใช้เซิร์ฟเวอร์ที่ได้รับการจัดการอย่างสมบูรณ์แบบสำหรับการส่งข้อมูลสตรีมแบบเรียลไทม์ไปยังปลายทางเช่น Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Amazon OpenSearch Serverless, Snowflake, Apache Iceberg Tables และปลายทาง HTTP ที่กำหนดเองหรือปลายทาง HTTP ที่เป็นของผู้ให้บริการบุคคลที่สามที่รองรับ รวมถึง Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Coralogix และ Elastic Amazon Data Firehose ทำให้คุณไม่จำเป็นต้องเขียนแอปพลิเคชันเองหรือจัดการทรัพยากร คุณสามารถกำหนดค่าตัวผลิตข้อมูลให้ส่งข้อมูลไปยัง Amazon Data Firehose จากนั้นข้อมูลจะถูกส่งไปยังปลายทางที่คุณระบุโดยอัตโนมัติ คุณยังสามารถกำหนดค่า Amazon Data Firehose เพื่อแปลงข้อมูลของคุณก่อนส่งได้อีกด้วย