หลังจากผ่านไปหลายปีที่อาศัยอยู่ในพื้นที่ "NoSQL" ตอนนี้ฉันมีปัญหาที่ค่อนข้าง "เชิงสัมพันธ์" ในธรรมชาติ วันนี้ฉันเห็นร้านค้าข้อมูลที่มีดวงตาที่แตกต่างไปจากเดิม สิ่งที่คล้ายกับ Riak ทำให้ฉันเสียไปในทางที่ฉันจะทนต่อความล้มเหลวเพียงจุดเดียวไม่ได้อีกต่อไป "ลงเพื่อซ่อมบำรุง" ฯลฯ แน่นอนว่า (หรือฉันหวังว่า) ฉันไม่ได้สติเสียอีกเลย นี่เป็นโครงการส่วนบุคคลที่ยังไม่ค่อยมีข้อกำหนดที่สูงมาก
วิธีแก้ไขปัญหาส่วนใหญ่ไม่ได้ให้สิ่งที่ฉันต้องการ (อย่างน้อยก็เหลือบ) อาจเป็นเพราะปัญหาของฉันค่อนข้าง "ง่าย" ในการแก้ปัญหา อย่างน้อยในระดับแนวคิด (ละเว้นข้อ จำกัด ที่ RDBMs นำมาสู่ตาราง)
ฉันมีข้อมูล "แบ่งปัน" เล็กน้อยซึ่งสามารถทำซ้ำได้อย่างอิสระ มันไม่ได้มีข้อกำหนดของความมั่นคงอย่างหนัก สิ่งนี้สามารถเก็บไว้ในฐานข้อมูลที่เหมือนไดนาโมและจะขยายได้อย่างไม่ จำกัด แต่ฉันก็ยังอยากจะไปกับฐานข้อมูลเดียวถ้าเป็นไปได้
ฉันมีข้อมูล "ต่อผู้ใช้" มากมาย นั่นคือ - ผู้ใช้จำนวนมากด้วยผู้ใช้ทุกคนที่มีข้อมูลที่มีขนาดพอเหมาะพอดีจะเก็บไว้ในโหนด PostgreSQL เพียงอันเดียว เรากำลังพูดถึง 10s ของพันระเบียนสูงสุด
ฉันไม่จำเป็นต้องค้นหาผู้ใช้ข้ามและฉันไม่ต้องการอะตอมมิกของผู้ใช้ข้าม
ฟังดูง่ายมาก ๆ อย่างน้อยตอนที่ฉันมองด้วยตา NoSQL ของฉัน
นี่คือแนวคิดเริ่มต้นที่ไร้เดียงสาของฉัน:
ที่สุดขีดฉันสามารถทำให้ผู้ใช้ทั้งหมดเป็นซีเรียล / คีย์ใน Riak ได้ แน่นอนการ de / serialization คงที่ของข้อมูลหลายเมกะไบต์จะช้าและนั่นคือเหตุผลที่ฉันกำลังพิจารณาใช้ PostgreSQL Riak K / Vs มากมายไม่ต้องไปเพราะฉันต้องการอะตอมมิก / ธุรกรรมภายในข้อมูลของผู้ใช้แต่ละคน
ฉันสามารถใช้ฐานข้อมูล SQLite ต่อผู้ใช้และใช้บางอย่างเช่น GlusterFS สำหรับความซ้ำซ้อน / ความพร้อมใช้งาน นี่อาจเป็นทางออกที่ฉันจะเลือกถ้าฉันไม่สามารถหาสิ่งที่ดีพอ ๆ กันเมื่อใช้ PostgreSQL จุดเด่น: สามารถลด / ลดขนาดได้ดีจริง ๆ ; ข้อด้อย: ฉันต้องการมีประเภท PostgreSQL และความเข้มงวดมากกว่า SQLite
ดังนั้นสิ่งที่ฉันควรจะขอจากโซลูชันการแบ่งส่วน PostgreSQL:
- เก็บสำเนาของข้อมูลผู้ใช้ทุกคนโดยอัตโนมัติหลายรอบ (ในเครื่องที่แตกต่างกัน) สามารถสลับโหนดหลักแบบไดนามิกต่อผู้ใช้ / ชิ้นส่วน (ถ้าต้นแบบก่อนหน้านี้ลงไป)
- สามารถปรับขนาดขึ้น / ลงแบบไดนามิกได้โดยการเพิ่ม / ลบโหนดเซิร์ฟเวอร์ ส่วนใหญ่ชอบ Riak สามารถทำ
- ไม่ต้องการให้แอปพลิเคชันของฉันรู้ว่าโหนดใดบ้างที่ควรพูดคุยและเมื่อ