เป็นวิธีที่ทันสมัยในการแบ่งพาร์ติชัน PostgreSQL ในเครื่องต่าง ๆ เมื่อข้อมูลคือ“ การแบ่งพาร์ติชันตามธรรมชาติ”


22

หลังจากผ่านไปหลายปีที่อาศัยอยู่ในพื้นที่ "NoSQL" ตอนนี้ฉันมีปัญหาที่ค่อนข้าง "เชิงสัมพันธ์" ในธรรมชาติ วันนี้ฉันเห็นร้านค้าข้อมูลที่มีดวงตาที่แตกต่างไปจากเดิม สิ่งที่คล้ายกับ Riak ทำให้ฉันเสียไปในทางที่ฉันจะทนต่อความล้มเหลวเพียงจุดเดียวไม่ได้อีกต่อไป "ลงเพื่อซ่อมบำรุง" ฯลฯ แน่นอนว่า (หรือฉันหวังว่า) ฉันไม่ได้สติเสียอีกเลย นี่เป็นโครงการส่วนบุคคลที่ยังไม่ค่อยมีข้อกำหนดที่สูงมาก

วิธีแก้ไขปัญหาส่วนใหญ่ไม่ได้ให้สิ่งที่ฉันต้องการ (อย่างน้อยก็เหลือบ) อาจเป็นเพราะปัญหาของฉันค่อนข้าง "ง่าย" ในการแก้ปัญหา อย่างน้อยในระดับแนวคิด (ละเว้นข้อ จำกัด ที่ RDBMs นำมาสู่ตาราง)

  1. ฉันมีข้อมูล "แบ่งปัน" เล็กน้อยซึ่งสามารถทำซ้ำได้อย่างอิสระ มันไม่ได้มีข้อกำหนดของความมั่นคงอย่างหนัก สิ่งนี้สามารถเก็บไว้ในฐานข้อมูลที่เหมือนไดนาโมและจะขยายได้อย่างไม่ จำกัด แต่ฉันก็ยังอยากจะไปกับฐานข้อมูลเดียวถ้าเป็นไปได้

  2. ฉันมีข้อมูล "ต่อผู้ใช้" มากมาย นั่นคือ - ผู้ใช้จำนวนมากด้วยผู้ใช้ทุกคนที่มีข้อมูลที่มีขนาดพอเหมาะพอดีจะเก็บไว้ในโหนด PostgreSQL เพียงอันเดียว เรากำลังพูดถึง 10s ของพันระเบียนสูงสุด

  3. ฉันไม่จำเป็นต้องค้นหาผู้ใช้ข้ามและฉันไม่ต้องการอะตอมมิกของผู้ใช้ข้าม

ฟังดูง่ายมาก ๆ อย่างน้อยตอนที่ฉันมองด้วยตา NoSQL ของฉัน

นี่คือแนวคิดเริ่มต้นที่ไร้เดียงสาของฉัน:

  1. ที่สุดขีดฉันสามารถทำให้ผู้ใช้ทั้งหมดเป็นซีเรียล / คีย์ใน Riak ได้ แน่นอนการ de / serialization คงที่ของข้อมูลหลายเมกะไบต์จะช้าและนั่นคือเหตุผลที่ฉันกำลังพิจารณาใช้ PostgreSQL Riak K / Vs มากมายไม่ต้องไปเพราะฉันต้องการอะตอมมิก / ธุรกรรมภายในข้อมูลของผู้ใช้แต่ละคน

  2. ฉันสามารถใช้ฐานข้อมูล SQLite ต่อผู้ใช้และใช้บางอย่างเช่น GlusterFS สำหรับความซ้ำซ้อน / ความพร้อมใช้งาน นี่อาจเป็นทางออกที่ฉันจะเลือกถ้าฉันไม่สามารถหาสิ่งที่ดีพอ ๆ กันเมื่อใช้ PostgreSQL จุดเด่น: สามารถลด / ลดขนาดได้ดีจริง ๆ ; ข้อด้อย: ฉันต้องการมีประเภท PostgreSQL และความเข้มงวดมากกว่า SQLite

ดังนั้นสิ่งที่ฉันควรจะขอจากโซลูชันการแบ่งส่วน PostgreSQL:

  1. เก็บสำเนาของข้อมูลผู้ใช้ทุกคนโดยอัตโนมัติหลายรอบ (ในเครื่องที่แตกต่างกัน) สามารถสลับโหนดหลักแบบไดนามิกต่อผู้ใช้ / ชิ้นส่วน (ถ้าต้นแบบก่อนหน้านี้ลงไป)
  2. สามารถปรับขนาดขึ้น / ลงแบบไดนามิกได้โดยการเพิ่ม / ลบโหนดเซิร์ฟเวอร์ ส่วนใหญ่ชอบ Riak สามารถทำ
  3. ไม่ต้องการให้แอปพลิเคชันของฉันรู้ว่าโหนดใดบ้างที่ควรพูดคุยและเมื่อ

สวัสดีค่ะคุณแก้ปัญหานี้ได้อย่างไรในที่สุด?
Dikla

การแบ่งพาร์ติชันระดับแอปพลิเคชันที่มีที่เก็บข้อมูลหลายแห่ง ค่อนข้างยุ่งเหยิง :( เศร้าจริงๆที่ไม่มีอะไรแบบนี้ ...
loxs

คำตอบ:


5

Postgres-XLพยายามแก้ไขปัญหานี้ตั้งแต่ปี 2014 พวกเขาตั้งเป้าไปที่ข้อมูลขนาดใหญ่บน PostgreSQL โดยตรงและพวกเขามีนักพัฒนาจาก Stado onboard


นั่นดูน่าสนใจสุด ๆ
John Powell

และยังมี Postgres-XC: sourceforge.net/projects/postgres-xc
a_horse_with_no_name

4

ผมคิดว่าเป็นตัวเลือกที่ดีที่สุดคือpgpool-II คุณสามารถมีได้มากถึง 128 โหนดและ

  1. เป็นไปได้ที่จะตั้งค่าการแบ่งพาร์ติชันที่ซับซ้อนและกฎการกระจายข้อมูล
  2. สนับสนุน "การจัดเตรียมออนไลน์" ปรับขนาดการเขียนไม่ได้ แต่สามารถอ่านได้
  3. ไม่แน่ใจถ้าเป็นไปได้นอกกรอบ บางทีคุณอาจต้องใช้LVS

ตัวเลือกอื่นอาจเป็นStado

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