Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

อธิบายความสอดคล้องของฐานข้อมูล

ความสอดคล้องของฐานข้อมูลคืออะไร

ความสอดคล้องของฐานข้อมูลถูกกำหนดโดยชุดของค่าที่ข้อมูลทั้งหมดชี้ไปยัง ระบบฐานข้อมูล ต้องสอดคล้องเพื่อให้สามารถอ่านและยอมรับได้อย่างถูกต้อง หากข้อมูลใดๆ ที่ไม่ตรงตามค่าที่กำหนดไว้ล่วงหน้าเข้าสู่ฐานข้อมูล จะส่งผลให้เกิดข้อผิดพลาดที่สม่ำเสมอ สำหรับชุดข้อมูล ความสอดคล้องของฐานข้อมูลทำได้โดยการสร้างกฎ ธุรกรรมใดๆ ของข้อมูล เขียน ไปยังฐานข้อมูลจะต้องเปลี่ยนเฉพาะข้อมูลที่ได้รับผลกระทบตามที่กำหนดโดยข้อจำกัด ทริกเกอร์ ตัวแปร การเรียงซ้อน ฯลฯ ที่กำหนดโดยกฎที่กำหนดโดยผู้พัฒนาฐานข้อมูลเท่านั้น

ตัวอย่างเช่น สมมติว่าคุณทำงานให้กับ National Traffic Safety Institute (NTSI) คุณได้รับมอบหมายให้สร้างฐานข้อมูลใบขับขี่ใหม่ของแคลิฟอร์เนีย ประชากรในแคลิฟอร์เนียเพิ่มขึ้นอย่างรวดเร็วในช่วงสิบปีที่ผ่านมา ทำให้ต้องมีตัวอักษรและรูปแบบตัวเลขใหม่สำหรับผู้ถือใบขับขี่ครั้งแรกทุกคน ทีมของคุณกำหนดว่าค่าที่ตั้งใหม่สำหรับใบขับขี่แคลิฟอร์เนียในฐานข้อมูลของคุณจะเป็นดังนี้:1 Alpha + 7 Numeric ตอนนี้ทุกรายการต้องปฏิบัติตามกฎนี้ รายการที่อ่านว่า “C08846024” – จะกลับมาพร้อมข้อผิดพลาด ทำไม เนื่องจากค่าที่ป้อนคือ 1 Alpha + 8 Numeric ซึ่งก็คือรูปแบบของข้อมูลที่ไม่สอดคล้องกัน .

ความสอดคล้องยังบอกเป็นนัยว่าข้อมูลใด ๆ ที่เปลี่ยนแปลงไปยังวัตถุใดวัตถุหนึ่งในตารางหนึ่งจะต้องมีการเปลี่ยนแปลงในตารางอื่น ๆ ทั้งหมดที่มีวัตถุนั้นอยู่ การรักษาตัวอย่างใบขับขี่ให้ดำเนินต่อไป หากที่อยู่บ้านของผู้ขับขี่ใหม่เปลี่ยนแปลง การอัปเดตนั้นจะต้องแสดงในตารางทั้งหมดที่มีที่อยู่ก่อนหน้านั้น หากตารางหนึ่งมีที่อยู่เก่าและอีกตารางหนึ่งมีที่อยู่ใหม่ นั่นจะเป็นตัวอย่างที่สำคัญของข้อมูลที่ไม่สอดคล้องกัน .


หมายเหตุ :ความสอดคล้องของฐานข้อมูลไม่ได้รับประกันว่าข้อมูลที่นำมาใช้ในธุรกรรมที่กำหนดนั้นถูกต้อง รับประกันว่าข้อมูลที่เขียนและอ่านภายในระบบตรงตามข้อกำหนดเบื้องต้นของข้อมูลที่มีสิทธิ์เข้าสู่ฐานข้อมูลเท่านั้น เพื่อให้ง่ายขึ้น จากตัวอย่างข้างต้น คุณสามารถป้อนธุรกรรมข้อมูลที่ตรงตามกฎ 1 Alpha + 7 Numeric ได้เป็นอย่างดี แต่ไม่ได้รับประกันว่าข้อมูลจะสอดคล้องกับใบขับขี่จริง ความสอดคล้องของฐานข้อมูลไม่ได้พิจารณาถึงความหมายของข้อมูล แต่เป็นเพียงรูปแบบเท่านั้น

เหตุใดความสอดคล้องของฐานข้อมูลจึงมีความสำคัญ

ข้อมูลที่สม่ำเสมอ คือสิ่งที่ช่วยให้ฐานข้อมูลทำงานเหมือนเครื่องจักรที่ทาน้ำมันอย่างดี กำหนดกฎ/ค่าที่ทำให้ข้อมูลไม่สอดคล้องกัน ออกจากฐานข้อมูลหลักและการจำลองทำให้การทำงานราบรื่นด้วย:

  • ความแม่นยำ
  • เพิ่มพื้นที่ฐานข้อมูล
  • ดึงข้อมูลได้เร็วและมีประสิทธิภาพมากขึ้น

ความสอดคล้องของฐานข้อมูลจะควบคุมข้อมูลทั้งหมดที่เข้ามา ดังนั้นแม้ว่าฐานข้อมูลจะเปลี่ยนแปลงเมื่อยอมรับข้อมูลใหม่ อย่างน้อยก็เปลี่ยนแปลงอย่างสม่ำเสมอและสอดคล้องกับกฎการตรวจสอบที่กำหนดขึ้นเมื่อเริ่มมีอาการ ในโลกปัจจุบัน มีการตัดสินใจหลายพันล้านเหรียญต่อวันทั่วโลกโดยอิงจากที่รับรู้ ความสม่ำเสมอของฐานข้อมูล เมื่อข้อมูลแบบเรียลไทม์กลายเป็นสถานะใหม่สำหรับธุรกิจดิจิทัลในยุคปัจจุบัน สิ่งสำคัญอย่างยิ่งที่ต้องมีกฎการตรวจสอบความถูกต้องเพื่อให้ชุดข้อมูลปลอดจากข้อมูลที่ผิดพลาด เนื่องจากจะเพิ่มเวลาแฝง ทำให้ประสบการณ์แบบเรียลไทม์ไม่เป็นจริง ถึงเวลาแล้ว

ตัวอย่างความสอดคล้องของฐานข้อมูล

ตัวอย่างของการดำเนินการความสอดคล้องของฐานข้อมูลในโลกแห่งความเป็นจริงมีอะไรบ้าง เราได้สำรวจตัวอย่างหนึ่งกับสถานการณ์ NTSI ของเราข้างต้นแล้ว มาหมุนสู่โลกแห่งการธนาคารกันเถอะ

สมมติว่าคุณกำลังโอนเงินจากบัญชีหนึ่งไปยังอีกบัญชีหนึ่ง คุณเพิ่งโอนเงิน $1200 เข้าบัญชีที่มี $300 แล้ว คุณรีเฟรช บวกคุณจะพบยอดเงินคงเหลือ 1,500 ดอลลาร์ ทว่าการดำเนินการล่าสุดนี้ไม่ได้สะท้อนอยู่ในยอดคงเหลือของคุณ อันที่จริง ยอดเงินใหม่ของคุณตอนนี้เป็น 0 เหรียญ ข้อมูลทางเทคนิคเล็กน้อยนี้เป็นตัวอย่างที่สำคัญของความสม่ำเสมอที่อ่อนแอ และน่าจะส่งผลให้ใช้เวลาในการแก้ไขปัญหากับตัวแทนธนาคาร ปัญหาเช่นนี้อาจทำให้ชื่อเสียงของแบรนด์เสื่อมเสียและต้องเสียเงินเป็นจำนวนมาก ความสอดคล้องที่แข็งแกร่งในระบบฐานข้อมูลกลายเป็นสิ่งที่ไม่สามารถต่อรองได้สำหรับนักพัฒนาซอฟต์แวร์และผู้บริโภค

ความสม่ำเสมอที่แข็งแกร่งกับความสม่ำเสมอที่อ่อนแอ

ความสม่ำเสมอที่แข็งแกร่ง หมายความว่าข้อมูลทั้งหมดในแบบจำลองหลัก แบบจำลอง และโหนดที่เกี่ยวข้องทั้งหมดนั้นสอดคล้องกับกฎการตรวจสอบความถูกต้องและจะเหมือนกันในเวลาใดก็ตาม ด้วยความสอดคล้องของฐานข้อมูลที่แข็งแกร่ง ไม่สำคัญว่าลูกค้าจะเข้าถึงข้อมูลใด พวกเขาจะเห็นข้อมูลที่อัปเดตล่าสุดซึ่งเป็นไปตามกฎที่กำหนดไว้สำหรับฐานข้อมูลเสมอ

ความสม่ำเสมอที่อ่อนแอ เป็นเหมือนสุภาษิตป่าตะวันตก ไม่มีการรับประกันว่าข้อมูลของคุณในหลัก แบบจำลอง หรือโหนดจะเหมือนกันในช่วงเวลาที่กำหนด ลูกค้ารายหนึ่งในอินเดียสามารถเข้าถึงข้อมูลและดูข้อมูลที่ผ่านกฎการตรวจสอบ แต่อาจไม่ใช่ข้อมูลที่อัปเดตล่าสุด ส่งผลให้เกิดข้อผิดพลาดที่สอดคล้องกัน . พวกเขาอาจดำเนินการกับข้อมูลที่ไม่เกี่ยวข้องอีกต่อไป แม้ว่าจะเป็นไปได้ก็ตาม

ระดับความสม่ำเสมอ

ระดับความสม่ำเสมอ เป็นค่าที่กำหนดไว้ล่วงหน้าอีกชุดหนึ่งซึ่งกำหนดจำนวนแบบจำลองหรือโหนดที่ต้องตอบสนองด้วยข้อมูลที่อนุญาตใหม่ก่อนที่จะได้รับการยอมรับว่าเป็นธุรกรรมที่ถูกต้อง การดำเนินการนี้สามารถเปลี่ยนแปลงได้ตามธุรกรรม ตัวอย่างเช่น โปรแกรมเมอร์สามารถกำหนดได้ว่ามีเพียงสองโหนดเท่านั้นที่ต้องอ่านข้อมูลอินพุตใหม่ก่อนที่จะยอมรับความสอดคล้องของข้อมูล เมื่อผ่านบารอมิเตอร์นั้น จะถือเป็นข้อมูลที่สม่ำเสมอ ต่อจากนั้น

ระดับการแยกตัว

ระดับการแยกเป็นส่วนหนึ่งของคุณสมบัติกรด (Atomicity, Consistency, Isolation, Durability) ของฐานข้อมูล ACID เป็นแนวคิดพื้นฐานของความสอดคล้องของฐานข้อมูลกับฐานข้อมูล SQL และเป็นสิ่งที่ฐานข้อมูลบางตัวปฏิบัติตามเพื่อเพิ่มประสิทธิภาพความสอดคล้องของฐานข้อมูล ความโดดเดี่ยว เป็นหนึ่งในคุณสมบัติของ ACID และแยกส่วนข้อมูลบางส่วนออกจากข้อมูลทั้งหมดในเครือข่ายฐานข้อมูลหนึ่งๆ เพื่อไม่ให้ถูกแก้ไขโดยธุรกรรมของผู้ใช้รายอื่น การแยกตัวถูกนำมาใช้เพื่อลดการอ่านและเขียนข้อมูลที่ไม่สำคัญซึ่งเกิดขึ้นในธุรกรรมที่เกิดขึ้นพร้อมกัน

ระดับการแยกมีสี่ประเภท:

  • อ่านโดยไม่มีข้อผูกมัด :ระดับต่ำสุด หยุดการอัพเดทแถวหากธุรกรรมก่อนหน้านี้ให้การอัพเดทที่ไม่มีข้อผูกมัดกับแถวนั้น
  • ตั้งใจอ่าน :ไม่อนุญาตให้ "อ่านสกปรก" สิ่งนี้จะบล็อกการอ่านหรือเขียนหากธุรกรรมได้รับการอัปเดตแล้ว แต่ยังไม่ได้ยืนยัน
  • อ่านซ้ำได้ :ระดับนี้ทำให้แถวของข้อมูลที่อ่านไม่สามารถเข้าถึงได้และอาจอัปเดต
  • ซีเรียลไลซ์ได้ :ระดับการแยกสูงสุด โดยทั่วไปทำให้เป็นอนุกรมได้จะล็อกทั้งตารางแทนที่จะเป็นแถวข้อมูลเฉพาะ

คำถามที่พบบ่อยเกี่ยวกับความสอดคล้องของฐานข้อมูล

ถ้าข้อมูลสอดคล้องกันหมายความว่าอย่างไร

ข้อมูลจะสอดคล้องกันหากปรากฏเหมือนกันในโหนดที่เกี่ยวข้องทั้งหมดพร้อมกัน โดยไม่คำนึงถึงผู้ใช้และที่ที่พวกเขาเข้าถึงข้อมูลตามภูมิศาสตร์

ความสอดคล้องของข้อมูลเหมือนกับความสอดคล้องของฐานข้อมูลหรือไม่

ไม่ ความสอดคล้องของฐานข้อมูลต้องใช้กฎการตรวจสอบความถูกต้องสำหรับการป้อนข้อมูลในเครือข่ายเพื่อให้มีความสอดคล้องกันตามสูตร กับข้อมูลอื่นๆ ทั้งหมดในตาราง

ความสอดคล้องของข้อมูลเป็นกระบวนการที่ข้อมูลจะถูกเก็บไว้อย่างเท่าเทียมกันทั่วทั้งเครือข่ายและระหว่างแอปพลิเคชันจำนวนมากที่ใช้ประโยชน์จากข้อมูลนั้น

ความสอดคล้องในที่สุดคืออะไร

ด้วยความสอดคล้องกันในที่สุด ข้อมูลที่ได้รับการอัปเดตจะมีผลในโหนดทั้งหมดที่จัดเก็บข้อมูลนั้น ในที่สุด โหนดทั้งหมดจะสร้างข้อมูลเดียวกันเมื่อใดก็ตามที่ลูกค้าเข้าถึงมันในเครือข่ายผ่านความสอดคล้องในที่สุด

ตารางเดียวในฐานข้อมูลเชิงสัมพันธ์ประกอบด้วย?

ข้อมูลทั้งหมดในฐานข้อมูลเชิงสัมพันธ์ถูกเก็บไว้ในตาราง ซึ่งประกอบด้วยแถวและคอลัมน์ จุดข้อมูลถูกจัดระเบียบในแถวและคอลัมน์เหล่านี้ แถว ซึ่งมักเรียกว่า "ระเบียน" มักแสดงถึงหมวดหมู่ของข้อมูล ในขณะที่คอลัมน์หรือ "ฟิลด์" แทน "อินสแตนซ์" พบตารางในฐานข้อมูลและช่วยป้องกันไม่ให้ข้อมูลของคุณซ้ำซ้อนด้วยการออกแบบตามหัวเรื่อง

ฐานข้อมูลเชิงสัมพันธ์ประกอบด้วยคอลเลกชันของ?

ตาราง

แบบจำลองกรดเปรียบเทียบกับแบบจำลอง BASE เป็นอย่างไร

ความแตกต่างหลัก ระหว่างรุ่น ACID และ BASE (พร้อมใช้งานโดยทั่วไป สถานะอ่อน สอดคล้องกันในที่สุด) คือในขณะที่ ACID ทำงานเพื่อปรับความสอดคล้องของฐานข้อมูลให้เหมาะสมที่สุด BASE จะเพิ่มความพร้อมใช้งานสูง ACID ช่วยให้ธุรกรรมมีความสอดคล้องกัน ดังนั้นหากคุณใช้แบบจำลอง BASE ให้ตรวจสอบให้แน่ใจว่าความสอดคล้องยังคงมีความสำคัญสูงสุดและได้รับการจัดการอย่างถี่ถ้วน

ฐานข้อมูล Redis มีความสอดคล้องกันหรือไม่

เมื่อใช้ Redis เป็นแคช ความสอดคล้องที่เป็นปัญหาอาจอยู่ระหว่างอินสแตนซ์ Redis (ตัวหลัก/ตัวจำลอง) และระหว่างแคช Redis และ Redis เป็นฐานข้อมูลหลัก ในกรณีนี้ ข้อมูลอาจไม่สอดคล้องกันหากข้อมูลระหว่างสองสิ่งนี้ไม่ตรงกัน บล็อกของเรา Three Ways to Maintain Cache Consistency กล่าวถึงวิธีแก้ปัญหานี้

สำหรับ Redis แบบโอเพนซอร์ส มีความสอดคล้องที่อ่อนแอ แต่การแจกจ่ายทางภูมิศาสตร์แบบ Active–Active ของ Redis Enterprise มีความสอดคล้องกันอย่างมากในท้ายที่สุด

สนใจเทคนิคการแคชบนคลาวด์สำหรับแอปพลิเคชันระดับองค์กรหรือไม่ คลิกด้านล่างเพื่ออ่าน Caching at Scale with Redis ของ Lee Atchison .