กลับไปหน้าบทความ

อ่าน 3 นาที

หลักการออกแบบของ PACELC

เปลี่ยนทางจากการเคลื่อนไหว

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

หลักการออกแบบของ PACELC

การแลกเปลี่ยนระหว่างความพร้อมใช้งาน ความสม่ำเสมอ และความหน่วงแฝง ตามที่อธิบายไว้ในหลักการออกแบบ 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 ]ใช่ใช่ใช่
โวลต์ดีบี/เอช-สโตร์ ใช่ใช่

ดูเพิ่มเติม

หมายเหตุ

  1. ^ a b c d Dynamo, Cassandra และ Riak มีการตั้งค่าที่ผู้ใช้สามารถปรับได้เพื่อควบคุมการแลกเปลี่ยน LC [ 6 ]
  2. ^ Cosmos DB มีระดับความสอดคล้องที่เลือกได้ห้าระดับเพื่อควบคุมการแลกเปลี่ยน LC [ 11 ]

เอกสารอ้างอิง

  1. ^ a b c Golab, Wojciech (2018). "การพิสูจน์ PACELC" . ACM SIGACT News . 49 (1): 73– 81. doi : 10.1145/3197406.3197420 . S2CID  3989621 .
  2. ^ a b c Abadi, Daniel J. (2010-04-23). ​​"ข้อคิดเกี่ยวกับ DBMS: ปัญหาเกี่ยวกับ CAP และระบบ NoSQL ที่ไม่ค่อยมีใครรู้จักของ Yahoo" . สืบค้นเมื่อ2016-09-11 .
  3. ^ a b c d Abadi, Daniel J. "การแลกเปลี่ยนความสอดคล้องในการออกแบบระบบฐานข้อมูลแบบกระจายสมัยใหม่" (PDF)มหาวิทยาลัยเยล
  4. ^ Abadi, Daniel (15 กรกฎาคม 2019). "อันตรายของการรับประกันความสอดคล้องแบบมีเงื่อนไข" . DBMS Musings . สืบค้นเมื่อ29 สิงหาคม 2024 .
  5. ^ การออกแบบแอปพลิเคชันที่ใช้ข้อมูลจำนวนมาก: แนวคิดสำคัญเบื้องหลังระบบที่เชื่อถือได้ ปรับขนาดได้ และบำรุงรักษาได้ O'Reilly Media. ISBN 978-1449373320.
  6. ^ a b c Abadi, Daniel J.; Murdopo, Arinto (17 เมษายน 2555). "การแลกเปลี่ยนความสอดคล้องในการออกแบบระบบฐานข้อมูลแบบกระจายสมัยใหม่" . สืบค้นเมื่อ18 กรกฎาคม 2565 .
  7. ^ "ตารางทั่วโลก - การ จำลองแบบหลายภูมิภาคสำหรับ DynamoDB"เอกสารประกอบของ AWS สืบค้นเมื่อ4 มกราคม 2023
  8. ^ a b Abadi, Daniel (2017-10-08). "DBMS Musings: Hazelcast and the Mythical PA/EC System" . DBMS Musings . สืบค้นเมื่อ2017-10-20 .
  9. ^ a b "คู่มืออ้างอิง IMDG ของ Hazelcast" . docs.hazelcast.org . สืบค้นเมื่อ2020-09-17 .
  10. ^พอร์เตอร์, เควิน (29 มีนาคม 2023). "Aerospike อยู่ในตำแหน่งใดใน PACELC?" . ฟอรัมชุมชน Aerospike . สืบค้นเมื่อ30 มีนาคม 2023 .
  11. ^ "ระดับความสอดคล้องใน Azure Cosmos DB" . สืบค้นเมื่อ2021-06-21 .
  12. ^ Abadi, Daniel (2018-09-21). "DBMS Musings: ระบบฐานข้อมูล NewSQL ล้มเหลวในการรับประกันความสอดคล้อง และฉันโทษ Spanner" . DBMS Musings . สืบค้นเมื่อ2019-02-23 .
  13. ^ Zelinskie, Jimmy (2024-04-23). ​​"แนวคิด SpiceDB: ความสอดคล้อง" . เอกสารประกอบ SpiceDB . สืบค้นเมื่อ2024-05-02 .

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ หลักการออกแบบของ 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: หากเกิดการแบ่งพาร์ติชัน...