วิธีเลือกที่เก็บข้อมูลสำหรับสิ่งใหม่เงางามต่อไป
เผยแพร่แล้ว: 2018-01-26หมายเหตุ: นี่เป็นบล็อกโพสต์ทางเทคนิคที่เขียนโดยวิศวกรหลัก Silvia Botros และปรากฏตัวครั้งแรกในบล็อก Sysadvent เมื่อวันที่ 25 ธันวาคม 2017
ฐานข้อมูลอาจเป็นเรื่องยาก คุณรู้ว่าอะไรยากกว่ากัน? เลือกหนึ่งในสถานที่แรก สิ่งนี้ท้าทายไม่ว่าคุณจะอยู่ในบริษัทใหม่ที่ยังคงค้นหาผลิตภัณฑ์/ตลาดที่เหมาะสม หรือในบริษัทที่ค้นพบกลุ่มเป้าหมายและกำลังขยายการเสนอผลิตภัณฑ์
เมื่อสร้างสิ่งใหม่ ส่วนแรกสุดของกระบวนการออกแบบนั้นคือสิ่งที่เราควรใช้จัดเก็บข้อมูลใด และควรเป็นรายการเดียวหรือพหูพจน์ เราควรใช้ร้านค้าที่สัมพันธ์กันหรือจำเป็นต้องเลือกที่เก็บค่าคีย์หรือไม่ แล้วตัวเลือกเวลาล่ะ เราควรโรยในการเล่นซ้ำบันทึกแบบกระจายหรือไม่?
ดังนั้น. มากมาย. ตัวเลือก…
ฉันจะพยายามอธิบายในบทความนี้เพื่ออธิบายกระบวนการที่หวังว่าจะเป็นแนวทางในการตัดสินใจ และอธิบายว่าขนาดและวุฒิภาวะขององค์กรของคุณส่งผลต่อการตัดสินใจนี้อย่างไร
ข้อกำหนดพื้นฐาน
ข้อมูลเป็นส่วนสำคัญของผลิตภัณฑ์ใดๆ แม้ว่าเราจะวางแผนในการออกแบบเพื่อใช้เทคโนโลยีที่ล้ำหน้ามากขึ้นในการจัดเก็บสถานะแอปพลิเคชัน (เพราะ MySQL หรือ Postgres ไม่ "เจ๋ง" อีกต่อไป) สิ่งที่เราเลือกยังคงเป็นที่เก็บข้อมูลและด้วยเหตุนี้เราจึงต้องใช้ความเข้มงวดเมื่อ ทำให้การเลือกของเรา
สิ่งสำคัญที่ต้องจำไว้คือไม่มีอะไรได้มาฟรีๆ ที่เก็บข้อมูลทั้งหมดมาพร้อมกับการประนีประนอม และหากคุณไม่ชัดเจนเกี่ยวกับสิ่งที่คุณกำลังทำในฐานะความเสี่ยงทางธุรกิจ คุณจะรับความเสี่ยงที่ไม่รู้จักซึ่งจะแสดงตัวเองในเวลาที่เลวร้ายที่สุด
ผู้จัดการผลิตภัณฑ์ของคุณไม่น่าจะรู้หรือแม้แต่ต้องดูแลสิ่งที่คุณใช้สำหรับที่เก็บข้อมูลของคุณ แต่จะผลักดันความต้องการที่ลดขนาดรายการตัวเลือก บางครั้งถึงแม้จะต้องการการสนับสนุนจากทีมพัฒนา ต่อไปนี้คือรายการสิ่งที่คุณต้องขอให้ทีมผลิตภัณฑ์ช่วยขับเคลื่อนตัวเลือกของคุณ:
- อัตราการเติบโต: ข้อมูลเองหรือการเข้าถึงข้อมูลที่คาดว่าจะเปลี่ยนแปลงเมื่อเวลาผ่านไปเป็นอย่างไร?
- ทีมเรียกเก็บเงินจะใช้ข้อมูลใหม่นี้อย่างไร
- ทีมงาน ETL จะใช้ข้อมูลนี้อย่างไร?
- ข้อกำหนดด้านความแม่นยำ/ความสม่ำเสมอใดบ้างที่คาดหวังสำหรับคุณลักษณะใหม่นี้
- ช่วงเวลาใดสำหรับความสอดคล้องนั้นที่ยอมรับได้? การแก้ไขภายหลังการประมวลผลเป็นที่ยอมรับหรือไม่
ค้นหาบริบทที่ไม่ได้กล่าวไว้
ทางเลือกของที่เก็บข้อมูลไม่ใช่ตัวเลือกที่สงวนไว้สำหรับ DBA หรือทีม Ops หรือแม้แต่วิศวกรที่เขียนโค้ดเท่านั้น
องค์กรที่บรรลุนิติภาวะแล้วซึ่งมีตลาดที่สามารถระบุตำแหน่งได้จำเป็นต้องตัดสินใจจากผู้มีส่วนได้ส่วนเสียจากทั่วทั้งองค์กร
หากข้อกำหนดจากทีมผลิตภัณฑ์พอดีกับที่เก็บข้อมูลหลายสิบแห่ง คุณจะกำหนดข้อกำหนดที่ไม่ได้ระบุอย่างชัดเจนได้อย่างไร
คุณต้องเปิดเผยข้อกำหนดที่ไม่ได้พูดโดยเร็วที่สุดเพราะเป็นหนทางสู่ความล้มเหลวในความคาดหวัง
มีหลายสิ่งโดยนัยที่สามารถทำให้คุณล้มเหลวในกับดัก 'ทางเลือกมากเกินไป' นี้ ซึ่งรวมถึงแต่ไม่จำกัดเพียง:
- รายการคุณสมบัติที่ไม่สมบูรณ์
- ข้อกำหนดด้านประสิทธิภาพที่ไม่ได้ระบุไว้อย่างชัดเจน
- ความต้องการคงเส้นคงวาที่สมมติขึ้น
- อัตราการเติบโตที่ไม่ระบุ
- ความต้องการการเรียกเก็บเงินหรือการค้นหา ETL ที่ยังไม่พร้อมใช้งาน/รู้จัก
นี่เป็นวิธีที่เป็นไปได้ทั้งหมดที่ทำให้ทีมวิศวกรต้องหมุนวงล้อนานเกินไป เพื่อตรวจสอบรายการตัวเลือกการจัดเก็บข้อมูลจำนวนมาก เพียงเพราะเกณฑ์ที่ชัดเจนที่พวกเขาใช้อยู่นั้นอนุญาตหรือไม่สมบูรณ์เกินไป
สำหรับผลิตภัณฑ์ 'greenfield' อื่นๆ ตามที่ได้กล่าวไว้ก่อนหน้านี้ เป้าหมายของคุณคือความยืดหยุ่น ดังนั้น จุดประสงค์ทั่วไปที่มากขึ้น ที่เก็บข้อมูลคุณภาพที่เป็นที่รู้จัก จะช่วยให้คุณเข้าใกล้สิ่งที่ส่งมอบมากขึ้น โดยมีความรู้ว่า คุณอาจต้องย้ายไปยังพื้นที่เก็บข้อมูลที่คล้อยตามมาตราส่วนใหม่ของคุณ
ทำรายการของคุณ
ถึงเวลากรองโซลูชันที่เป็นไปได้ตามรายการข้อกำหนดของคุณ รายการผลลัพธ์ต้องไม่เกินหนึ่งที่เก็บข้อมูลที่เป็นไปได้ หากรายการฐานข้อมูลที่เป็นไปได้ที่คุณสามารถใช้ได้มีมากกว่านั้น แสดงว่าข้อกำหนดของคุณอนุญาตมากเกินไป และคุณต้องกลับไปหาข้อมูลเพิ่มเติม
สำหรับบริษัทที่อายุน้อยกว่าและมีวุฒิภาวะน้อยกว่า ข้อกำหนดในการจัดเก็บข้อมูลเป็นส่วนที่ไม่รู้จักมากที่สุด คุณกำลังสร้างสิ่งใหม่ๆ ที่ยังไม่มีใครเสนอ ดังนั้นสิ่งต่างๆ เช่น ขนาดตลาดที่สามารถระบุได้ทั้งหมดและอัตราการเติบโตอาจไม่เป็นที่ทราบแน่ชัดและยากที่จะหาปริมาณ
ในกรณีนี้ สิ่งที่คุณต้องการคืออย่าจำกัดตัวเองเร็วเกินไปในช่วงอายุของบริษัทใหม่โดยใช้ที่เก็บข้อมูลแบบ one trick pony ใช่ เมื่อถึงจุดหนึ่ง ข้อมูลของคุณจะเติบโตในรูปแบบใหม่ที่ไม่คาดคิด แต่สิ่งที่คุณต้องการในตอนนี้คือความยืดหยุ่นเมื่อคุณพยายามค้นหาเฉพาะกลุ่มตลาดของคุณและเรียนรู้ว่าการเติบโตของข้อมูลของคุณจะเป็นอย่างไร และคุณสมบัติการปรับขนาดเฉพาะใดที่มีความสำคัญต่อ การเติบโตของคุณ
หากคุณเป็นบริษัทขนาดใหญ่ที่มีลูกค้าที่ชำระเงินเพิ่มขึ้น งานของคุณที่นี่คือการลดขนาดรายการตัวเลือกให้เหลือเพียงการจัดเก็บข้อมูลที่คุณมีและดูแลรักษาอยู่แล้ว เมื่อคุณมีลูกค้าที่ชำระเงินเป็นจำนวนมากแล้ว ความเสี่ยงในการเพิ่มพื้นที่เก็บข้อมูลใหม่ที่ทีมของคุณไม่คุ้นเคยจะสูงขึ้น และไม่เป็นที่ยอมรับ ทั้งนี้ขึ้นอยู่กับบริบทของข้อมูล
สิ่งที่ควรทราบอีกประการหนึ่งคือเครื่องมือที่มีอยู่แล้วสำหรับการจัดเก็บข้อมูลและสิ่งที่จะนำเครื่องมือใหม่มาใช้หมายถึงการทำงานที่ทีมของคุณต้องทำในเบื้องต้น การจัดการการกำหนดค่า สคริปต์สำรอง สคริปต์การกู้คืนข้อมูล การตรวจสอบการตรวจสอบใหม่ แดชบอร์ดใหม่เพื่อสร้างและทำความคุ้นเคย รายการต้นทุนการดำเนินงานของที่เก็บข้อมูลใหม่ โดยไม่คำนึงถึงความเสี่ยง ไม่ใช่เรื่องเล็กน้อย
เลือกพิษของคุณ
นี่เป็นความลับที่ DBA เก็บไว้ไม่ดี ฐานข้อมูลนั้นแย่มากในบางสิ่ง มีแม้กระทั่งทฤษฎีบททั้งหมดเกี่ยวกับเรื่องนี้ ไม่ใช่แค่ฐานข้อมูลในความหมายดั้งเดิม แต่เทคโนโลยีใด ๆ ที่เก็บสถานะจะน่ากลัวในแบบที่ไม่เหมือนใครในการใช้งานของคุณ
นั่นเป็นเพียงความจริงของชีวิตที่คุณเข้าใจได้ดีขึ้นในขณะนี้ ไม่ ฉันไม่ได้บอกว่าคุณควรหลีกเลี่ยงการใช้เทคโนโลยีเหล่านี้ ฉันกำลังบอกว่ารักษาความคาดหวังของคุณให้มีสติ และรู้ว่าคุณและมีเพียงคุณและทีมของคุณเท่านั้นที่ทำตามคำสัญญาที่คุณให้ไว้
สิ่งนี้หมายความว่าอย่างไรในแง่ที่ไม่เป็นนามธรรม? เมื่อคุณมีความคิดที่มั่นคงแล้วว่าที่เก็บข้อมูลใดที่จะเป็นส่วนหนึ่งของสิ่งที่คุณกำลังสร้าง คุณควรเริ่มต้นด้วยการรู้จุดอ่อนของที่เก็บข้อมูลเหล่านี้ จุดอ่อนเหล่านี้รวมถึงแต่ไม่จำกัดเพียง:
- ที่เก็บข้อมูลนี้ทำงานได้ดีภายใต้การสืบค้นการสแกนหรือไม่
- ที่เก็บข้อมูลนี้ใช้โปรโตคอลซุบซิบสำหรับการจำลองข้อมูลหรือไม่ ถ้าเป็นเช่นนั้น จะจัดการกับพาร์ติชันเครือข่ายอย่างไร ข้อมูลที่เกี่ยวข้องกับการนินทานั้นมากน้อยเพียงใด?
- ที่เก็บข้อมูลนี้มีจุดล้มเหลวเพียงจุดเดียวหรือไม่
- คนขับในชุมชนมีวุฒิภาวะขนาดไหนถึงจะคุยด้วยหรือต้องลุยเอง?
- รายการนี้อาจมีขนาดใหญ่
การคิดถึงจุดอ่อนของโซลูชันที่เป็นไปได้ที่ยังอยู่ในรายการของคุณควรตัดตัวเลือกเพิ่มเติมออกจากรายการ นี่คือความเป็นจริงที่ตอบสนองคำมั่นสัญญาอันสูงส่งของเทคโนโลยี
สเปรดชีตและอบ!
เมื่อรายการตัวเลือกของคุณเหลือเพียงเล็กน้อย ก็ถึงเวลาใส่ทั้งหมดลงในสเปรดชีตแล้วเริ่มเจาะลึกลงไปอีกเล็กน้อย คุณต้องมีคอลัมน์ข้อดีและข้อเสีย และ ณ จุดนี้ คุณจะต้องใช้เวลาในการจัดทำเอกสารฐานข้อมูลแต่ละรายการเพื่อค้นหารายละเอียดที่สำคัญเกี่ยวกับวิธีการทำงานบางอย่าง
หากข้อมูลนี้เป็นข้อมูลที่คุณคาดว่าจะมีอัตราการเติบโตสูง คุณจำเป็นต้องรู้ว่าตัวเลือกใดในการขยายขนาดได้ง่ายกว่า หากเป็นคุณลักษณะที่มีการค้นหาแบบคลุมเครือมาก คุณจำเป็นต้องรู้ว่าที่เก็บข้อมูลใดที่สามารถจัดการกับการสแกนหรือค้นหาผ่านแถวจำนวนมากได้ดีกว่าและด้วยการออกแบบใด เป้าหมายในขั้นตอนนี้คือการลดรายการให้เหลือเพียง 2 หรือ 3 ตัวเลือกโดยใช้เอกสารเพียงอย่างเดียว เพราะหากคุณสมบัติใหม่นี้มีความสำคัญเพียงพอต่อความสำเร็จของบริษัท คุณจะต้องเปรียบเทียบทั้งสาม
ทำไมต้องเปรียบเทียบคุณพูด? เนื่องจากไม่มีบริษัท 2 แห่งใดใช้พื้นที่เก็บข้อมูลเดียวกันในลักษณะเดียวกัน เพราะบางครั้งเอกสารก็บอกเป็นนัยถึงคำเตือนที่จะเปิดเผยในเรื่องราวสงครามของคนอื่นเท่านั้น
เพราะไม่มีใครเป็นเจ้าของความเสถียร ความน่าเชื่อถือ และความสามารถในการคาดการณ์ของที่เก็บข้อมูลนี้ ยกเว้นคุณ
ออกแบบเกณฑ์มาตรฐานของคุณล่วงหน้า ตามหลักการแล้ว คุณตั้งค่าอินสแตนซ์เต็มรูปแบบของที่เก็บข้อมูลในรายการของคุณด้วยข้อกำหนดระดับการผลิต และสร้างข้อมูลการทดสอบที่ไม่เล็กเกินไปที่จะทำให้การทดสอบโหลดไม่มีประโยชน์ ตรวจสอบให้แน่ใจว่าไม่ได้วัดแค่ 'การโหลดปกติ' เท่านั้น แต่ยังต้องทดสอบสถานการณ์ความล้มเหลวบางอย่างด้วย
ความหวังคือผ่านเกณฑ์มาตรฐาน คุณสามารถค้นหาคำเตือนใด ๆ ที่ร้ายแรงพอที่จะทำให้คุณกลับมาดูรายการตัวเลือกตอนนี้แทนในภายหลังเมื่อโค้ดทั้งหมดถูกเขียนขึ้น และตอนนี้คุณอยู่ในขั้นตอนการฝึกซ้อมดับเพลิงโดยมีเวลาเหลือเฟือ และความทุ่มเทในการเลือกของคุณ
เอกสารที่คุณเลือก
ไม่ว่าคุณจะทำอะไร คุณต้องจัดทำเอกสารและเผยแพร่ภายในวิธีการที่คุณเลือกและทางเลือกที่ได้รับการตรวจสอบในเส้นทางสู่การตัดสินใจนั้น สมมติว่ามีพิมพ์เขียวสถาปัตยกรรมที่ครอบคลุมเกี่ยวกับวิธีการสร้างคุณลักษณะใหม่นี้และส่วนประกอบทั้งหมด คุณต้องแน่ใจว่าได้สร้างส่วนเฉพาะสำหรับพื้นที่เก็บข้อมูลที่ขับเคลื่อนคุณลักษณะใหม่นี้พร้อมลิงก์ไปยังการวัดประสิทธิภาพทั้งหมดที่ทำขึ้นเพื่อการตัดสินใจที่ทีมมาถึง .
นี่ไม่ใช่แค่เพื่อประโยชน์ของผู้ว่าจ้างใหม่ในอนาคต แต่ยังรวมถึงผลประโยชน์ของทีมของคุณในตอนนี้ด้วย เอกสารที่ผู้คนสามารถอ่านและพัฒนาความคิดเห็นแบบอะซิงโครนัสได้เป็นวิธีที่จะทำให้กระบวนการตัดสินใจโปร่งใส สร้างความรู้สึกถึงเจตนาที่ดีที่สุดในหมู่สมาชิกในทีม และนำมาซึ่งการวิพากษ์วิจารณ์จากมุมมองที่คุณไม่ได้คาดการณ์ไว้
ซื้อกลับบ้าน
ขั้นตอนเหล่านี้ไม่เพียงแต่จะนำไปสู่การตัดสินใจโดยใช้ข้อมูลเป็นข้อมูลเมื่อขยายธุรกิจให้เติบโต แต่ยังนำไปสู่โครงสร้างพื้นฐานที่แข็งแกร่งและแนวทางที่มีระเบียบวินัยมากขึ้นเมื่อคุณใช้เทคโนโลยีด้านต่างๆ ที่เพิ่มขึ้นเรื่อยๆ เพื่อมอบมูลค่าให้กับการจ่ายเงินของคุณ ลูกค้า.