ไกลแค่ไหนที่คุณควรไปกับการฟื้นฟู


30

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

คำตอบ:


37

คุณควรไปให้ไกลที่สุดและไม่ควรไปไกลกว่านี้ แน่นอน. ~ ปัญหาอาจเป็นได้ว่านี่เป็นศิลปะนิดหน่อยและนี่คือสาเหตุที่นี่ไม่ใช่วิทยาศาสตร์บริสุทธิ์

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

แต่เรารู้เพียงว่าเพราะเรา 1) สร้างการออกแบบ "ปกติ" 2) เริ่มใช้มัน 3) แสดงประสิทธิภาพที่แท้จริงหลังจากแถวหลายร้อยล้านแถวในหลายสิบตาราง

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


4
ศิลปะและไม่ใช่วิทยาศาสตร์ให้ฉันเชื่อว่ามันเป็นของขึ้น การอ้างอิงใด ๆ
abel

3
@ จริง ๆ แล้วเรื่องเล็ก ๆ น้อยของฉันโดยทั่วไปแล้วล่ะ Profiler อาจสามารถแนะนำกฎสำหรับ denormalization แต่กฎเหล่านั้นมาจากโปรแกรมเมอร์จากประสบการณ์ การเขียนโปรแกรมทั้งหมดเป็นศิลปะ ฉันจะหาคนที่มีชื่อเสียงมากกว่าซึ่งพูดในสิ่งเดียวกันเมื่อฉันไปถึงแป้นพิมพ์แบบเต็มในภายหลัง
jcolebrand

1
@Abel โอ้ดีแล้ว all's in ('forgiven','pardoned');): p
jcolebrand

2
@ergus ดีใจที่คุณชอบมัน ฉันพบว่าเกร็ดเล็กเกร็ดน้อยทำงานได้ดีที่สุดเสมอ
jcolebrand

2
@abel - 'ศิลปะคือวิทยาศาสตร์ที่มีอิสระมากกว่า 7 ดีกรี' นอกเหนือจากระดับที่ซับซ้อนของวิธีการที่ละเอียดถี่ถ้วนในการแก้ปัญหาก็เป็นไปไม่ได้ เมื่อถึงจุดนั้นวิธีการแก้ปัญหาแบบอิงประสบการณ์จะมีประสิทธิภาพมากที่สุด น่าเศร้าที่การคำนวณในระดับความซับซ้อนนั้นค่อนข้างง่ายที่จะประสบความสำเร็จในทุกสิ่งยกเว้นระบบซอฟต์แวร์ที่ไม่สำคัญ
ConcOfOfTunbridgeWells

10

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

อ่านที่ดีเกี่ยวกับเรื่องของ "การฟื้นฟูมากเกินไป" อยู่ที่นี่

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


2
นี่คือการอ่านที่ดีเพิ่มเติมเกี่ยวกับเรื่องนี้และความบันเทิงอื่น ๆ อีกมากมายqntm.org/gay
jcolebrand

5

ฉันขอแนะนำให้อ่านภาคผนวกต่อไปนี้ที่พบในหนังสือเล่มล่าสุดของChris Date :

ไชโยสองตัวสำหรับการทำให้เป็นมาตรฐาน

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

ฉันต้องทำให้ชัดเจนว่าฉันไม่ต้องการให้ความเห็นของฉันในส่วนนี้ถูกมองว่าเป็นการโจมตีใด ๆ ฉันเชื่อมั่นว่าสิ่งใดก็ตามที่น้อยกว่าการออกแบบที่เป็นมาตรฐานอย่างสมบูรณ์มีข้อห้ามอย่างมาก ...


2

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

อาร์กิวเมนต์ส่วนใหญ่เป็นอาร์กิวเมนต์ประสิทธิภาพบางอย่าง

หากคุณบังคับใช้ฟิลด์นั้นจะถูกอัพเดตโดยทริกเกอร์และขึ้นอยู่กับฐานข้อมูลเพื่อให้สอดคล้องกัน


2

ฉันเห็นด้วยกับ @jcolebrand เมื่อคุณออกแบบโมเดลสำหรับแอปพลิเคชันของคุณคุณควรทำให้ทุกอย่างเป็นปกติ แต่คุณควรสร้างโปรไฟล์แบบสอบถามที่สร้างขึ้นเหนือโมเดลของคุณ

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

กล่าวอีกนัยหนึ่งคุณควรปรับความสมดุลให้เป็นมาตรฐานกับประสิทธิภาพ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.