ตกลงลองจินตนาการว่าคุณมีฐานข้อมูลแบบกระจาย สมมติว่าคุณมีโหนดในโอเรกอนและอีกโหนดหนึ่งในแคลิฟอร์เนีย ทฤษฎี CAP บอกว่าคุณจะพบปัญหาเมื่อตั้งค่าฐานข้อมูลประเภทนี้
ตัวอย่างเช่นถ้าคุณค้นหาข้อมูลจากฐานข้อมูลหนึ่งจะต้องเหมือนกับข้อมูลในฐานข้อมูลอื่น สิ่งนี้รับประกันได้ว่าสิ่งใดก็ตามที่คุณมีในฐานข้อมูลหนึ่ง ๆ รับประกันได้ว่าจะอยู่ในอีกด้านหนึ่ง (ความสอดคล้องของทฤษฎี CAP) การทำเช่นนี้ช่วยให้คุณสามารถอัปเดตข้อมูลในฐานข้อมูลหนึ่งและสืบค้นจากอีกฐานข้อมูลหนึ่งเพื่อรับผลลัพธ์เดียวกัน
เมื่อเราอัปเดตข้อมูลในโหนดโอเรกอนข้อมูลจะถูกส่งไปยังโหนดแคลิฟอร์เนียเพื่อให้ฐานข้อมูลสอดคล้องกัน เพื่อรักษาความสอดคล้องอย่างแท้จริงเราต้องมั่นใจว่าฐานข้อมูลทั้งสองได้รับการอัปเดตก่อนที่จะอนุญาตให้บันทึกข้อมูลอย่างแท้จริง (กระทำแบบสองเฟสโดยใช้ธุรกรรมแบบกระจาย) กล่าวอีกนัยหนึ่งถ้าฐานข้อมูลแคลิฟอร์เนียไม่สามารถบันทึกข้อมูลด้วยเหตุผลบางอย่าง (เช่นฮาร์ดไดรฟ์ล้มเหลว) ดังนั้นฐานข้อมูลในโอเรกอนจะไม่บันทึกข้อมูลและจะไม่ทำธุรกรรม
ปัญหาของการทำธุรกรรมแบบกระจายอย่างที่กล่าวมาข้างต้นเกิดขึ้นเมื่อเราต้องการมีความพร้อมใช้งานสูง ในสถานการณ์สมมติข้างต้นกระบวนการพยายามทำให้ฐานข้อมูลทั้งคู่ซิงค์กันเป็นกระบวนการที่ช้ามาก (ลองนึกภาพเราต้องส่งข้อมูลจากโอเรกอนไปแคลิฟอร์เนียตรวจสอบให้แน่ใจว่าได้ไปถึงที่นั่นตรวจสอบให้แน่ใจว่าฐานข้อมูลทั้งสองมีการล็อคข้อมูลเป็นต้น) สิ่งนี้ทำให้เกิดปัญหาใหญ่เมื่อเราต้องการระบบที่รวดเร็วและตอบสนอง ครั้งของความต้องการสูง (นี่คือความพร้อมใช้ของทฤษฎีบท CAP)
โดยทั่วไปสิ่งที่เราทำเพื่อประกันความพร้อมใช้งานสูงคือเราใช้การจำลองแบบแทนธุรกรรมแบบกระจาย ดังนั้นแทนที่จะรับประกันว่าแคลิฟอร์เนียสามารถรับข้อมูลได้เราเพียงแค่ไปข้างหน้าและเก็บไว้ในโหนดโอเรกอนแล้วส่งข้อมูลไปยังแคลิฟอร์เนียเมื่อเราไปถึงที่นั่น สิ่งนี้รับประกันได้ว่าเราสามารถจัดเก็บข้อมูลได้เสมอโดยไม่คำนึงว่ารัฐแคลิฟอร์เนียพร้อมที่จะจัดเก็บข้อมูลหรือไม่
สิ่งนี้ช่วยปรับปรุงความพร้อมใช้งาน แต่ด้วยค่าใช้จ่ายของความสอดคล้อง ดูว่าถ้ามีคนอัพเดทข้อมูลในโอเรกอนแล้วบางคน (ในเวลาเดียวกัน) อ่านข้อมูลในแคลิฟอร์เนียพวกเขาจะไม่ได้รับข้อมูลใหม่ - ฐานข้อมูลไม่สอดคล้องกันอีกต่อไป ในความเป็นจริงพวกเขาจะไม่สอดคล้องกันจนกว่าโอเรกอนส่งข้อมูลไปยังแคลิฟอร์เนีย!
ดังนั้นนั่นคือความพร้อมใช้งาน -vs- ความสอดคล้องการแลกเปลี่ยน
Partition Toleranceเป็นส่วนที่สามของทฤษฎี CAP การแบ่งพาร์ติชันในบริบทนี้แนวคิดที่ว่าฐานข้อมูล (หรือระบบกระจายอื่น ๆ ) สามารถแบ่งออกเป็นส่วนต่าง ๆ และยังคงทำงานได้อย่างถูกต้อง
คำถามจะเกิดขึ้นจะเกิดอะไรขึ้นเมื่อฐานข้อมูลทั้งสองทำงานอย่างถูกต้อง แต่ลิงค์จาก Oregon ไปยัง California ถูกตัดออก?
หากเราอัปเดตฐานข้อมูลใน Oregon เราจำเป็นต้องรับข้อมูลไปยังแคลิฟอร์เนียไม่ทางใดก็ทางหนึ่ง (การทำธุรกรรมหรือการจำลองแบบกระจาย) อย่างไรก็ตามหากการเชื่อมโยงระหว่างทั้งสองถูกทำให้เสียหายระบบจะถูกแบ่งพาร์ติชันและฐานข้อมูลจะไม่ถูกเชื่อมโยงเข้าด้วยกันอีกต่อไป
เมื่อสิ่งนี้เกิดขึ้นตัวเลือกของคุณคือหยุดการอนุญาตให้อัปเดต (เพื่อรักษาความสอดคล้อง) ที่ค่าใช้จ่ายของความพร้อมใช้งานหรือเพื่อให้การอัปเดต
อย่างที่คุณเห็นความอดทนต่อพาร์ติชันสร้างการแลกเปลี่ยนโดยตรงระหว่างความสอดคล้องและความพร้อมใช้งาน
เห็นได้ชัดว่ามันมีมากกว่านั้น แต่สิ่งเหล่านี้เป็นตัวอย่างสองประการเกี่ยวกับวิธีการที่สำคัญสามประการของระบบกระจายเหล่านี้ทำงานและต่อต้านซึ่งกันและกัน คำอธิบายของJulian Browneเกี่ยวกับทฤษฎี CAP เป็นสถานที่ที่ยอดเยี่ยมในการเรียนรู้เพิ่มเติม