เป็นจริงหรือไม่ที่จะติดตั้งฐานข้อมูล 100 TB (จริง ๆ ประมาณ 90 TB) บน PostgreSQL โดยไม่มีการส่งข้อมูลระหว่างโหนดจำนวนหนึ่ง? มีเรื่องราวความสำเร็จ / ตัวอย่างเกี่ยวกับการตั้งค่าที่คล้ายกันหรือไม่
เป็นจริงหรือไม่ที่จะติดตั้งฐานข้อมูล 100 TB (จริง ๆ ประมาณ 90 TB) บน PostgreSQL โดยไม่มีการส่งข้อมูลระหว่างโหนดจำนวนหนึ่ง? มีเรื่องราวความสำเร็จ / ตัวอย่างเกี่ยวกับการตั้งค่าที่คล้ายกันหรือไม่
คำตอบ:
50K เขียนต่อวินาทีที่จำเป็นต้องได้รับการดูดซับมากกว่าความท้าทายปกติ แม้จะอยู่ในเกณฑ์มาตรฐานสังเคราะห์ที่มีเม็ดมีดค่อนข้างง่ายขีด จำกัด ของ PostgreSQL ก็มีแนวโน้มสูงสุดประมาณ 10 K / s - และที่นั่นคุณไม่มีสัตว์ร้ายตัวใหญ่ในแง่ของขนาดฐานข้อมูล
นอกจากนี้ระบบ I / O สำหรับโหนด PostgreSQL นั้นน่าสนใจเช่นเดียวกับ RAID 10 และสมมติว่าเม็ดมีด 50K จะเท่ากับ 50K IOPS (ซึ่งอาจผิด แต่ขึ้นอยู่กับโครงร่างฐานข้อมูลและดัชนีของคุณ ) คุณจะต้องใช้ดิสก์ประมาณร้อยที่จับคู่กับอาเรย์ที่ดีมากซึ่งช่วยให้คุณประหยัดจากการซื้อดิสก์หลายร้อยแผ่นเพื่อให้บริการการเขียนเหล่านั้นในเวลาที่เหมาะสม
หากการแบ่งส่วนเป็นเรื่องง่ายและคุณคาดหวังว่าจะมีภาระงานเขียนจำนวนมาก การเขียนอาจเป็นเรื่องยากมากที่จะขยาย
มันเป็นจริงและจะทำงาน ประสิทธิภาพการทำงานที่ใหญ่ขึ้นขึ้นอยู่กับว่าคุณมี RAM เท่าใด RAM ที่ใหญ่กว่าแคชที่ใหญ่กว่าและ PostgreSQL ที่ยาวขึ้นจะสามารถแคชข้อมูลได้ก่อนที่จะถ่ายลงดิสก์
PostgreSQL จะเขียนข้อมูลไปยังแคชและลดการโหลดแคชเป็นครั้งคราว ดังนั้น 50k INSERT ต่อวินาทีจะไม่ถูกแปลเป็น 50k IOPS มันจะน้อยลงเพราะมันจะรวมกลุ่มบันทึกและเขียนทั้งหมดพร้อมกัน
ฐานข้อมูลที่มีขนาดใหญ่ไม่ใช่ปัญหาหากงานส่วนใหญ่เป็นงาน INSERT PostgreSQL จะต้องเปลี่ยนดัชนีที่นี่และที่นั่น แต่นั่นเป็นเรื่องง่าย หากคุณมี SELECT จำนวนมากในฐานข้อมูลขนาดนี้คุณจะต้องทิ้งจริงๆ
ฉันเคยทำงานกับ Oracle DB (Oracle 10g) ที่มี 400TB บนเซิร์ฟเวอร์ 16GB หนึ่งครั้งเท่านั้น เวิร์กโหลดฐานข้อมูลเป็น INSERT หลักเช่นกันดังนั้นมี SELECT สองสามตัวต่อวันและ INSERT หลายล้านรายการต่อวัน ประสิทธิภาพการทำงานไกลจากการเป็นปัญหา
ที่ 100TB คุณมีความท้าทายที่สำคัญ ไม่ว่ามันจะทำงานให้คุณหรือไม่ขึ้นอยู่กับว่าคุณต้องการที่จะอยู่เหล่านี้
คุณต้องการวิธีที่เพียงพอในการรองรับการโหลดการเขียน ขึ้นอยู่กับภาระการเขียน แต่ด้วยพื้นที่เก็บข้อมูลที่ยอดเยี่ยมมันสามารถแก้ไขได้ ความเร็วเป็นปัญหาใหญ่ที่นี่ การเข้าถึงการอ่านในทำนองเดียวกันจะต้องดูอย่างระมัดระวัง
ฐานข้อมูลส่วนใหญ่ไม่ได้ประกอบไปด้วยตารางขนาดเล็ก แต่มักจะมีหนึ่งหรือสองตารางที่มีขนาดใหญ่จริงๆซึ่งอาจมีขนาดฐานข้อมูลได้ถึงครึ่งหนึ่ง PostgreSQL มีขีด จำกัด สูงสุดที่ 32TB ต่อตาราง หลังจากนั้นประเภท tid หมดจำนวนหน้า สิ่งนี้สามารถจัดการได้โดยการสร้างที่กำหนดเองของ PostgreSQL หรือโดยการแบ่งพาร์ติชันตาราง แต่มันเป็นความท้าทายที่สำคัญที่ต้องได้รับการแก้ไขในตอนแรก
PostgreSQL มีข้อ จำกัด ที่แท้จริงในจำนวน RAM ที่สามารถใช้สำหรับงานต่าง ๆ ดังนั้นการมี RAM มากขึ้นอาจช่วยได้หรือไม่
การสำรองข้อมูล .... การสำรองข้อมูลมีความน่าสนใจในระดับนี้ 60TB db ที่ฉันรู้ว่าต้องใช้การสำรองข้อมูล snapshot fs แล้วปลอมการสำรองข้อมูลสำหรับบาร์เทนเดสำหรับการเก็บถาวร wal การสำรองข้อมูลปลอมเหล่านี้เป็นพรอกซีสำหรับการสำรองข้อมูล fs snapshot อย่างที่ฉันบอกว่า "มันไม่ใช่การสำรองข้อมูลปลอม แต่เป็นการสำรองทางเลือก!"
มีผู้ที่มีฐานข้อมูลใกล้ช่วงนี้ ฉันพบบุคคลอย่างน้อยหนึ่งคนที่ทำงานให้กับธนาคารในประเทศเนเธอร์แลนด์ซึ่งมีฐานข้อมูล PostgreSQL 60TB อย่างไรก็ตามจริงๆแล้วมันขึ้นอยู่กับปริมาณงานและขนาดของคุณด้วยตัวมันเองไม่ใช่ปัญหา