Data Expert 01 :
มักจะเกิดคำถามที่ว่า บริษัททั่วไปจะใช้ Data ทำอะไรได้บ้าง??
เริ่มต้น
Problem Owner -- Data Consumer --- Data Platform (Data Infra เช่น พวก Data Center) --- Data producer
ตอนนี้ พนักงาน Data ทุกคน แทบจะใส่หมวกทุกตำแหน่งใน Data อยู่แล้ว ดังนั้น อย่ายึดติดกับหมวกให้มากนัก
เริ่มต้นภารกิจ Collect Data
ก่อนอื่นต้องเข้าใจว่า ปกติ มักได้รับ Quest มา 1 อัน แต่เรากลับต้องแก้ไขปัญหาในทุกๆ อันจนจบอยู่แล้ว
ยกตัวอย่างเช่น Quest ที่ 1
Problem Owner แล้วก็มาตัดสินใจว่า Data ที่มีอยู่ทำอย่างไรกับมันดี
มันจะเกิด Quest ที่ 2
Collect Data -- Data Injection (Raw Data มักจะใช้ไม่ได้)
ยกตัวอย่าง
การที่เราไป Query ใน Production Database แล้วเกิดระบบล่ม มันคือความผิดเรา เราจึงต้องไปสร้าง Data Storage ไว้ข้างนอกอีกทีหนึ่งก่อน ถึงตอนนี้ เราต้องโยนข้อมูลลงไปใน Data Storage
เริ่มแนวคิดจาก Data Warehouse (เดิมจะ Transform แล้วโยนเข้าไปเลย แต่ข้อมูล Raw มันจะสูญหาย ซึ่งทำให้การวิเคราะห์มันสูญหายอีก)
ดังนั้น เราจึงเลือกถมข้อมูลดิบ Raw Data ทั้งหมดลงไปใน Data Lake ก่อน แล้วค่อย Transform ไปที่ Data WareHouse อีกที
ถึงตรงนี้ ระบบวิเคราะห์ ก็จะสามารถดึงข้อมูลได้ทั้งจาก Data Warehouse และ Data Lake
ดังนั้น ปัจจุบัน ก็เอามารวมกันเลยที่ Data LakeHouse อีกที
การดึงข้อมูล
ถึงตอนนี้ มีข้อมูล มาแล้ว แต่ข้อมูลมันมีเยอะมากๆ แต่เราต้อง Clean ข้อมูลก่อน
มันจะมี 2 อย่างคือ
Batch Compute ( Hive (Mapreduce) + Spark SQL เพื่อส่งเป็น Mapreduce) ดึงข้อมูลมาเยอะ ทำทีเดียว
Interactive Compute (Presto (SQL) +Druid (คำนวนแต่ต้องเตรียมข้อมูลบางส่วนก่อน) +StarRocks ตัวใหม่สุด) ดึงข้อมูลมาน้อยๆ แล้ว ทำทีละน้อยๆ
Apache Hadoop (Map Reduce Hive คือ SQL ใน Map Reduce )
DuckDB โปรแกรม ใน Laptop โยนข้อมูลเข้าไป (จะทำตัวเหมือน Druid )
แต่ SQL บน Hive หรือ DuckDB มันจะต้องเปลี่ยนนิดหน่อย ดังนั้นต้องจำ ว่า ใช้ Engine ไหนอยู่
ปัจจุบัน ผ่าน โปรแกรม SQLglot มันจะแปล SQL ไปเป็น MySQL . Hive DuckDB Presto Spark ได้เลย
Brute-Force
มันต้องทำแบบออโต้ แต่มันต้องเรียงลำดับการทำงานให้ถูก
DAG (Directed Acyclic Graph)
ต้องวาด Flow ของข้อมูล ให้ได้ ก่อนจึงจะสามารถทำให้ Auto ได้ ตอนนี้จะใช้ Apache Airflow Dagster Azkaban(Linkedin) Luigi
ถึงตรงนี้ ถ้าเราเอาบางส่วนมาแก้ไข ระบบ Data ทั้งหมด ก็อาจล่มได้ ดังนั้นเราต้องสร้าง Test Environment ขึ้นมาอีก (จากระบบ DAG นี่แหละ)
การใช้ข้อมูล
Distribute Resources แยกเรือ่งที่สำคัญ กับ เรื่องที่ไม่สำคัญ
Cluster Management Prioritize work and Separate Cluster , Development Production by tasks
Create awareness ต้องโชว์คิวงาน เพราะ คนที่ส่งงานมา ไม่ได้งาน ก็จะส่งซ้ำๆ เข้าไปอีก ระบบล่มอีก
Incident Management การสื่อสาร เช่น ถ้าระบบล่ม เรากำลังซ่อมอะไรอยู่ รอกี่โมง
แยกเป็นกลุ่ม Leader , Operation users , General user (Low Code) Advanced users (Code first)
ความคิดเห็น
แสดงความคิดเห็น