อ่าน 3 นาที
หลักการออกแบบของ PACELC
ในทฤษฎีฐานข้อมูลหลักการออกแบบ PACELCเป็นส่วนขยายของทฤษฎีบท CAPโดยระบุว่า ในกรณีที่มีการแบ่งส่วนเครือข่าย (P) ในระบบคอมพิวเตอร์แบบกระจาย จะต้องเลือกระหว่างความพร้อมใช้งาน (A)...
หลักการออกแบบของ PACELC

ในทฤษฎีฐานข้อมูลหลักการออกแบบ PACELCเป็นส่วนขยายของทฤษฎีบท CAPโดยระบุว่า ในกรณีที่มีการแบ่งส่วนเครือข่าย (P) ในระบบคอมพิวเตอร์แบบกระจาย จะต้องเลือกระหว่างความพร้อมใช้งาน (A) และความสอดคล้อง (C) (ตามทฤษฎีบท CAP) แต่ในกรณีอื่นๆ (E) แม้ว่าระบบจะทำงานได้ตามปกติในกรณีที่ไม่มีการแบ่งส่วน ก็ต้องเลือกระหว่างความหน่วง (L) และการสูญเสียความสอดคล้อง (C)
ภาพรวม
ทฤษฎีบท CAPสามารถเขียนได้เป็น "PAC" ซึ่งเป็นทฤษฎีบทที่เป็นไปไม่ได้ที่ว่าไม่มีที่เก็บข้อมูลแบบกระจายใดที่จะมีความสอดคล้องและพร้อมใช้งานในการดำเนินการที่มีการแบ่งพาร์ติชันได้ สิ่งนี้สามารถพิสูจน์ได้โดยการตรวจสอบความหน่วง: หากระบบรับประกันความสอดคล้อง ความหน่วงในการดำเนินการจะเพิ่มขึ้นตามความล่าช้าของข้อความ และด้วยเหตุนี้การดำเนินการจึงไม่สามารถสิ้นสุดลงได้ในที่สุดหากเครือข่ายถูกแบ่งพาร์ติชัน กล่าวคือ ระบบไม่สามารถรับประกันความพร้อมใช้งานได้[ 1 ]
ในกรณีที่ไม่มีพาร์ติชัน ทั้งความสอดคล้องและความพร้อมใช้งานสามารถเป็นไปได้[ 2 ]ดังนั้น PACELC จึงดำเนินการต่อไปและตรวจสอบว่าระบบจำลองข้อมูลอย่างไร โดยเฉพาะอย่างยิ่ง ในกรณีที่ไม่มีพาร์ติชัน จะมี การแลกเปลี่ยน เพิ่มเติม (ELC) ระหว่างความหน่วงและความสอดคล้อง[ 3 ]หากที่เก็บข้อมูลมีความสอดคล้องแบบอะตอมิก ผลรวมของความล่าช้าในการอ่านและการเขียนจะมีค่าอย่างน้อยเท่ากับความล่าช้าของข้อความ ในทางปฏิบัติ ระบบส่วนใหญ่จะอาศัยการยืนยันอย่างชัดเจนมากกว่าความล่าช้าตามเวลาเพื่อให้แน่ใจว่ามีการส่งมอบ ซึ่งต้องใช้การเดินทางไปกลับของเครือข่ายเต็มรูปแบบและดังนั้นจึงมีความล่าช้าของข้อความทั้งในการอ่านและการเขียนเพื่อให้มั่นใจในความสอดคล้อง[ 1 ]ในทางตรงกันข้าม ในระบบที่มีความหน่วงต่ำ ความสอดคล้องจะถูกผ่อนคลายเพื่อลดความหน่วง[ 2 ]
ในระบบ PACELC มีรูปแบบหรือข้อแลกเปลี่ยนอยู่สี่แบบ:
- PA/EL - ให้ความสำคัญกับความพร้อมใช้งานและความหน่วงต่ำมากกว่าความสม่ำเสมอ
- PA/EC - เมื่อมีการแบ่งพาร์ติชัน ให้เลือกความพร้อมใช้งาน มิเช่นนั้น ให้เลือกความสอดคล้อง
- PC/EL - เมื่อมีการแบ่งพาร์ติชัน ให้เลือกความสม่ำเสมอ มิเช่นนั้น ให้เลือกความหน่วงที่ต่ำกว่า
- PC/EC - เลือกความสม่ำเสมออยู่เสมอ
PC/EC และ PA/EL นำเสนอโมเดลการรับรู้ตามธรรมชาติสำหรับนักพัฒนาแอปพลิเคชัน ระบบ PC/EC ให้การรับประกันความสอดคล้องของอะตอมอย่างมั่นคง เช่นเดียวกับ ACID ในขณะที่ PA/EL ให้ความพร้อมใช้งานสูงและความหน่วงต่ำด้วยโมเดลความสอดคล้องที่ซับซ้อนกว่า ในทางตรงกันข้าม ระบบ PA/EC และ PC/EL ให้การรับประกันความสอดคล้องแบบมีเงื่อนไขเท่านั้น นักพัฒนายังคงต้องเขียนโค้ดเพื่อจัดการกับกรณีที่การรับประกันไม่เป็นไปตามที่คาดไว้ ระบบ PA/EC นั้นหายากนอกเหนือจากอุตสาหกรรมกริดข้อมูลในหน่วยความจำ ซึ่งระบบต่างๆ จะถูกจัดวางไว้ในภูมิภาคทางภูมิศาสตร์ และการแลกเปลี่ยนระหว่างความหน่วงและความสอดคล้องนั้นไม่สำคัญ[ 4 ] PC/EL นั้นเข้าใจยากยิ่งกว่า PC ไม่ได้บ่งชี้ว่าระบบมีความสอดคล้องอย่างสมบูรณ์ แต่บ่งชี้ว่าระบบจะไม่ลดความสอดคล้องลงไปเกินระดับความสอดคล้องพื้นฐานเมื่อเกิดการแบ่งส่วนเครือข่าย แต่จะลดความพร้อมใช้งานลงแทน[ 3 ]
ผู้เชี่ยวชาญบางคน เช่น Marc Brooker โต้แย้งว่าทฤษฎีบท CAPมีความเกี่ยวข้องเป็นพิเศษในสภาพแวดล้อมที่มีการเชื่อมต่อเป็นระยะๆ เช่น สภาพแวดล้อมที่เกี่ยวข้องกับอินเทอร์เน็ตของสิ่งต่างๆ (IoT) และแอปพลิเคชันมือถือในบริบทเหล่านี้ อุปกรณ์อาจถูกแบ่งแยกเนื่องจากสภาวะทางกายภาพที่ท้าทาย เช่นไฟฟ้าดับหรือเมื่อเข้าไปในพื้นที่จำกัด เช่น ลิฟต์ สำหรับระบบแบบกระจายเช่นแอปพลิเคชันบนคลาวด์การใช้ PACELC จะเหมาะสมกว่า เนื่องจากมีความครอบคลุมมากกว่าและพิจารณาถึงข้อแลกเปลี่ยนต่างๆ เช่นความหน่วงและความสม่ำเสมอแม้ว่าจะไม่มีการแบ่งแยกเครือข่ายก็ตาม[ 5 ]
ประวัติศาสตร์
หลักการออกแบบ PACELC ได้รับการอธิบายครั้งแรกโดยDaniel Abadiจากมหาวิทยาลัยเยลในปี 2010 ในบทความบล็อก[ 2 ]ซึ่งเขาได้ชี้แจงเพิ่มเติมในเอกสารในปี 2012 [ 3 ]วัตถุประสงค์ของ PACELC คือการแก้ไขวิทยานิพนธ์ของเขาที่ว่า "การละเลยการแลกเปลี่ยนระหว่างความสอดคล้อง/ความหน่วงของระบบจำลองเป็นข้อผิดพลาดที่สำคัญ [ใน CAP] เนื่องจากมีอยู่ตลอดเวลาในระหว่างการทำงานของระบบ ในขณะที่ CAP มีความเกี่ยวข้องเฉพาะในกรณีที่ค่อนข้างหายากของการแบ่งส่วนเครือข่าย" PACELC ได้รับการพิสูจน์อย่างเป็นทางการในปี 2018 ในบทความข่าว SIGACT [ 1 ]
ฐานข้อมูลการจัดอันดับ PACELC
ฐานข้อมูลดั้งเดิมให้คะแนน PACELC มาจาก[ 6 ]การอัปเดตในภายหลังได้รับการสนับสนุนจากชุมชนวิกิพีเดีย
- เวอร์ชันเริ่มต้น (ภายใน) ของ Amazon สำหรับ Dynamo , Cassandra , RiakและCosmos DBนั้นเป็นระบบ PA/EL: หากเกิดการแบ่งพาร์ติชัน ระบบเหล่านี้จะยอมลดความสอดคล้องของข้อมูลเพื่อแลกกับความพร้อมใช้งาน และในการทำงานปกติ ระบบเหล่านี้จะยอมลดความสอดคล้องของข้อมูลเพื่อแลกกับความหน่วงที่ต่ำกว่า
- ระบบ ACID ที่สมบูรณ์แบบ เช่นVoltDB /H-Store, Megastore, MySQL ClusterและPostgreSQLจัดเป็นระบบ PC/EC: ระบบเหล่านี้ปฏิเสธที่จะละทิ้งความสอดคล้องของข้อมูล และจะยอมเสียค่าใช้จ่ายด้านความพร้อมใช้งานและเวลาแฝงเพื่อให้ได้มาซึ่งความ สอดคล้องนั้น Bigtableและระบบที่เกี่ยวข้อง เช่นHBaseก็จัดเป็นระบบ PC/EC เช่นกัน
- Amazon DynamoDB (เปิดตัวในเดือนมกราคม 2012) ค่อนข้างแตกต่างจากDynamo รุ่นแรก (ภายใน Amazon)ซึ่งถูกนำมาพิจารณาในเอกสาร PACELC [ 6 ] DynamoDB ใช้โมเดลผู้นำที่แข็งแกร่ง โดยที่การเขียนทุกครั้งจะถูกจัดลำดับอย่างเคร่งครัด (และการเขียนแบบมีเงื่อนไขจะไม่ส่งผลเสีย) และรองรับความสอดคล้องแบบอ่านหลังจากเขียน การรับประกันนี้ไม่ครอบคลุมถึง "ตารางทั่วโลก[ 7 ] " ข้ามภูมิภาค SDK ของ DynamoDB ใช้การอ่านที่สอดคล้องกันในที่สุดเป็นค่าเริ่มต้น (ปรับปรุงความพร้อมใช้งานและปริมาณงาน) แต่เมื่อมีการร้องขอการอ่านที่สอดคล้องกัน บริการจะส่งคืนมุมมองปัจจุบันของรายการหรือข้อผิดพลาด
- Couchbase มีตัวเลือกความสม่ำเสมอและความพร้อมใช้งานที่หลากหลายในระหว่างการแบ่งพาร์ติชัน และมีตัวเลือกความหน่วงและความสม่ำเสมอที่หลากหลายเช่นกันเมื่อไม่มีการแบ่งพาร์ติชัน แตกต่างจากฐานข้อมูลส่วนใหญ่ Couchbase ไม่มีชุด API เดียว และไม่ได้ปรับขนาด/จำลองบริการข้อมูลทั้งหมดอย่างสม่ำเสมอ สำหรับการเขียน Couchbase ให้ความสำคัญกับความสม่ำเสมอมากกว่าความพร้อมใช้งาน ทำให้จัดเป็น CP อย่างเป็นทางการ แต่สำหรับการอ่านนั้นมีความแปรผันที่ผู้ใช้ควบคุมได้มากขึ้น ขึ้นอยู่กับการจำลองดัชนี ระดับความสม่ำเสมอที่ต้องการ และประเภทของการเข้าถึง (การค้นหาเอกสารเดียว เทียบกับการสแกนช่วง เทียบกับการค้นหาข้อความเต็ม ฯลฯ) ยิ่งไปกว่านั้น ยังมีความแปรผันเพิ่มเติมขึ้นอยู่กับการจำลองข้ามศูนย์ข้อมูล (XDCR) ซึ่งใช้คลัสเตอร์ CP หลายคลัสเตอร์และเชื่อมต่อเข้าด้วยกันด้วยการจำลองแบบอะซิงโครนัส และ Couchbase Lite ซึ่งเป็นฐานข้อมูลแบบฝังตัวและสร้างโทโพโลยีแบบกระจายหลายมาสเตอร์อย่างสมบูรณ์ (พร้อมการติดตามการแก้ไข)
- Cosmos DBรองรับระดับความสอดคล้องที่ปรับแต่งได้ห้าระดับ ซึ่งช่วยให้สามารถแลกเปลี่ยนระหว่าง C/A ในช่วง P และ L/C ในช่วง E ได้Cosmos DBจะไม่ละเมิดระดับความสอดคล้องที่ระบุไว้ ดังนั้นจึงจัดเป็น CP อย่างเป็นทางการ
- MongoDBจัดอยู่ในประเภทระบบ PA/EC (Progressive Access Control) ในกรณีพื้นฐาน ระบบจะรับประกันว่าข้อมูลการอ่านและการเขียนมีความสอดคล้องกัน
- PNUTS เป็นระบบ PC/EL
- Hazelcast IMDG และโดยส่วนใหญ่แล้ว data grid ในหน่วยความจำนั้นเป็นการใช้งานระบบ PA/EC; Hazelcast สามารถกำหนดค่าให้เป็น EL แทนที่จะเป็น EC ได้[ 8 ]พรีมิทีฟการทำงานพร้อมกัน (Lock, AtomicReference, CountDownLatch เป็นต้น) สามารถเป็นได้ทั้ง PC/EC หรือ PA/EC [ 9 ]
- FaunaDB ใช้ Calvin ซึ่งเป็นโปรโตคอลธุรกรรมที่สร้างโดย ดร. Daniel Abadi ผู้เขียน[ 3 ]เอกสาร PACELC ฉบับดั้งเดิม และเสนอการควบคุมที่ปรับได้สำหรับการแลกเปลี่ยน LC ให้กับผู้ใช้ โดยเป็น PC/EC สำหรับธุรกรรมที่สามารถเรียงลำดับได้อย่างเคร่งครัด และ EL สำหรับการอ่านที่สามารถเรียงลำดับได้
| ดีดีบีเอส | พี+เอ | พี+ซี | อี+แอล | อี+ซี |
|---|---|---|---|---|
| แอโรสไปค์[ 10 ] | จ่ายเพียงเท่านั้น | ไม่จำเป็น | ||
| บิ๊กเทเบิล/เอชเบส | ||||
| แคสแซนดรา | ||||
| คอสมอส ดีบี | ||||
| คอชเบส | ||||
| ไดนาโม | ||||
| ไดนาโมดีบี | ||||
| FaunaDB [ 12 ] | ||||
| Hazelcast IMDG [ 8 ] [ 9 ] | ||||
| เมกะสโตร์ | ||||
| มงโกดีบี | ||||
| คลัสเตอร์ MySQL | ||||
| ถั่ว | ||||
| โพสต์เกรสซีอาร์ | ||||
| ริแอค | ||||
| SpiceDB [ 13 ] | ||||
| โวลต์ดีบี/เอช-สโตร์ |
ดูเพิ่มเติม
- ทฤษฎีบท CAP
- แบบจำลองความสอดคล้อง
- ความเข้าใจผิดเกี่ยวกับการประมวลผลแบบกระจาย
- สถาปัตยกรรม Lambda (โซลูชัน)
- แพ็กซอส (วิทยาการคอมพิวเตอร์)
- สามเหลี่ยมการบริหารโครงการ
- ราฟต์ (อัลกอริทึม)
- ไตรปัญหา
หมายเหตุ
เอกสารอ้างอิง
- ^ a b c Golab, Wojciech (2018). "การพิสูจน์ PACELC" . ACM SIGACT News . 49 (1): 73– 81. doi : 10.1145/3197406.3197420 . S2CID 3989621 .
- ^ a b c Abadi, Daniel J. (2010-04-23). "ข้อคิดเกี่ยวกับ DBMS: ปัญหาเกี่ยวกับ CAP และระบบ NoSQL ที่ไม่ค่อยมีใครรู้จักของ Yahoo" . สืบค้นเมื่อ2016-09-11 .
- ^ a b c d Abadi, Daniel J. "การแลกเปลี่ยนความสอดคล้องในการออกแบบระบบฐานข้อมูลแบบกระจายสมัยใหม่" (PDF)มหาวิทยาลัยเยล
- ^ Abadi, Daniel (15 กรกฎาคม 2019). "อันตรายของการรับประกันความสอดคล้องแบบมีเงื่อนไข" . DBMS Musings . สืบค้นเมื่อ29 สิงหาคม 2024 .
- ^ การออกแบบแอปพลิเคชันที่ใช้ข้อมูลจำนวนมาก: แนวคิดสำคัญเบื้องหลังระบบที่เชื่อถือได้ ปรับขนาดได้ และบำรุงรักษาได้ O'Reilly Media. ISBN 978-1449373320.
- ^ a b c Abadi, Daniel J.; Murdopo, Arinto (17 เมษายน 2555). "การแลกเปลี่ยนความสอดคล้องในการออกแบบระบบฐานข้อมูลแบบกระจายสมัยใหม่" . สืบค้นเมื่อ18 กรกฎาคม 2565 .
- ^ "ตารางทั่วโลก - การ จำลองแบบหลายภูมิภาคสำหรับ DynamoDB"เอกสารประกอบของ AWS สืบค้นเมื่อ4 มกราคม 2023
- ^ a b Abadi, Daniel (2017-10-08). "DBMS Musings: Hazelcast and the Mythical PA/EC System" . DBMS Musings . สืบค้นเมื่อ2017-10-20 .
- ^ a b "คู่มืออ้างอิง IMDG ของ Hazelcast" . docs.hazelcast.org . สืบค้นเมื่อ2020-09-17 .
- ^พอร์เตอร์, เควิน (29 มีนาคม 2023). "Aerospike อยู่ในตำแหน่งใดใน PACELC?" . ฟอรัมชุมชน Aerospike . สืบค้นเมื่อ30 มีนาคม 2023 .
- ^ "ระดับความสอดคล้องใน Azure Cosmos DB" . สืบค้นเมื่อ2021-06-21 .
- ^ Abadi, Daniel (2018-09-21). "DBMS Musings: ระบบฐานข้อมูล NewSQL ล้มเหลวในการรับประกันความสอดคล้อง และฉันโทษ Spanner" . DBMS Musings . สืบค้นเมื่อ2019-02-23 .
- ^ Zelinskie, Jimmy (2024-04-23). "แนวคิด SpiceDB: ความสอดคล้อง" . เอกสารประกอบ SpiceDB . สืบค้นเมื่อ2024-05-02 .
ลิงก์ภายนอก
- "ข้อแลกเปลี่ยนด้านความสอดคล้องในการออกแบบระบบฐานข้อมูลแบบกระจายสมัยใหม่" โดย แดเนียล เจ. อาบาดี มหาวิทยาลัยเยลบทความต้นฉบับที่วางกรอบ PACELC อย่างเป็นทางการ
- "ปัญหาเกี่ยวกับ CAP และระบบ NoSQL ที่ไม่ค่อยมีใครรู้จักของ Yahoo" โดย Daniel J. Abadi จากมหาวิทยาลัยเยลบทความต้นฉบับที่อธิบายถึง PACELC เป็นครั้งแรก
- "การพิสูจน์ทฤษฎีบท PACELC" โดย Wojciech Golab มหาวิทยาลัยวอเตอร์ลูการพิสูจน์อย่างเป็นทางการของทฤษฎีบท PACELC
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ หลักการออกแบบของ PACELC
ในทฤษฎีฐานข้อมูลหลักการออกแบบ PACELCเป็นส่วนขยายของทฤษฎีบท CAPโดยระบุว่า ในกรณีที่มีการแบ่งส่วนเครือข่าย (P) ในระบบคอมพิวเตอร์แบบกระจาย จะต้องเลือกระหว่างความพร้อมใช้งาน (A)...
ภาพรวม
ทฤษฎีบท CAPสามารถเขียนได้เป็น "PAC" ซึ่งเป็นทฤษฎีบทที่เป็นไปไม่ได้ที่ว่าไม่มีที่เก็บข้อมูลแบบกระจายใดที่จะมีความสอดคล้องและพร้อมใช้งานในการดำเนินการที่มีการแบ่งพาร์ติชันได้ สิ่งนี้สามารถพิสูจน์ได้โดยการตรวจสอบความหน่วง: หากระบบรับประกันความสอดคล้อง...
ประวัติศาสตร์
หลักการออกแบบ PACELC ได้รับการอธิบายครั้งแรกโดยDaniel Abadiจากมหาวิทยาลัยเยลในปี 2010 ในบทความบล็อก[ 2 ]ซึ่งเขาได้ชี้แจงเพิ่มเติมในเอกสารในปี 2012 [ 3 ]วัตถุประสงค์ของ PACELC คือการแก้ไขวิทยานิพนธ์ของเขาที่ว่า...
ฐานข้อมูลการจัดอันดับ PACELC
ฐานข้อมูลดั้งเดิมให้คะแนน PACELC มาจาก[ 6 ]การอัปเดตในภายหลังได้รับการสนับสนุนจากชุมชนวิกิพีเดีย เวอร์ชันเริ่มต้น (ภายใน) ของ Amazon สำหรับ Dynamo , Cassandra , RiakและCosmos DBนั้นเป็นระบบ PA/EL: หากเกิดการแบ่งพาร์ติชัน...