นี่คือวิธีที่ฉันพูดถึง CAP เกี่ยวกับ P โดยเฉพาะ
CA เป็นไปได้เฉพาะถ้าคุณตกลงกับฐานข้อมูลเซิร์ฟเวอร์เดียวเสาหิน (อาจมีการจำลองแบบ แต่ข้อมูลทั้งหมดในหนึ่ง "บล็อกความล้มเหลว" - เซิร์ฟเวอร์จะไม่ถือว่าล้มเหลวบางส่วน)
หากปัญหาของคุณต้องใช้การขยายการกระจายและหลายเซิร์ฟเวอร์ --- พาร์ติชันเครือข่ายสามารถเกิดขึ้นได้ คุณต้องการให้มีปัญหาบางอย่างที่ P. วิธีการแก้ไขแล้วนั้นสอดคล้องกับกระบวนทัศน์เซิร์ฟเวอร์เดียวเสมอ (หรืออย่างที่ Stonebraker กล่าวว่า "การกระจายคือการเดิมพันบนโต๊ะ") หากคุณพบปัญหาเกี่ยวกับ CA โซลูชันเช่น RDBMS ที่ไม่ใช่ขนาดดั้งเดิมนั้นให้ประโยชน์มากมาย
สำหรับฉันแล้วหายาก: ดังนั้นเราจะพูดถึงเรื่อง AP vs CP
คุณเลือกระหว่างการดำเนินการ AP และ CP เท่านั้นเมื่อคุณมีพาร์ติชัน หากเครือข่ายและฮาร์ดแวร์ทำงานอย่างถูกต้องคุณจะได้เค้กและกินด้วย
เรามาคุยกันถึงความแตกต่างของ AP / CP
AP - เมื่อมีพาร์ติชันเครือข่ายให้ชิ้นส่วนอิสระทำงานได้อย่างอิสระ
CP - เมื่อมีพาร์ติชันเครือข่ายให้ปิดโหนดหรือไม่อนุญาตให้อ่านและเขียนดังนั้นจึงมีข้อผิดพลาดที่กำหนดไว้
ฉันชอบสถาปัตยกรรมที่สามารถทำได้ทั้งสองอย่างเนื่องจากปัญหาบางอย่างคือ AP และบางอย่างเป็น CP - และฐานข้อมูลบางอย่างสามารถทำได้ทั้งสองอย่าง ในบรรดาโซลูชั่น CP และ AP ก็มีรายละเอียดปลีกย่อยเช่นกัน
ตัวอย่างเช่นในชุดข้อมูล AP คุณมีความเป็นไปได้ของการอ่านที่ไม่สอดคล้องกันทั้งสองและสร้างข้อขัดแย้งในการเขียนซึ่งเป็นโหมด AP ที่แตกต่างกันสองโหมด ระบบของคุณสามารถกำหนดค่าสำหรับ AP ที่มีความพร้อมในการอ่านสูง แต่ไม่สามารถเขียนข้อขัดแย้งได้หรือไม่? หรือระบบ AP ของคุณสามารถยอมรับข้อขัดแย้งในการเขียนด้วยระบบการแก้ปัญหาที่แข็งแกร่งและยืดหยุ่นได้หรือไม่ ในที่สุดคุณจะต้องใช้ทั้งสองอย่างหรือคุณสามารถเลือกระบบที่จะใช้งานได้หรือไม่?
ในระบบ CP คุณจะมีพาร์ติชั่นขนาดเล็กจำนวนมาก (เซิร์ฟเวอร์เดียว) ถ้ามี? การจำลองแบบที่มากขึ้นสามารถเพิ่มความพร้อมใช้งานไม่ได้ในระบบ CP ระบบจะจัดการการแลกเปลี่ยนเหล่านั้นอย่างไร
นี่คือคำถามทั้งหมดที่ต้องถามกับ CP vs AP
การอ่านที่ดีในพื้นที่นี้ในขณะนี้คือโพสต์ "12 ปีต่อมา" ของ Brewer ฉันเชื่อว่าสิ่งนี้จะนำไปสู่การถกเถียงอย่างถ่องแท้ด้วยความชัดเจนและแนะนำอย่างสูง
http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed