ประโยชน์หลักของการจัดเก็บข้อมูลใน HDF คืออะไร และอะไรคืองานด้านวิทยาศาสตร์ข้อมูลหลักที่ HDF เหมาะสมและมีประโยชน์จริง ๆ
ประโยชน์หลักของการจัดเก็บข้อมูลใน HDF คืออะไร และอะไรคืองานด้านวิทยาศาสตร์ข้อมูลหลักที่ HDF เหมาะสมและมีประโยชน์จริง ๆ
คำตอบ:
บางทีวิธีที่ดีในการถอดความคำถามคืออะไรข้อดีเมื่อเปรียบเทียบกับรูปแบบอื่นคืออะไร
ทางเลือกหลักคือฉันคิดว่า: ฐานข้อมูลไฟล์ข้อความหรือรูปแบบไบนารี / อื่น ๆ
ตัวเลือกฐานข้อมูลที่ต้องพิจารณาน่าจะเป็นที่เก็บคอลัมน์หรือ NoSQL หรือสำหรับชุดข้อมูลขนาดเล็กที่บรรจุในตัว SQLite ข้อได้เปรียบหลักของฐานข้อมูลคือความสามารถในการทำงานกับข้อมูลที่มีขนาดใหญ่กว่าหน่วยความจำการเข้าถึงแบบสุ่มหรือจัดทำดัชนีและเพื่อเพิ่ม / ผนวก / แก้ไขข้อมูลอย่างรวดเร็ว ข้อได้เปรียบหลัก * dis * ก็คือมันช้ากว่า HDF มากสำหรับปัญหาที่ต้องอ่านและประมวลผลชุดข้อมูลทั้งหมด ข้อเสียอีกประการหนึ่งคือยกเว้นฐานข้อมูลสไตล์ฝังตัวเช่น SQLite ฐานข้อมูลเป็นระบบ (ต้องมีการลงทะเบียนการตั้งค่าการบำรุงรักษา ฯลฯ ) แทนที่จะเป็นที่เก็บข้อมูลที่มีอยู่ในตัว
ตัวเลือกรูปแบบไฟล์ข้อความคือ XML / JSON / CSV เป็น cross-platform / language / toolkit และเป็นรูปแบบเอกสารที่ดีเนื่องจากความสามารถในการอธิบายตนเอง (หรือชัดเจน :) หากไม่มีการบีบอัดจะมีขนาดใหญ่มาก (10x-100x HDF) แต่หากถูกบีบอัดจะสามารถประหยัดพื้นที่ได้ค่อนข้างมาก (XML ที่บีบอัดมีค่าเท่ากับ HDF) ข้อเสียเปรียบหลักที่นี่คือความเร็วอีกครั้ง: การแยกวิเคราะห์ข้อความช้ากว่า HDF มาก
รูปแบบไบนารีอื่น ๆ (ไฟล์ npy / npz ไฟล์ที่เป็นไฟล์ blz blaze, โพรโทคอลบัฟเฟอร์, Avro, ... ) มีคุณสมบัติคล้ายกันมากกับ HDF ยกเว้นมีการรองรับอย่างกว้างขวางน้อยกว่า (อาจถูก จำกัด เพียงหนึ่งแพลตฟอร์ม: numpy) และอาจ มีข้อ จำกัด อื่น ๆ โดยทั่วไปแล้วพวกเขาจะไม่ให้ข้อได้เปรียบที่น่าสนใจ
HDF เป็นส่วนเสริมที่ดีในฐานข้อมูลอาจทำให้การเรียกใช้แบบสอบถามเพื่อสร้างชุดข้อมูลขนาดหน่วยความจำคร่าวๆและแคชใน HDF หากข้อมูลเดียวกันจะถูกใช้มากกว่าหนึ่งครั้ง หากคุณมีชุดข้อมูลที่ได้รับการแก้ไขและมักจะประมวลผลโดยรวมให้เก็บเป็นชุดของไฟล์ HDF ที่มีขนาดเหมาะสมไม่ใช่ตัวเลือกที่ไม่ดี หากคุณมีชุดข้อมูลที่อัปเดตบ่อยๆการจัดเตรียมชุดข้อมูลบางชุดเป็นไฟล์ HDF เป็นระยะอาจยังมีประโยชน์
เพื่อสรุป HDF เป็นรูปแบบที่ดีสำหรับข้อมูลที่อ่าน (หรือเขียน) โดยทั่วไปโดยรวม มันเป็นภาษากลางหรือรูปแบบการแลกเปลี่ยนทั่วไป / ที่ต้องการสำหรับหลาย ๆ แอพพลิเคชั่นเนื่องจากรองรับและเข้ากันได้ดีมีรูปแบบจดหมายเหตุและรวดเร็วมาก
ป.ล. เพื่อให้บริบทนี้เป็นจริงประสบการณ์ล่าสุดของฉันเปรียบเทียบ HDF กับทางเลือกชุดข้อมูลขนาดเล็ก (น้อยกว่าขนาดหน่วยความจำ) ใช้เวลา 2 วินาทีในการอ่านเป็น HDF (และส่วนใหญ่อาจเป็นค่าใช้จ่ายจาก Pandas) ~ 1 นาทีในการอ่านจาก JSON; และ 1 ชั่วโมงในการเขียนไปยังฐานข้อมูล แน่นอนว่าการเขียนฐานข้อมูลอาจเร่งความเร็ว แต่คุณควรมี DBA ที่ดี! นี่คือวิธีการทำงานนอกกรอบ
ข้อดีอย่างหนึ่งคือการสนับสนุนอย่างกว้างขวาง - C, Java, Perl, Python และ R ทั้งหมดมีการเชื่อม HDF5
ข้อดีอีกอย่างคือความเร็ว ฉันไม่เคยเห็นมันมาเปรียบเทียบ แต่ HDF น่าจะเร็วกว่าฐานข้อมูล SQL
ฉันเข้าใจว่ามันดีมากเมื่อใช้กับทั้งชุดข้อมูลวิทยาศาสตร์ขนาดใหญ่และข้อมูลอนุกรมเวลา - การตรวจสอบเครือข่ายการติดตามการใช้งาน ฯลฯ
ฉันไม่เชื่อว่ามีข้อ จำกัด ขนาดสำหรับไฟล์ HDF (แม้ว่าข้อ จำกัด ของระบบปฏิบัติการจะยังคงใช้อยู่
หากต้องการเพิ่มตรวจสอบASDFโดยเฉพาะในกระดาษของพวกเขาASDF: รูปแบบข้อมูลใหม่ดาราศาสตร์ ; ASDF พยายามปรับปรุงตาม HDF5 และกระดาษอธิบายข้อเสียของรูปแบบ HDF5