TL, DR
แนวปฏิบัติที่ดีที่สุดที่ได้รับการยอมรับในวงการคำนวณทางวิทยาศาสตร์คืออะไรสำหรับการจัดเก็บข้อมูลที่มีโครงสร้างเป็นลำดับชั้นจำนวนมาก ตัวอย่างเช่น SQL ไม่สามารถเล่นได้ดีกับเมทริกซ์กระจัดกระจายขนาดใหญ่ มีเครื่องมือที่ดีสำหรับการจัดโครงสร้างคลังสินค้าและการวิเคราะห์ข้อมูลประเภทนี้หรือไม่? พวก LHC ใช้อะไร?
ใช้รายละเอียดเคส
ฉันต้องการจัดเก็บข้อมูลจากการจำลองโปรตีนตามลำดับชั้นดังต่อไปนี้:
protein
|__simulation conditions
|____|__residues
|____|____|__conformers
|____|____|____|__atoms
โปรตีนทุกชนิดควรตระหนักถึงสิ่งตกค้างแต่ละอะตอมทุกอะตอมควรรู้เงื่อนไขที่ใช้ในการจำลองสถานการณ์ ฯลฯ และในทางกลับกัน
แต่เดิมฉันคิดว่าฐานข้อมูลเชิงสัมพันธ์จะสมบูรณ์แบบสำหรับแอปพลิเคชันนี้และดังนั้นฉันจึงเขียนโปรแกรมโดยใช้ python และ sqlalchemey ที่เก็บข้อมูลในฐานข้อมูล SQL อย่างไรก็ตามในทางปฏิบัติโปรแกรมนี้ทำงานได้ไม่ดีนัก
ปัญหาที่ใหญ่ที่สุดเกี่ยวข้องกับความจริงที่ว่ามีเมทริกซ์ N x N ที่ระดับข้อมูลผู้ตรวจสอบที่เก็บพลังงานที่มีศักยภาพเนื่องจากการมีปฏิสัมพันธ์ระหว่างคู่ที่เป็นไปได้ทุกคู่ที่เป็นไปได้ รายการส่วนใหญ่ในเมทริกซ์เป็นศูนย์ดังนั้นฉันจึงจัดเก็บเมทริกซ์ในตารางแยกต่างหากในฐานข้อมูลในรูปแบบที่กระจัดกระจายหนึ่งแถวต่อรายการ น่าเสียดายที่การจำลองที่เกี่ยวข้องกับผู้ใช้หลายพันคนโต๊ะคู่ยังคงจบลงด้วยแถวหลายแสนแถวและ:
a) การสร้างและการสืบค้นช้ามาก (ชั่วโมง)
b) ใช้ลำดับความสำคัญของพื้นที่บนฮาร์ดไดรฟ์ของฉันมากกว่าการแสดงข้อความธรรมดาที่เทียบเท่ากันของข้อมูลในฐานะที่เป็นเมทริกซ์ที่ไม่หรี่
c) ใช้หน่วยความจำมากกว่าสิบกิกะไบต์ ตารางถูกอ่านในหน่วยความจำ
เป้าหมายสูงสุดของฉันคือการจัดเก็บการวิ่งนับหมื่นนับพัน (มาจากโปรตีนหลายพันภายใต้เงื่อนไขการจำลองหลายโหล) ในฐานข้อมูลเพื่อให้พวกเขาสามารถวิเคราะห์ร่วมกัน นี่หมายความว่าตารางที่แสดงถึงเมทริกซ์การจับคู่ที่น่าจะเติบโตประมาณหนึ่งพันล้านแถว ขณะนี้ดูเหมือนว่าฉันจะต้อง Cray หรือสัตว์ประหลาดหน่วยความจำที่ใช้ร่วมกันอื่น ๆ เพื่อที่จะสามารถเรียกใช้แบบสอบถามเดียวในฐานข้อมูลนี้
ฉันมีตัวเลือกที่ดีกว่านี้ไหม พวก LHC ใช้อะไร?