รูปแบบข้อมูลลำดับชั้น ข้อดีเมื่อเปรียบเทียบกับรูปแบบอื่นคืออะไร


28

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

คำตอบ:


25

บางทีวิธีที่ดีในการถอดความคำถามคืออะไรข้อดีเมื่อเปรียบเทียบกับรูปแบบอื่นคืออะไร

ทางเลือกหลักคือฉันคิดว่า: ฐานข้อมูลไฟล์ข้อความหรือรูปแบบไบนารี / อื่น ๆ

ตัวเลือกฐานข้อมูลที่ต้องพิจารณาน่าจะเป็นที่เก็บคอลัมน์หรือ 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 ที่ดี! นี่คือวิธีการทำงานนอกกรอบ


เราสามารถพูดได้ไหมว่า HDF เป็นรูปแบบการจัดเรียงคอลัมน์? ฉันไม่ได้มีความเชี่ยวชาญมากเกินไปกับสิ่งเหล่านี้ แต่ตัวอย่าง HDF ที่ฉันทำงานด้วยดูเหมือนจะนำเสนอคุณสมบัติภายนอกของการรวมข้อมูลตามคอลัมน์
Félix Gagnon-Grenier

ทั้งฐานข้อมูลและ HDF ให้ "ความสามารถในการทำงานกับข้อมูลที่มีขนาดใหญ่กว่าหน่วยความจำ" ดังนั้นฉันไม่คิดว่ามันถูกต้องที่จะบอกว่านี่เป็นข้อดีของฐานข้อมูลบน HDF ตั้งแต่ (สิ่งที่พวกเขาเรียกว่า 'i / o บางส่วน' คือ ฟีเจอร์หลักdavis.lbl.gov/Manuals/HDF5-1.8.7/UG/12_Dataspaces.html
David LeBauer

11

ข้อดีอย่างหนึ่งคือการสนับสนุนอย่างกว้างขวาง - C, Java, Perl, Python และ R ทั้งหมดมีการเชื่อม HDF5

ข้อดีอีกอย่างคือความเร็ว ฉันไม่เคยเห็นมันมาเปรียบเทียบ แต่ HDF น่าจะเร็วกว่าฐานข้อมูล SQL

ฉันเข้าใจว่ามันดีมากเมื่อใช้กับทั้งชุดข้อมูลวิทยาศาสตร์ขนาดใหญ่และข้อมูลอนุกรมเวลา - การตรวจสอบเครือข่ายการติดตามการใช้งาน ฯลฯ

ฉันไม่เชื่อว่ามีข้อ จำกัด ขนาดสำหรับไฟล์ HDF (แม้ว่าข้อ จำกัด ของระบบปฏิบัติการจะยังคงใช้อยู่


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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.