สรุป data fundamentals ใน 51 นาที (Azure Data fundamentals)
จาก lecture ของ mew_sandbox — สรุปเนื้อหา Azure Data Fundamentals (DP-900)
- Data 3 ประเภท: Structured (SQL), Semi-structured (JSON), Unstructured (BLOB) — File formats: Avro (row), Parquet/ORC (columnar)
- OLTP (เขียนเร็ว ACID) vs OLAP (อ่านเร็ว analytics) — Pipeline: ETL vs ELT — Warehouse vs Lakehouse
- Azure ecosystem: Blob Storage tiers (Hot→Cool→Archive), Spark/Data Bricks, Cosmos DB, Power BI — Partition ก่อน Index
Azure Data Fundamentals (DP-900) เป็น cert ระดับเริ่มต้น — เนื้อหากว้างแต่ไม่ลึก ไม่ได้ยากจนต้องปวดหัว แต่ก็มีของให้จำเยอะอยู่นะ นี่คือของที่ต้องรู้
ประเภทของ Data
Data มี 3 ประเภท ง่ายๆ เลย: Structured — เก็บในตาราง schema ตายตัว (fix column types) ใช้ relational database Semi-structured — JSON/XML มี key-value แต่ schema เปลี่ยนได้ตามอารมณ์ Unstructured — images, audio, PDF เก็บเป็น binary/blob unstructured data ทุกประเภทใช้ BLOB (Binary Large Object) ในการจัดเก็บ
File Stores
File formats แบ่งเป็นสองค่าย: Human-readable (CSV, JSON, XML — มนุษย์อ่านรู้เรื่อง แต่ query ช้า) กับ Optimized formats (ทำมาเพื่อ compression + query speed โดยเฉพาะ)
ในค่าย optimized: Avro เป็น row-based — ดีสำหรับ write เพราะเขียนต่อเนื่องไหลลื่น Parquet กับ ORC เป็น columnar — เก็บทีละคอลัมน์แยกจากกัน → ดีสำหรับ query เพราะดึงเฉพาะคอลัมน์ที่อยากได้ → อ่านเร็ว compact Parquet ถูกใช้หนักมากในวงการ Data Lakehouse
Relational vs NoSQL
Relational (SQL) เก็บแบบตาราง — schema ชัด — query ด้วย SQL — ตัวอย่าง: PostgreSQL, Azure SQL NoSQL ไม่มี fixed schema — แต่ละ record จะมี structure ต่างกัน — 4 ประเภท: Key-Value, Document DB (MongoDB), Column-family (Cassandra), Graph DB (เน้น relationships)
OLTP vs OLAP
OLTP (Online Transaction Processing): เน้น write — ธนาคาร โอนเงิน CRUD — ใช้ ACID (Atomicity, Consistency, Isolation, Durability) — high rate, real-time OLAP (Online Analytical Processing): เน้นอ่าน — analytics, reporting — query ทีละเยอะๆ — ไม่ต้อง ACID ก็ได้ ไม่มีใครตายถ้า report ช้าไป 2 วิ
Rule of thumb ง่ายๆ: OLTP → Normalize (แยกตาราง ลด duplication → write เร็ว data integrity) — OLAP → Denormalize (รวมตาราง ลด JOIN → read เร็ว)
Data Pipeline & Architecture
Pipeline: Raw Data → ETL/ELT → Warehouse/Lakehouse → Analytics
ETL (Extract → Transform → Load): แปลงก่อนโหลด — clean แล้วค่อยเก็บ ELT (Extract → Load → Transform): โหลดดิบๆ ก่อน ค่อยแปลงทีหลัง — modern approach เพราะ storage มันถูกแล้ว
สอง architecture หลักที่ต้องรู้จัก: Data Warehouse: เก็บ data ที่ cleaned/transformed แล้วใน Star Schema (Fact Table + Dimension Tables) → query ด้วย SQL — ตัวอย่าง: BigQuery, Azure Synapse — รับเฉพาะ structured data Data Lake: เก็บ raw data ทุกประเภทใน Cloud Object Storage (Azure Blob) → แต่ query ยาก ต้อง process ก่อนถึงจะใช้ได้ Data Lakehouse: เอาข้อดีของทั้งสองมารวมกัน — raw data อยู่ใน lake เหมือนเดิม → แต่ query ได้ผ่าน Spark engine → ไม่ต้องย้ายเข้า warehouse ให้เสียเวลา Delta Lake เพิ่มความเทพ: enforce schema ได้ (คล้าย ACID) — ทำให้ Lake มีความสามารถเทียบเท่า Warehouse
Azure Storage
Blob Types: Block Blob (binary files รูป/วิดีโอ), Page Blob (VM disks), Append Blob (logging — add อย่างเดียว append อย่างเดียว)
Storage Tiers: Hot (เร็ว แพง) → Cool (ช้าลง ถูกลง) → Archive (ช้าที่สุด ถูกที่สุด) ตั้ง lifecycle management policy → auto move data ตามเงื่อนไข → ประหยัดตังค์แบบไม่ต้องคิดเอง
Azure Table Storage: NoSQL key-value — ใช้ Partition Key + Row Key จัดระเบียบข้อมูล
Partitioning & Indexing
ไม่ใช่สิ่งเดียวกันนะ อย่าจำสลับ Partitioning: แบ่งข้อมูลเป็น partition → ลด scope การค้นหา — เลือกแค่ partition ที่มีข้อมูลที่อยากได้ Indexing: ใช้หลัง partition → เร่งการค้นหาภายใน partition ใช้ร่วมกัน: Partition ก่อน → Index ภายใน → ประสิทธิภาพสูงสุด Azure Cosmos DB ทำ automatic indexing + partitioning ให้แบบไม่ต้องตั้งค่าเอง
Batch vs Stream Processing
Batch: เก็บ data → process เป็นช่วงๆ (hourly/daily) — เหมาะกับงานหนัก complex — ถูกกว่า Stream: process ทันที (real-time ระดับวินาที) — เหมาะกับ simple aggregation — แพงกว่า Lambda/Delta Architecture: ใช้ทั้งคู่ — real-time data → stream, historical data → batch → combine results Delta แนะนำมากกว่าเพราะซับซ้อนน้อยกว่า
Queue Systems: buffer ระหว่าง event source กับ processor — ป้องกัน data loss — decouple producer/consumer ให้ไม่ต้องผูกติดกัน
Apache Spark & Azure Data Bricks
Spark: open source engine สำหรับ large-scale data processing — รองรับ Java, Scala, Python — รันเป็น cluster — fault tolerance ในตัว Azure Data Bricks: product ของ Microsoft — ใช้ Spark เป็น query engine ข้างหลัง Power BI: tool สร้าง dashboard/reports — sync data จาก Warehouse
Star Schema
Fact Table (ตรงกลาง) — เก็บ events/transactions (quantity, revenue, time key, product key) Dimension Tables (ล้อมรอบ) — context (Customer, Product, Time, Location) ใช้สำหรับ analytics ใน Data Warehouse
Actionable
Knowledge
- อ่านเพิ่ม: Apache Spark Basics, Delta Lake, Azure Cosmos DB
Active practice
- แยกประเภท data ใน project: structured/semi-structured/unstructured → เลือก storage ให้เหมาะสม
- ประเมิน OLTP vs OLAP → เลือก normalization strategy
- ทดลองใช้ Parquet format สำหรับ data ที่ query บ่อย
- เปรียบเทียบ Warehouse vs Lakehouse — architecture ไหนเหมาะกับ use case
Environment
- ศึกษา Azure Storage tiers + lifecycle policy → optimize cost