Data Analytics Platforms

Back to Data Engineering Index

Reference: เข้าใจ Data Warehouse, Data Lake และ Data Lakehouse ฉบับมือใหม่

สามารถแบ่ง data analytics platform ออกเป็น 3 generations ดังนี้

1st Generation: Data Warehouse

Data warehouse ซึ่งเป็นการเก็บข้อมูล structured data (ข้อมูลที่เป็น table ชัดเจน จัดระเบียบเรียบร้อย เหมือนสิ่งที่ของถูกจัดเก็บเรียบร้อยในคลังสินค้า)

Purpose

เป็นช่วงที่เรารวบรวมข้อมูลมาไว้ที่ centralized เพื่อนำไปทำการวิเคราะห์ข้อมูลและ business intelligence (BI) ซึ่งเป็น goal หลักของการทำ data analytics

Infrastructure

ส่วนใหญ่แล้ว data warehouse จะถูกติดตั้งที่ on-premises ซึ่งก็คือ server ที่ตามบริษัทเขาจะซื้อตั้งไว้เพื่อใช้เก็บเป็น storage และ compute ไปในตัว

Limitations

ถัดมาโลกของเราเริ่มมีการเก็บ storage ราคาถูกลง และความต้องการ query มีมากขึ้น อีกทั้งโลกนี้ก็มีไฟล์มากขึ้นที่ไม่ใช่แค่ structured data แล้ว แต่มี semi-structured, unstructured มากขึ้น อย่างพวกไฟล์:

  • Audio
  • Video
  • XML
  • JSON
  • Sensor data

ทำให้การใช้ data warehouse เริ่มเอาไม่อยู่

2nd Generation: Data Lake

Data Lake คือทะเลสาบที่รวบรวมข้อมูลได้ทุกรูปแบบของข้อมูล ไม่ว่าจะ structured, semi-structured, และ unstructured เพราะตัวเองเก็บข้อมูลในรูปแบบ file format ต่างๆ ได้

Evolution

ในยุคแรกๆ ของ Data lake มี Hadoop File System (HDFS) จนเมื่อปี 2015 เป็นต้นมา พวก cloud provider ต่างๆ ก็ออก service ต่างๆ ที่เป็นคอนเซปนี้ คือ:

  • AWS S3
  • Azure Data Lake
  • Google Cloud Storage

เรียกได้ว่าเป็น choice ที่เพิ่มขึ้นไปอีก

Advantages

ข้อดีของ Data Lake พวกนี้คือ:

  • ราคาถูกมากๆ
  • เลือก storage ได้ - hot หรือ cold storage
    • Hot storage: access บ่อย
    • Cold storage: access น้อยมากต่อปี, ราคาถูกกว่า
  • สามารถเก็บข้อมูลเก่าๆ ที่ไม่ค่อยใช้แล้ว backup ไว้ได้

Hybrid Architecture

ความจริงแล้วใน generation นี้ Data Lake นำมาใช้คู่กับ Data Warehouse โดยที่:

  • เก็บพวก raw data ใน Data Lake
  • Transform ข้อมูลเป็นรูปแบบ structured
  • นำเก็บไว้ที่ Data warehouse เพื่อสะดวกแก่การ analyze ข้อมูลปลายทางเช่นเดิม

Limitations

ข้อเสียของ generation นี้ยังมีอยู่:

  1. Reliability

    • หากทำ ETL ไว้ไม่ดี data lake และ data warehouse ก็จะมีข้อมูลที่ไม่สอดคล้องกัน
    • ดึงจาก data lake ก็ได้อย่างนึง ดึงจาก data warehouse ดันได้อีกอย่างหนึ่ง
  2. Data Staleness

    • data warehouse อาจได้ข้อมูลที่ช้ากว่า data lake
    • เนื่องจากรอบของข้อมูลที่ยังมาไม่ถึง เพราะอาจจะต้องรอเป็นวัน
  3. Machine Learning Challenges

    • ML ต้อง process data ที่มากขึ้นด้วยวิธี non-SQL code
    • data warehouse อาจจะไม่พอ
    • จึงต้อง export files ออกจาก Data Warehouse
    • พวก ML ทั้งหลายก็ไปอ่านจากไฟล์ตรงนี้แทน
    • สูญเสียฟีเจอร์ของ data warehouse:
      • ACID
      • Data versioning
      • Indexing
  4. Storage Cost

    • พอต้อง export ไฟล์มาอีกรอบ
    • ต้องเสียค่า storage เพิ่มเป็น 2 เท่า

3rd Generation: Data Lakehouse

Data Lakehouse คือส่วนผสมของ Data Lake และ Data Warehouse

Key Characteristics

คล้าย Data Lake

  • เก็บ raw data เหมือนกัน
  • อยู่ในรูป open file format

คล้าย Data Warehouse

  • เอาข้อดีของ Data Warehouse เข้ามา:
    • Data versioning
    • Auditing
    • Indexing
    • Caching
  • มีการทำ metadata layer บน storage
  • ระบุว่าเป็น table version ไหน
  • ใช้ tools อย่าง:
    • Delta Lake
    • Apache Iceberg

Cloud & On-Premise Support

  • Support บน cloud environment
  • แต่ก็ support on-premise storage ได้อยู่เหมือนกันอย่าง HDFS

ML Support

  • ML library เช่น TensorFlow, Spark MLlib สามารถอ่าน Parquet, ORC files ได้แล้ว
  • ใช้ dataframe ในการจัดการข้อมูล
  • มี declarative DataFrame API เกิดขึ้นมาในการ query ข้อมูลจาก Lakehouse

Modern Integration

Lakehouse ถือว่าเริ่มมีบทบาทที่สำคัญ จะเห็นได้ว่ามี data warehouse หลายๆ เจ้ามีฟีเจอร์ External table ได้แล้ว:

  • Azure Synapse
  • BigQuery
  • AWS Redshift
  • Snowflake

คือ query ข้อมูลจาก Data Lake โดยทำตัวเองเป็น Query Engine อย่างเช่น:

  • เก็บข้อมูลใน Cloud storage
  • ให้ BigQuery เป็นตัว query ไปหา

Additional Query Engines

ไม่เพียงแต่ data warehouse ที่ query ได้ ก็ยังมี SQL engines ต่างๆ ที่สามารถทำหน้าที่เป็น Query Engine ได้เหมือนกัน:

  • Spark SQL
  • Presto
  • Hive
  • AWS Athena

(แต่ถึงอย่างไร พวกนี้ก็ไม่ใช่ Data Lake นะ อย่าเข้าใจผิด)

Improvements Over Previous Generations

Data Quality

  • Schema enforcement หรือ schema validation
  • เช็คว่า table ที่เขียนจะมี schema ตรงกับที่เซ็ตไว้
  • ไม่เปลี่ยนมั่วซั่วไประหว่างทางโดยเราไม่รู้
  • ป้องกันไม่ให้ write ทันที

Data Governance

  • Access control และ audit logging
  • Metadata layer จะเช็คว่า user จะสามารถเข้าไปดูข้อมูล raw data ได้ก็ต้องมีสิทธิ์หรือ credential ก่อน

Comparison Table

GenerationStorage TypeData FormatBest ForLimitations
Data WarehouseStructuredTablesBI, ReportingLimited data types, expensive
Data LakeAll typesRaw filesBig data, MLConsistency issues, staleness
Data LakehouseAll typesOpen formats + metadataModern analytics, ML, BIComplexity in setup

Related: