อาจเป็นทางเลือกที่ดีที่สุดสำหรับการจัดเก็บ CSV: Parquet Data

Apache Parquet ให้ประโยชน์หลายประการสำหรับการจัดเก็บและดึงข้อมูลเมื่อเปรียบเทียบกับวิธีการแบบเดิม เช่น CSV

รูปแบบไม้ปาร์เก้ได้รับการออกแบบสำหรับการประมวลผลข้อมูลประเภทที่ซับซ้อนได้เร็วขึ้น ในบทความนี้ เราจะพูดถึงว่ารูปแบบปาร์เก้มีความเหมาะสมกับความต้องการข้อมูลที่เพิ่มขึ้นเรื่อยๆ ในปัจจุบันอย่างไร

ก่อนที่เราจะเจาะลึกรายละเอียดของรูปแบบปาร์เก้ ให้เราทำความเข้าใจว่าข้อมูล CSV คืออะไรและความท้าทายที่เกิดขึ้นในการจัดเก็บข้อมูล

ที่เก็บข้อมูล CSV คืออะไร?

เราทุกคนเคยได้ยินเกี่ยวกับ CSV (Comma Separated Values) มาบ้างแล้ว ซึ่งเป็นหนึ่งในวิธีการจัดระเบียบและจัดรูปแบบข้อมูลที่พบบ่อยที่สุด การจัดเก็บข้อมูล CSV เป็นแบบแถว ไฟล์ CSV ถูกจัดเก็บด้วยนามสกุล .csv เราสามารถจัดเก็บและเปิดข้อมูล CSV โดยใช้ Excel, Google ชีต หรือโปรแกรมแก้ไขข้อความใดๆ ข้อมูลสามารถดูได้ทันทีเมื่อเปิดไฟล์

นั่นไม่ดี – ไม่ใช่สำหรับรูปแบบฐานข้อมูลอย่างแน่นอน

นอกจากนี้ เมื่อปริมาณข้อมูลเพิ่มขึ้น การสืบค้น จัดการ และดึงข้อมูลก็กลายเป็นเรื่องยาก

นี่คือตัวอย่างข้อมูลที่จัดเก็บไว้ในไฟล์ .CSV:

EmpId,First name,Last name, Division
2012011,Sam,Butcher,IT
2013031,Mike,Johnson,Human Resource
2010052,Bill,Matthew,Architect
2010079,Jose,Brian,IT
2012120,Adam,James,Solutions

ถ้าเราดูใน Excel เราจะเห็นโครงสร้างแถว-คอลัมน์ดังนี้

ความท้าทายกับการจัดเก็บ CSV

ที่เก็บข้อมูลแบบแถวเช่น CSV เหมาะสำหรับการดำเนินการสร้าง อัปเดต และลบ

แล้วการอ่านใน CRUD ล่ะ?

ลองนึกภาพหนึ่งล้านแถวในไฟล์ .csv ด้านบน การเปิดไฟล์และค้นหาข้อมูลที่คุณต้องการจะใช้เวลาพอสมควร ไม่เจ๋งเลย ผู้ให้บริการระบบคลาวด์ส่วนใหญ่ เช่น AWS จะเรียกเก็บเงินจากบริษัทตามจำนวนข้อมูลที่สแกนหรือจัดเก็บ – อีกครั้ง ไฟล์ CSV ใช้พื้นที่มาก

  วิธีจับคู่ลำโพง Amazon Echo Alexa สองตัวสำหรับเสียงสเตอริโอ

พื้นที่จัดเก็บ CSV ไม่มีตัวเลือกพิเศษในการจัดเก็บข้อมูลเมตา ทำให้การสแกนข้อมูลเป็นงานที่น่าเบื่อหน่าย

ดังนั้น โซลูชันที่คุ้มค่าและเหมาะสมที่สุดสำหรับการดำเนินการ CRUD ทั้งหมดคืออะไร ให้เราสำรวจ

การจัดเก็บข้อมูลปาร์เก้คืออะไร?

ปาร์เก้ เป็นรูปแบบการจัดเก็บโอเพ่นซอร์สเพื่อเก็บข้อมูล มีการใช้กันอย่างแพร่หลายในระบบนิเวศ Hadoop และ Spark ไฟล์ปาร์เก้ถูกจัดเก็บเป็นนามสกุล .parquet

ปาร์เก้เป็นรูปแบบที่มีโครงสร้างสูง นอกจากนี้ยังสามารถใช้เพื่อเพิ่มประสิทธิภาพข้อมูลดิบที่ซับซ้อนซึ่งมีอยู่จำนวนมากใน Data Lake ซึ่งสามารถลดเวลาในการสืบค้นได้อย่างมาก

Parquet ทำให้การจัดเก็บข้อมูลมีประสิทธิภาพและดึงข้อมูลได้เร็วยิ่งขึ้น เนื่องจากรูปแบบการจัดเก็บแบบแถวและแนวเสา (ไฮบริด) ในรูปแบบนี้ ข้อมูลจะถูกแบ่งพาร์ติชันตามแนวนอนและแนวตั้ง รูปแบบไม้ปาร์เก้ยังช่วยลดค่าใช้จ่ายในการแยกวิเคราะห์ในระดับมาก

รูปแบบจำกัดจำนวนโดยรวมของการดำเนินการ I/O และสุดท้ายคือต้นทุน

Parquet ยังจัดเก็บข้อมูลเมตาซึ่งเก็บข้อมูลเกี่ยวกับข้อมูล เช่น สคีมาข้อมูล จำนวนค่า ตำแหน่งของคอลัมน์ ค่าต่ำสุด จำนวนค่าสูงสุดของกลุ่มแถว ประเภทของการเข้ารหัส ฯลฯ ข้อมูลเมตาจะถูกจัดเก็บที่ระดับต่างๆ ในไฟล์ ทำให้เข้าถึงข้อมูลได้เร็วขึ้น

ในการเข้าถึงแบบอิงแถว เช่น CSV การดึงข้อมูลต้องใช้เวลาเนื่องจากคิวรีต้องนำทางผ่านแต่ละแถวและรับค่าคอลัมน์เฉพาะ ด้วยที่เก็บไม้ปาร์เก้ คุณสามารถเข้าถึงคอลัมน์ที่จำเป็นทั้งหมดได้ในครั้งเดียว

สรุป,

  • ปาร์เก้ขึ้นอยู่กับโครงสร้างเสาสำหรับการจัดเก็บข้อมูล
  • เป็นรูปแบบข้อมูลที่เหมาะสมที่สุดเพื่อจัดเก็บข้อมูลที่ซับซ้อนจำนวนมากในระบบจัดเก็บข้อมูล
  • รูปแบบไม้ปาร์เก้มีวิธีต่างๆ สำหรับการบีบอัดและเข้ารหัสข้อมูล
  • ช่วยลดเวลาในการสแกนข้อมูลและเวลาในการสืบค้นข้อมูลได้อย่างมาก และใช้พื้นที่ดิสก์น้อยกว่าเมื่อเทียบกับรูปแบบการจัดเก็บอื่นๆ เช่น CSV
  • ลดจำนวนการดำเนินการ IO ให้น้อยที่สุด ลดต้นทุนของการจัดเก็บและการดำเนินการค้นหา
  • รวมข้อมูลเมตาที่ทำให้ค้นหาข้อมูลได้ง่ายขึ้น
  • ให้การสนับสนุนโอเพ่นซอร์ส

รูปแบบข้อมูลไม้ปาร์เก้

ก่อนเข้าสู่ตัวอย่าง เรามาทำความเข้าใจว่าข้อมูลถูกจัดเก็บในรูปแบบ Parquet อย่างไรให้ละเอียดยิ่งขึ้น:

เราสามารถมีพาร์ติชั่นแนวนอนหลายตัวที่เรียกว่ากลุ่มแถวในไฟล์เดียว ภายในแต่ละกลุ่มแถว การแบ่งพาร์ติชันในแนวตั้งจะถูกนำไปใช้ คอลัมน์ถูกแบ่งออกเป็นส่วน ๆ ของคอลัมน์หลายคอลัมน์ ข้อมูลจะถูกเก็บไว้เป็นหน้าภายในกลุ่มคอลัมน์ แต่ละหน้ามีค่าข้อมูลที่เข้ารหัสและข้อมูลเมตา ดังที่เราได้กล่าวไว้ก่อนหน้านี้ ข้อมูลเมตาสำหรับไฟล์ทั้งหมดจะถูกเก็บไว้ที่ส่วนท้ายของไฟล์ที่ระดับกลุ่ม Row ด้วย

เนื่องจากข้อมูลถูกแบ่งออกเป็นส่วนๆ ของคอลัมน์ การเพิ่มข้อมูลใหม่โดยการเข้ารหัสค่าใหม่ลงในกลุ่มและไฟล์ใหม่ก็ทำได้ง่ายเช่นกัน จากนั้นข้อมูลเมตาจะได้รับการอัปเดตสำหรับไฟล์ที่ได้รับผลกระทบและกลุ่มแถว ดังนั้นเราจึงสามารถพูดได้ว่าไม้ปาร์เก้เป็นรูปแบบที่ยืดหยุ่นได้

Parquet รองรับการบีบอัดข้อมูลโดยใช้การบีบอัดหน้าและเทคนิคการเข้ารหัสพจนานุกรม มาดูตัวอย่างง่ายๆ ของการบีบอัดพจนานุกรม:

  วิธีบล็อกใครบางคนใน Strava

โปรดทราบว่าในตัวอย่างข้างต้น เราเห็นแผนกไอที 4 ครั้ง ดังนั้นในขณะที่จัดเก็บในพจนานุกรม รูปแบบจะเข้ารหัสข้อมูลด้วยค่าอื่นที่ง่ายต่อการจัดเก็บ (0,1,2…) พร้อมกับจำนวนครั้งที่ทำซ้ำอย่างต่อเนื่อง – IT, IT เปลี่ยนเป็น 0,2 เพื่อบันทึก พื้นที่มากขึ้น. การสืบค้นข้อมูลที่บีบอัดใช้เวลาน้อยลง

เปรียบเทียบตัวต่อตัว

ตอนนี้ เรามีแนวคิดที่เป็นธรรมว่ารูปแบบ CSV และ Parquet เป็นอย่างไร ถึงเวลาที่สถิติบางอย่างจะเปรียบเทียบทั้งสองรูปแบบ:

CSV
ปาร์เก้
รูปแบบการจัดเก็บตามแถว
ไฮบริดของรูปแบบการจัดเก็บแบบอิงแถวและแบบคอลัมน์
ใช้พื้นที่มากเนื่องจากไม่มีตัวเลือกการบีบอัดเริ่มต้น ตัวอย่างเช่น ไฟล์ 1TB จะใช้พื้นที่เดียวกันเมื่อจัดเก็บไว้ใน Amazon S3 หรือระบบคลาวด์อื่นๆ
บีบอัดข้อมูลขณะจัดเก็บ จึงใช้พื้นที่น้อยลง ไฟล์ขนาด 1 TB ที่จัดเก็บในรูปแบบ Parquet จะใช้พื้นที่เพียง 130GB
เวลาเรียกใช้แบบสอบถามช้าเนื่องจากการค้นหาตามแถว สำหรับแต่ละคอลัมน์ ต้องดึงข้อมูลทุกแถว
เวลาสืบค้นเร็วขึ้นประมาณ 34 เท่า เนื่องจากการจัดเก็บแบบคอลัมน์และการมีอยู่ของข้อมูลเมตา
ต้องสแกนข้อมูลเพิ่มเติมต่อการสืบค้นแต่ละครั้ง
ข้อมูลถูกสแกนน้อยลงประมาณ 99% สำหรับการดำเนินการค้นหา ซึ่งจะช่วยเพิ่มประสิทธิภาพการทำงาน
อุปกรณ์จัดเก็บข้อมูลส่วนใหญ่จะคิดค่าบริการตามพื้นที่จัดเก็บ ดังนั้นรูปแบบ CSV จึงมีต้นทุนการจัดเก็บที่สูง
ค่าใช้จ่ายในการจัดเก็บน้อยลงเนื่องจากข้อมูลถูกจัดเก็บในรูปแบบที่บีบอัดและเข้ารหัส
สคีมาไฟล์จะต้องมีการอนุมาน (ทำให้เกิดข้อผิดพลาด) หรือจัดทำขึ้น (น่าเบื่อ)
สคีมาไฟล์ถูกเก็บไว้ในข้อมูลเมตา
รูปแบบนี้เหมาะสำหรับประเภทข้อมูลทั่วไป
ปาร์เก้เหมาะสำหรับประเภทที่ซับซ้อน เช่น สคีมาที่ซ้อนกัน อาร์เรย์ พจนานุกรม

สรุป 👩‍💻

เราได้ดูตัวอย่างแล้วว่าไม้ปาร์เก้มีประสิทธิภาพมากกว่า CSV ในแง่ของต้นทุน ความยืดหยุ่น และประสิทธิภาพ เป็นกลไกที่มีประสิทธิภาพในการจัดเก็บและดึงข้อมูล โดยเฉพาะอย่างยิ่งเมื่อคนทั้งโลกกำลังมุ่งสู่การจัดเก็บข้อมูลบนคลาวด์และการเพิ่มประสิทธิภาพพื้นที่ แพลตฟอร์มหลักทั้งหมด เช่น Azure, AWS และ BigQuery รองรับรูปแบบ Parquet

เรื่องล่าสุด

x