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