สรุป 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