ฐานข้อมูล 100 เทราไบต์บน PostgreSQL โดยไม่ต้องแบ่งส่วน


9

เป็นจริงหรือไม่ที่จะติดตั้งฐานข้อมูล 100 TB (จริง ๆ ประมาณ 90 TB) บน PostgreSQL โดยไม่มีการส่งข้อมูลระหว่างโหนดจำนวนหนึ่ง? มีเรื่องราวความสำเร็จ / ตัวอย่างเกี่ยวกับการตั้งค่าที่คล้ายกันหรือไม่


4
ฉันคิดว่ามันขึ้นอยู่กับปริมาณงานของคุณ มีการกระจายข้อมูลอย่างไรและจะมีการสอบถามอย่างไร คุณต้องการเวลาตอบสนองแบบใด
Frank Farmer

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

คำตอบ:


9

50K เขียนต่อวินาทีที่จำเป็นต้องได้รับการดูดซับมากกว่าความท้าทายปกติ แม้จะอยู่ในเกณฑ์มาตรฐานสังเคราะห์ที่มีเม็ดมีดค่อนข้างง่ายขีด จำกัด ของ PostgreSQL ก็มีแนวโน้มสูงสุดประมาณ 10 K / s - และที่นั่นคุณไม่มีสัตว์ร้ายตัวใหญ่ในแง่ของขนาดฐานข้อมูล

นอกจากนี้ระบบ I / O สำหรับโหนด PostgreSQL นั้นน่าสนใจเช่นเดียวกับ RAID 10 และสมมติว่าเม็ดมีด 50K จะเท่ากับ 50K IOPS (ซึ่งอาจผิด แต่ขึ้นอยู่กับโครงร่างฐานข้อมูลและดัชนีของคุณ ) คุณจะต้องใช้ดิสก์ประมาณร้อยที่จับคู่กับอาเรย์ที่ดีมากซึ่งช่วยให้คุณประหยัดจากการซื้อดิสก์หลายร้อยแผ่นเพื่อให้บริการการเขียนเหล่านั้นในเวลาที่เหมาะสม

หากการแบ่งส่วนเป็นเรื่องง่ายและคุณคาดหวังว่าจะมีภาระงานเขียนจำนวนมาก การเขียนอาจเป็นเรื่องยากมากที่จะขยาย


ตกลง. นี่คือโดเมนของระบบประเภท ExaData ที่น่าเศร้าที่การได้รับ 50k IOPS เป็นเรื่องที่ค่อนข้างลำบากสำหรับ SSD ในตอนนี้สิ่งเหล่านี้จะมีราคาแพง ฉันคาดหวังว่าจะมีงบประมาณ 7 หลักที่มากขึ้นสำหรับฮาร์ดแวร์รวมถึงระดับกลางถึงระดับสูงของ SAN
TomTom

ใช่ ExaData เป็นตัวเลือกหากคุณต้องการไปที่ "สแต็กการแก้ปัญหาแบบบูรณาการในแนวตั้ง" ซึ่งอาจไม่เลวเมื่อพิจารณาถึงความต้องการ
pfo

ใช่. มีข้อได้เปรียบที่ร้ายแรงสำหรับบางสิ่งเช่นนั้นทั้ง 100tb และ 50,000 iops ไม่ได้กรีดร้องว่า "ถูก" " Exadata ทำอะไร - 1 ล้าน IOPS เมื่อเต็มไปด้วย SSD?
TomTom

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

ฉันเห็นด้วยอย่างยิ่ง. ช่วงเวลาที่งบประมาณของคุณสำหรับ SAN ได้รับการประเมินมูลค่าจำนวนสองแสนครั้งก็เปลี่ยนไป
TomTom

1

มันเป็นจริงและจะทำงาน ประสิทธิภาพการทำงานที่ใหญ่ขึ้นขึ้นอยู่กับว่าคุณมี RAM เท่าใด RAM ที่ใหญ่กว่าแคชที่ใหญ่กว่าและ PostgreSQL ที่ยาวขึ้นจะสามารถแคชข้อมูลได้ก่อนที่จะถ่ายลงดิสก์

PostgreSQL จะเขียนข้อมูลไปยังแคชและลดการโหลดแคชเป็นครั้งคราว ดังนั้น 50k INSERT ต่อวินาทีจะไม่ถูกแปลเป็น 50k IOPS มันจะน้อยลงเพราะมันจะรวมกลุ่มบันทึกและเขียนทั้งหมดพร้อมกัน

ฐานข้อมูลที่มีขนาดใหญ่ไม่ใช่ปัญหาหากงานส่วนใหญ่เป็นงาน INSERT PostgreSQL จะต้องเปลี่ยนดัชนีที่นี่และที่นั่น แต่นั่นเป็นเรื่องง่าย หากคุณมี SELECT จำนวนมากในฐานข้อมูลขนาดนี้คุณจะต้องทิ้งจริงๆ

ฉันเคยทำงานกับ Oracle DB (Oracle 10g) ที่มี 400TB บนเซิร์ฟเวอร์ 16GB หนึ่งครั้งเท่านั้น เวิร์กโหลดฐานข้อมูลเป็น INSERT หลักเช่นกันดังนั้นมี SELECT สองสามตัวต่อวันและ INSERT หลายล้านรายการต่อวัน ประสิทธิภาพการทำงานไกลจากการเป็นปัญหา


1

ที่ 100TB คุณมีความท้าทายที่สำคัญ ไม่ว่ามันจะทำงานให้คุณหรือไม่ขึ้นอยู่กับว่าคุณต้องการที่จะอยู่เหล่านี้

  1. คุณต้องการวิธีที่เพียงพอในการรองรับการโหลดการเขียน ขึ้นอยู่กับภาระการเขียน แต่ด้วยพื้นที่เก็บข้อมูลที่ยอดเยี่ยมมันสามารถแก้ไขได้ ความเร็วเป็นปัญหาใหญ่ที่นี่ การเข้าถึงการอ่านในทำนองเดียวกันจะต้องดูอย่างระมัดระวัง

  2. ฐานข้อมูลส่วนใหญ่ไม่ได้ประกอบไปด้วยตารางขนาดเล็ก แต่มักจะมีหนึ่งหรือสองตารางที่มีขนาดใหญ่จริงๆซึ่งอาจมีขนาดฐานข้อมูลได้ถึงครึ่งหนึ่ง PostgreSQL มีขีด จำกัด สูงสุดที่ 32TB ต่อตาราง หลังจากนั้นประเภท tid หมดจำนวนหน้า สิ่งนี้สามารถจัดการได้โดยการสร้างที่กำหนดเองของ PostgreSQL หรือโดยการแบ่งพาร์ติชันตาราง แต่มันเป็นความท้าทายที่สำคัญที่ต้องได้รับการแก้ไขในตอนแรก

  3. PostgreSQL มีข้อ จำกัด ที่แท้จริงในจำนวน RAM ที่สามารถใช้สำหรับงานต่าง ๆ ดังนั้นการมี RAM มากขึ้นอาจช่วยได้หรือไม่

  4. การสำรองข้อมูล .... การสำรองข้อมูลมีความน่าสนใจในระดับนี้ 60TB db ที่ฉันรู้ว่าต้องใช้การสำรองข้อมูล snapshot fs แล้วปลอมการสำรองข้อมูลสำหรับบาร์เทนเดสำหรับการเก็บถาวร wal การสำรองข้อมูลปลอมเหล่านี้เป็นพรอกซีสำหรับการสำรองข้อมูล fs snapshot อย่างที่ฉันบอกว่า "มันไม่ใช่การสำรองข้อมูลปลอม แต่เป็นการสำรองทางเลือก!"

มีผู้ที่มีฐานข้อมูลใกล้ช่วงนี้ ฉันพบบุคคลอย่างน้อยหนึ่งคนที่ทำงานให้กับธนาคารในประเทศเนเธอร์แลนด์ซึ่งมีฐานข้อมูล PostgreSQL 60TB อย่างไรก็ตามจริงๆแล้วมันขึ้นอยู่กับปริมาณงานและขนาดของคุณด้วยตัวมันเองไม่ใช่ปัญหา

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