อ่าน 2 นาที
การออกแบบฐานข้อมูลเชิงวิวัฒนาการ
การออกแบบฐานข้อมูลเชิงวิวัฒนาการ เกี่ยวข้องกับการปรับปรุง โครงสร้างฐานข้อมูล ทีละน้อย เพื่อให้สามารถอัปเดตได้อย่างต่อเนื่องตามการเปลี่ยนแปลงที่สะท้อนถึงความต้องการของลูกค้า...
การออกแบบฐานข้อมูลเชิงวิวัฒนาการ
การออกแบบฐานข้อมูลเชิงวิวัฒนาการเกี่ยวข้องกับการปรับปรุงโครงสร้างฐานข้อมูลทีละน้อยเพื่อให้สามารถอัปเดตได้อย่างต่อเนื่องตามการเปลี่ยนแปลงที่สะท้อนถึงความต้องการของลูกค้า ผู้คนทั่วโลกทำงานกับซอฟต์แวร์ชิ้นเดียวกันในเวลาเดียวกัน ดังนั้นจึงมีความจำเป็นต้องใช้เทคนิคที่ช่วยให้การพัฒนาฐานข้อมูล เป็นไปอย่างราบรื่น เมื่อการออกแบบพัฒนาขึ้น วิธีการดังกล่าวใช้การปรับโครงสร้าง อัตโนมัติ และการบูรณาการอย่างต่อเนื่องเพื่อสนับสนุนวิธีการแบบ Agileสำหรับการพัฒนาซอฟต์แวร์ เทคนิคการพัฒนาเหล่านี้ถูกนำไปใช้กับระบบที่อยู่ใน ขั้นตอน ก่อนการผลิตและระบบที่เปิดตัวแล้ว เทคนิคเหล่านี้ไม่เพียงแต่ครอบคลุมการเปลี่ยนแปลงที่เกี่ยวข้องในโครงสร้างฐานข้อมูลตามความต้องการที่เปลี่ยนแปลงไปของลูกค้าเท่านั้น แต่ยังรวมถึงการย้ายข้อมูลที่แก้ไขแล้วเข้าไปในฐานข้อมูลและการปรับแต่งรหัสการเข้าถึงฐานข้อมูลให้เหมาะสมโดยไม่เปลี่ยนแปลงความหมายของข้อมูลด้วย[ 1 ]
ประวัติศาสตร์
หลังจากใช้โมเดล Waterfallมาเป็นเวลานาน อุตสาหกรรมซอฟต์แวร์ได้เห็นการเพิ่มขึ้นของการนำวิธีการ Agile มาใช้ในการพัฒนาซอฟต์แวร์วิธีการ Agileไม่ได้ถือว่าข้อกำหนดจะคงที่ในทุกขั้นตอนของวงจรชีวิตซอฟต์แวร์วิธีการเหล่านี้ได้รับการออกแบบมาเพื่อรองรับการเปลี่ยนแปลงเป็นระยะๆ ซึ่งแตกต่างจากเทคนิคการออกแบบ Waterfall ส่วนสำคัญของแนวทางนี้คือการพัฒนาแบบวนซ้ำซึ่งวงจรชีวิตซอฟต์แวร์ทั้งหมดจะถูกดำเนินการหลายครั้งในระหว่างอายุของโครงการ การวนซ้ำแต่ละครั้งจะเห็นวงจรชีวิตการพัฒนาซอฟต์แวร์ที่สมบูรณ์ แม้ว่าการวนซ้ำจะมีระยะเวลาสั้น ซึ่งอาจแตกต่างกันไปตั้งแต่หลายสัปดาห์ถึงไม่กี่เดือน[ 1 ]
ก่อนที่จะนำวิธีการเหล่านี้มาใช้ ระบบทั้งหมดได้รับการออกแบบก่อนที่จะเริ่มพัฒนาโค้ด หลักการเดียวกันนี้ถูกนำมาใช้กับโครงสร้างฐานข้อมูลเช่นกัน โดยถือว่าโครงสร้างฐานข้อมูลนั้นได้มาจากข้อกำหนดของซอฟต์แวร์ซึ่งได้รับการพัฒนาโดยความร่วมมือระหว่างลูกค้า ผู้ใช้ปลายทาง นักวิเคราะห์ธุรกิจ ฯลฯ และข้อกำหนดเหล่านี้ไม่คาดว่าจะเปลี่ยนแปลงไปตามความคืบหน้าในการพัฒนาซอฟต์แวร์ แนวทางนี้พิสูจน์แล้วว่ายุ่งยาก เพราะเมื่อเวลาผ่านไป ความซ้ำซ้อนในโครงสร้างฐานข้อมูลที่มีอยู่ในรูปแบบของแถวหรือคอลัมน์ที่ไม่ได้ใช้งานก็ปรากฏชัด ความซ้ำซ้อนนี้รวมถึง ปัญหา ด้านคุณภาพข้อมูลกลายเป็นเรื่องที่มีค่าใช้จ่ายสูง สรุปได้ว่าการปฏิบัติที่ไม่ให้การออกแบบสลับกับการสร้างและการทดสอบนั้นไม่มีประสิทธิภาพอย่างมาก[ 1 ]
เทคนิค
ดังที่กล่าวไว้ในหัวข้อก่อนหน้านี้ วิธีการวิวัฒนาการมีลักษณะเป็นการทำซ้ำ และวิธีการเหล่านี้ได้รับความนิยมอย่างมากในช่วงสองทศวรรษที่ผ่านมา การออกแบบฐานข้อมูลเชิงวิวัฒนาการมีเป้าหมายที่จะสร้างโครงสร้างฐานข้อมูลไปเรื่อยๆ ตลอดระยะเวลาของโครงการ แทนที่จะสร้างโครงสร้างฐานข้อมูลทั้งหมดในตอนเริ่มต้นโครงการ วิธีการออกแบบฐานข้อมูลนี้สามารถรองรับและจัดการกับความต้องการที่เปลี่ยนแปลงไปของโครงการได้อย่างมีประสิทธิภาพ
มีเทคนิคการออกแบบฐานข้อมูลเชิงวิวัฒนาการห้าประการที่สามารถช่วยให้นักพัฒนาสร้างฐานข้อมูลของตนในลักษณะวนซ้ำได้ ภาพรวมโดยย่อของเทคนิคทั้งห้าประการมีดังต่อไปนี้
การปรับโครงสร้างฐานข้อมูลใหม่
การปรับโครงสร้างใหม่ (Refactoring)คือกระบวนการเปลี่ยนแปลงโปรแกรมโดยไม่กระทบต่อฟังก์ชันการทำงานของโปรแกรม การปรับโครงสร้างฐานข้อมูล (Database refactoring) คือเทคนิคในการเปลี่ยนแปลงโครงสร้างฐานข้อมูลเล็กน้อยโดยไม่กระทบต่อฟังก์ชันการทำงานและข้อมูลที่จัดเก็บในฐานข้อมูล[ 2 ]วัตถุประสงค์หลักของการปรับโครงสร้างฐานข้อมูลคือการปรับปรุงการออกแบบฐานข้อมูลเพื่อให้ฐานข้อมูลสอดคล้องกับความต้องการที่เปลี่ยนแปลงไปมากขึ้น ผู้ใช้สามารถแก้ไขตารางมุมมองขั้นตอนการจัดเก็บและทริกเกอร์ได้ ความสัมพันธ์ระหว่างฐานข้อมูล และแอปพลิเคชันภายนอกทำให้การปรับโครงสร้างฐานข้อมูลเป็นเรื่องท้าทาย
การสร้างแบบจำลองข้อมูลเชิงวิวัฒนาการ
การสร้างแบบจำลองข้อมูลเป็นเทคนิคการระบุเอนทิตีการเชื่อมโยงคุณลักษณะกับเอนทิตี และการตัดสินใจโครงสร้างข้อมูลเพื่อแสดงคุณลักษณะ[ 3 ]ในสถานการณ์ฐานข้อมูลแบบดั้งเดิม จะมีการสร้างแบบจำลองข้อมูลเชิงตรรกะขึ้นตั้งแต่เริ่มต้นเพื่อแสดงเอนทิตีและคุณลักษณะที่เกี่ยวข้อง ในการสร้างแบบจำลองข้อมูลเชิงวิวัฒนาการ เทคนิคการสร้างแบบจำลองข้อมูลจะดำเนินการในลักษณะวนซ้ำ กล่าวคือมีการพัฒนาแบบจำลองข้อมูลหลายแบบ โดยแต่ละแบบจำลองจะแสดงถึงแง่มุมที่แตกต่างกันของฐานข้อมูล เทคนิคการสร้างแบบจำลองข้อมูลประเภทนี้ใช้ในสภาพแวดล้อมแบบ Agile และเป็นหนึ่งในหลักการสำคัญของการพัฒนาแบบ Agile [ 4 ]
การทดสอบการถดถอยของฐานข้อมูล
เมื่อใดก็ตามที่มีการเพิ่มฟังก์ชันการทำงานใหม่ลงในระบบ จำเป็นอย่างยิ่งที่จะต้องตรวจสอบว่าการอัปเดตนั้นไม่ทำให้ระบบเสียหายหรือใช้งานไม่ได้ ในฐานข้อมูล ตรรกะทางธุรกิจจะถูกนำไปใช้ในขั้นตอนการจัดเก็บกฎการตรวจสอบความถูกต้องของข้อมูลและความสมบูรณ์ของการอ้างอิงและจะต้องได้รับการทดสอบอย่างละเอียดถี่ถ้วนทุกครั้งที่มีการเปลี่ยนแปลงใดๆ ในระบบ การทดสอบการถดถอยคือกระบวนการดำเนินการกรณีทดสอบ ทั้งหมด ทุกครั้งที่มีการเพิ่มฟีเจอร์ใหม่ลงในระบบการพัฒนาแบบทดสอบก่อน (TFD) เป็นรูปแบบหนึ่งของการทดสอบการถดถอยที่ใช้ในการออกแบบฐานข้อมูลเชิงวิวัฒนาการ ขั้นตอนที่เกี่ยวข้องในแนวทาง TFD คือ[ 3 ]
- ก่อนเพิ่มฟังก์ชันใหม่ลงในระบบ ให้เพิ่มการทดสอบลงในชุดกรณีทดสอบ โดยให้ระบบไม่ผ่านการทดสอบ
- ทำการทดสอบ ไม่ว่าจะเป็นชุดกรณีทดสอบทั้งหมดหรือเพียงบางส่วน และตรวจสอบให้แน่ใจว่าการทดสอบที่เพิ่มเข้ามาใหม่นั้นล้มเหลวจริง ๆ
- อัปเดตฟังก์ชันเพื่อให้การทดสอบผ่าน
- ทำการทดสอบอีกครั้งเพื่อให้แน่ใจว่าการทดสอบทั้งหมดประสบความสำเร็จและระบบไม่ทำงานผิดพลาด
การจัดการการกำหนดค่าของส่วนประกอบฐานข้อมูล
การจัดการการกำหนดค่าคือการบันทึกรายละเอียดของเวอร์ชันและการอัปเดตที่ถูกนำไปใช้กับระบบใดๆ การจัดการการกำหนดค่ามีประโยชน์ในการย้อนกลับการอัปเดตและการเปลี่ยนแปลงที่ส่งผลกระทบต่อระบบในทางลบ เพื่อให้แน่ใจว่าการอัปเดตใดๆ ที่ทำในการปรับโครงสร้างฐานข้อมูลสามารถย้อนกลับได้ จึงเป็นสิ่งสำคัญที่จะต้องเก็บรักษาอาร์ติแฟกต์ของฐานข้อมูล เช่น สคริปต์ ภาษาคำจำกัดความข้อมูล ไฟล์แบบจำลองข้อมูลข้อมูลอ้างอิงขั้นตอนการจัดเก็บ ฯลฯ ไว้ในระบบการจัดการการกำหนดค่า[ 5 ]
แซนด์บ็อกซ์สำหรับนักพัฒนา
แซนด์บ็อกซ์คือสภาพแวดล้อมที่ทำงานได้อย่างสมบูรณ์แบบ ซึ่งระบบสามารถสร้าง ทดสอบ และเรียกใช้งานได้ เพื่อให้สามารถเปลี่ยนแปลงโครงสร้างฐานข้อมูลได้อย่างค่อยเป็นค่อยไป จึงควรให้ผู้พัฒนาแต่ละคนมีแซนด์บ็อกซ์ส่วนตัว สำเนาซอร์สโค้ดและสำเนาฐานข้อมูลในสภาพแวดล้อมแซนด์บ็อกซ์ ผู้พัฒนาสามารถเปลี่ยนแปลงโครงสร้างฐานข้อมูลและทำการทดสอบได้โดยไม่ส่งผลกระทบต่อการทำงานของผู้พัฒนาคนอื่นและสภาพแวดล้อมอื่นๆ เมื่อการเปลี่ยนแปลงได้รับการดำเนินการสำเร็จแล้ว ก็จะถูกย้ายไปยัง สภาพแวดล้อม ก่อนการผลิตซึ่ง จะทำการ ทดสอบการยอมรับและหลังจากที่การทดสอบการยอมรับประสบความสำเร็จแล้ว ก็จะถูกนำไปใช้งานจริงใน สภาพแวดล้อม การ ผลิต
ข้อดีและข้อเสีย
ข้อดี
- การออกแบบฐานข้อมูลที่มีคุณภาพสูง: ในการออกแบบฐานข้อมูลแบบวิวัฒนาการ นักพัฒนาจะทำการเปลี่ยนแปลงโครงสร้างฐานข้อมูลทีละเล็กทีละน้อย ซึ่งจะทำให้ได้โครงสร้างฐานข้อมูลที่ได้รับการปรับให้เหมาะสม ที่สุด
- การรับมือกับการเปลี่ยนแปลง: ใน วิธี การฐานข้อมูลแบบดั้งเดิมจะใช้เวลามากในการปรับปรุงและจัดโครงสร้างฐานข้อมูลใหม่เมื่อความต้องการเปลี่ยนแปลงไป แต่ในเทคนิคฐานข้อมูลแบบวิวัฒนาการโครงสร้างของฐานข้อมูลจะถูกปรับเปลี่ยนเป็นระยะเพื่อให้ทันกับความต้องการที่เปลี่ยนแปลงไป ดังนั้น เทคนิคการออกแบบฐานข้อมูลแบบวิวัฒนาการจึงเหมาะสมกว่าในการรับมือกับความต้องการที่เปลี่ยนแปลงไป
- รับประกันการทำงานของระบบได้ตลอดเวลา: แนวทางการออกแบบฐานข้อมูลเชิงวิวัฒนาการนั้นยึด หลักการพัฒนาแบบ ทดสอบก่อน (test-first development model) ซึ่งจะทำการทดสอบการทำงานทั้งหมดของระบบทั้งก่อนและหลังการอัปเดต ดังนั้นจึงรับประกันได้ว่าระบบจะทำงานได้เสมอ
- สอดคล้องกับการพัฒนาซอฟต์แวร์: อุตสาหกรรมไอทีกำลังก้าวไปสู่แนวทางการพัฒนาซอฟต์แวร์แบบ Agile และการออกแบบฐานข้อมูลแบบวิวัฒนาการช่วยให้การพัฒนาข้อมูลสอดคล้องกับการพัฒนาซอฟต์แวร์
- ลดความพยายามโดยรวม: ในสภาพแวดล้อมแบบวิวัฒนาการ จะมีการใช้งานเฉพาะฟังก์ชันที่จำเป็นในขณะนั้นเท่านั้น และจะไม่ใช้งานฟังก์ชันอื่นใดเพิ่มเติม
ข้อเสีย
- อุปสรรคทางวัฒนธรรม: แนวทางการออกแบบฐานข้อมูลแบบวิวัฒนาการเป็นแนวคิดที่ค่อนข้างใหม่ และผู้เชี่ยวชาญด้านข้อมูล ที่มีคุณสมบัติสูงหลายคน ยังคงสนับสนุนแนวทางแบบดั้งเดิม ดังนั้น ฐานข้อมูลส่วนใหญ่จึงยังคงถูกออกแบบในลักษณะอนุกรม และการออกแบบฐานข้อมูลแบบวิวัฒนาการยังไม่ได้รับการสนับสนุนและเป็นที่นิยมในหมู่ผู้เชี่ยวชาญด้านข้อมูลที่มีประสบการณ์
- ต้องใช้เวลาในการเรียนรู้: นักพัฒนาส่วนใหญ่คุ้นเคยกับวิธีการแบบดั้งเดิมมากกว่า และต้องใช้เวลาในการเรียนรู้การออกแบบเชิงวิวัฒนาการ เนื่องจากไม่ใช่เรื่องที่เข้าใจได้ง่ายโดยสัญชาตญาณ
- ซับซ้อน: เมื่อฐานข้อมูลมีส่วนประกอบภายนอกที่ต้องพึ่งพาจำนวนมาก การเปลี่ยนแปลงโครงสร้างฐานข้อมูลจะยิ่งซับซ้อนมากขึ้น เนื่องจากส่วนประกอบภายนอกเหล่านั้นก็ต้องได้รับการอัปเดตเพื่อให้สอดคล้องกับการเปลี่ยนแปลงที่เกิดขึ้นในโครงสร้างฐานข้อมูล ด้วยจำนวนส่วนประกอบที่ต้องพึ่งพาที่เพิ่มขึ้น แนวทางการออกแบบฐานข้อมูลแบบวิวัฒนาการจึงมีความซับซ้อนอย่างยิ่ง
การเปรียบเทียบกับการออกแบบฐานข้อมูลแบบดั้งเดิม
เทคนิคการออกแบบฐานข้อมูลแบบดั้งเดิมไม่รองรับการเปลี่ยนแปลงเหมือนกับเทคนิคการออกแบบฐานข้อมูลเชิงวิวัฒนาการ 'น่าเสียดายที่ชุมชนข้อมูลแบบดั้งเดิมสันนิษฐานว่าการพัฒนาโครงสร้างฐานข้อมูลเป็นเรื่องยาก และด้วยเหตุนี้จึงไม่เคยคิดหาวิธีทำ' [ 1 ] ในแง่หนึ่ง การออกแบบเชิงวิวัฒนาการเหมาะสำหรับนักพัฒนาแอปพลิเคชันมากกว่า และการออกแบบแบบดั้งเดิมเหมาะสำหรับผู้เชี่ยวชาญด้านข้อมูลมากกว่า[ 6 ]
| คุณสมบัติ | การออกแบบฐานข้อมูลแบบดั้งเดิม | การออกแบบฐานข้อมูลเชิงวิวัฒนาการ |
|---|---|---|
| ออกแบบ | ฐานข้อมูลแบบดั้งเดิมได้รับการพัฒนาขึ้นจากการทำงานร่วมกันระหว่างนักวิเคราะห์ธุรกิจและผู้ใช้งาน | ฐานข้อมูลเชิงวิวัฒนาการได้รับการออกแบบโดยนักพัฒนาซอฟต์แวร์และผู้เชี่ยวชาญด้านข้อมูล |
| ปัญหาด้านการออกแบบ | พวกเขาแสดงให้เห็นถึงปัญหาการออกแบบบางอย่างในฐานข้อมูล ฐานข้อมูลที่วางจำหน่ายในเชิงพาณิชย์ได้รับการพัฒนาโดยบุคคลที่มีประสบการณ์ แต่ปัจจุบันได้รับการบริการโดยฐานข้อมูล ไม่ใช่โดยผู้เชี่ยวชาญด้านข้อมูล[ 6 ] | ฐานข้อมูลเหล่านี้ได้รับการพัฒนาโดยความร่วมมืออย่างใกล้ชิดระหว่างนักพัฒนาซอฟต์แวร์และผู้เชี่ยวชาญด้านข้อมูล ฐานข้อมูลจะพัฒนาไปพร้อมกับการพัฒนา ดังนั้นจึงได้รับการประมวลผลโดยบุคคลกลุ่มเดียวกันกับที่รับผิดชอบในการพัฒนา |
| แนวทางสู่การเปลี่ยนแปลง | การเปลี่ยนแปลงใดๆ ที่ผู้ใช้ร้องขอจะถูกรวมเข้าไว้ในแบบจำลองเชิงตรรกะ ตามด้วยแบบจำลองทางกายภาพ จากนั้นจึงทำการทดสอบเพื่อให้แน่ใจว่าการทำงานสมบูรณ์แบบ[ 6 ] | การเปลี่ยนแปลงเป็นส่วนสำคัญของการออกแบบฐานข้อมูลเชิงวิวัฒนาการ การเปลี่ยนแปลงใดๆ ที่ผู้ใช้ร้องขอจะถูกนำไปใช้ในฐานข้อมูลและโค้ดทันที สคริปต์ การย้ายข้อมูลก็จำเป็นต้องได้รับการอัปเดตเช่นกัน |
| การพึ่งพาแผนภาพ ER | การออกแบบแบบดั้งเดิมเป็นวิธีการ และเนื่องจากการพึ่งพาแผนภาพ ERและขั้นตอนการออกแบบโดยละเอียด เช่น ผู้ใช้ ตรรกะ และทางกายภาพ เราจึงสามารถติดตามข้อมูลรวมถึงความหมายของข้อมูลได้[ 6 ] | การออกแบบจะสอดแทรกอยู่ระหว่างขั้นตอนต่างๆ ในการออกแบบฐานข้อมูลเชิงวิวัฒนาการ ดังนั้น ความสัมพันธ์ระหว่างเอนทิตีต่างๆ จึงสามารถเปลี่ยนแปลงได้ตลอดวงจรการพัฒนาซอฟต์แวร์ และแผนภาพ ER ก็เช่นกัน |
เครื่องมือ
ด้านล่างนี้คือรายชื่อเครื่องมือที่ช่วยในการออกแบบและพัฒนาฐานข้อมูลในลักษณะที่เป็นวิวัฒนาการ
- ลิควิเบส
- ผู้จัดการการปรับใช้เรดเกต
- การย้ายข้อมูล Active Record บน Ruby on Rails
- ฟลายเวย์ (ซอฟต์แวร์)
- ออโต้แพทช์
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การออกแบบฐานข้อมูลเชิงวิวัฒนาการ
การออกแบบฐานข้อมูลเชิงวิวัฒนาการ เกี่ยวข้องกับการปรับปรุง โครงสร้างฐานข้อมูล ทีละน้อย เพื่อให้สามารถอัปเดตได้อย่างต่อเนื่องตามการเปลี่ยนแปลงที่สะท้อนถึงความต้องการของลูกค้า...
ประวัติศาสตร์
หลังจากใช้ โมเดล Waterfall มาเป็นเวลานาน อุตสาหกรรมซอฟต์แวร์ได้เห็นการเพิ่มขึ้นของการนำวิธีการ Agile มาใช้ในการพัฒนาซอฟต์แวร์ วิธีการ Agile ไม่ได้ถือว่า ข้อกำหนด จะคงที่ในทุกขั้นตอนของ วงจรชีวิตซอฟต์แวร์...
เทคนิค
ดังที่กล่าวไว้ในหัวข้อก่อนหน้านี้ วิธีการวิวัฒนาการมีลักษณะเป็นการทำซ้ำ และวิธีการเหล่านี้ได้รับความนิยมอย่างมากในช่วงสองทศวรรษที่ผ่านมา การออกแบบฐานข้อมูลเชิงวิวัฒนาการมีเป้าหมายที่จะสร้างโครงสร้างฐานข้อมูลไปเรื่อยๆ ตลอดระยะเวลาของโครงการ...
การปรับโครงสร้างฐานข้อมูลใหม่
การปรับโครงสร้างใหม่ (Refactoring) คือกระบวนการเปลี่ยนแปลงโปรแกรมโดยไม่กระทบต่อฟังก์ชันการทำงานของโปรแกรม การปรับโครงสร้างฐานข้อมูล (Database refactoring)...