อายุของตรรกะโดเมนในฐานข้อมูลมากกว่าหรือไม่ [ปิด]


9

ฉันเพิ่งสะดุดความคิดเห็นนี้จากปี 2559 โดยบอกว่ายังมีกรณีสำหรับตรรกะของโดเมนในฐานข้อมูล

ฉันคิดว่ามันล้าสมัยไปหมดแล้ว ฉันแค่สงสัยว่าผู้ชายคนนั้นยังคงมีชีวิตอยู่ในช่วงอายุ 90 ปีหรือไม่ก็สามารถเป็นจริงได้ วางระบบเดิม

สิ่งที่เกี่ยวกับการมีตรรกะโดเมนในฐานข้อมูลเพราะข้อกำหนดด้านความปลอดภัย นั่นเป็นสิ่งที่ต้องทำจริงๆเหรอ?


3
คุณอ่านบทความนั้นจริงหรือไม่? ฉันคิดว่าผู้แต่งทำให้ประเด็นของเขาชัดเจนมากและอธิบายว่าส่วนใดของ BL ที่เขาคิดว่าวางไว้ในฐานข้อมูลได้ดีที่สุดและส่วนใดที่ไม่ใช่ ดังนั้นจุดจากบทความที่ว่าคุณกำลัง struggeling ด้วย?
Doc Brown

ใช่มันปิดในวันที่ 18 กุมภาพันธ์ 2009 และตอนนี้เป็นเท็จ
Michael Durrant

มันอยากรู้อยากเห็น ฉันอ่านคนนี้ให้ตัวอย่าง SQL จำนวนมาก (เชื่อมโยงอย่างยิ่งกับ Oracle) และจากนั้นฉันไม่สามารถหลีกเลี่ยงการจำลูกค้าของฉันบอกฉัน: ฉันลืมซื้อใบอนุญาตของ Oracle สำหรับ en env เรามีไว้สำหรับ PRO แต่ไม่ใช่สำหรับ PRE คุณจะต้องปรับใช้แอพกับ MySQL ใน PRE และ Oracle ใน PRO สักครู่ ... ฉันจะถามผู้ชายคนนั้นว่าคุณลักษณะทั้งหมดของมันใน Oracle ตอนนี้ ... (ปัญหานี่คือเหตุผล ฉันไม่ต้องการที่จะรู้ว่าสถาปนิกตัดสินใจที่จะไปพื้นเมือง Sql - แถววิธีการทำแผนที่แทนอ้อม แต่ยังคงใกล้เคียงกับปัญหาของการถูกขังผู้ให้บริการฐานข้อมูล)
Laiv

@Laiv: นั่นมันบ้าและไม่มี ORM หรือ abstractions อื่นใดที่จะช่วยคุณได้ โดยทั่วไปคุณใช้รหัสที่ยังไม่ทดลองกับการผลิตด้วยการตั้งค่าเช่นนั้น
JacquesB

2
"อายุของตรรกะโดเมนในฐานข้อมูลมากกว่าหรือไม่" พระเจ้าฉันหวังเช่นนั้น
lunchmeat317

คำตอบ:


13

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

ยกตัวอย่างเช่นใช้ Clean Coding ของ Bob Martin จากการสังเกตทั่วไปฉันพบว่างานเขียนของบ็อบมาร์ตินค่อนข้างชัดเจนและชัดเจนดังนั้นมันทำให้ฉันงุนงงว่าคนจะสับสนกับสิ่งที่เขาเขียนอยู่ตลอดเวลาเช่นหลักการโซลิด พวกเขาสับสนในสิ่งที่ควรจะเป็น "ความรับผิดชอบเดี่ยว" หรือทำไมบางคนละเมิดหลักการของ Liskov เมื่อสิ่งที่พวกเขาน่าจะทำคือการพยายามเขียนโค้ดที่ดีขึ้นและได้รับประสบการณ์ก่อนเพื่อที่พวกเขาจะได้อ่าน บล็อกมีบริบท


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

บทความอ้างถึงสิ่งเหล่านี้:

  • ความสมบูรณ์ของข้อมูลและการตรวจสอบ (เช่นข้อ จำกัด และข้อ จำกัด ที่ไม่ซ้ำกัน)
  • ความปลอดภัยระดับแถว
  • การเขียน API โดยใช้กระบวนงานที่เก็บไว้
  • การคำนวณยอดคงเหลือ
  • การถามคำถามฐานข้อมูล (เช่นการสอบถามและการรายงาน)
  • หลีกเลี่ยงปัญหา ORM เช่น N + 1

เป็นสิ่งที่เหมาะสมสำหรับการใส่ลงในฐานข้อมูล ฉันบังเอิญเห็นด้วยกับเขา

เหตุผลที่คุณไม่ใส่ตรรกะทางธุรกิจ (โดยทั่วไป) ลงในฐานข้อมูล:

  • การล็อคอินของผู้ขาย
  • ฐานข้อมูลของคุณไม่ใช่หน่วยงานกลาง
  • ทีมของคุณไม่ได้คิดอย่างมีความสัมพันธ์
  • เครื่องมือที่ด้อยกว่า

แต่โดยทั่วไปสิ่งเหล่านี้นำไปใช้กับเทคนิคเครื่องมือและการฝึกอบรมที่ฐานข้อมูลไม่เหมาะสมเท่านั้น

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


3
การพังทลายที่ดีมากและวิธีที่ดีกว่าในการวางกรอบคำถาม
candied_orange

9

ป้อนคำอธิบายรูปภาพที่นี่

อายุของม้าและบั๊กกี้สิ้นสุดลง แต่คุณยังสามารถซื้อแส้รถบั๊กกี้ได้

ทำไม? เมื่อรถยนต์เร็วขึ้นราคาถูกกว่าในการดูแลรักษาและการละเลยรถยนต์เหล่านี้จะไม่สร้างการเยี่ยมชมจากสังคมที่มีมนุษยธรรมเหตุใดม้าและรถเข็นจึงยังคงอยู่

เพราะบางครั้งคุณมีเหตุผลที่แตกต่างในการทำบางสิ่งนอกเหนือจากเหตุผลที่เป็นที่นิยม

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

มุมมองส่วนตัวของฉัน:

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

ในทางกลับกันใครบอกว่าฐานข้อมูลไม่มีพฤติกรรม? ฉันสร้างฐานข้อมูลสำนักงานโดยใช้ Filemaker ผู้คนเรียกมันว่าฐานข้อมูล แต่จริงๆแล้วมันเป็นสภาพแวดล้อมการพัฒนาแอปพลิเคชันทั้งหมดเช่นกัน ทุกอย่างผสานรวมเป็นหนึ่งเดียวและเรียกว่าฐานข้อมูล

มักจะพบ Wizdom ระหว่างมุมมองที่รุนแรง ฉันไม่สงสัยเลยว่าจะสามารถทำงานได้ เมื่อพยายามหาจุดศูนย์กลางมันเป็นการดึงดูดให้ติดตามฝูง ฉันจะระมัดระวังกับมันที่นี่

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

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


1
คำตอบของคุณดูเหมือนว่าคุณไม่ได้ดูบทความที่เชื่อมโยงโดย OP (ไม่ใช่ที่ฉันบอกว่าผู้เขียนนั้นถูกหรือผิด) แต่คุณช่วยบอกเราได้ไหมว่าคุณเห็นด้วยหรือแตกต่างกับมุมมองที่อธิบายไว้ในบทความนั้นหรือไม่?
Doc Brown

@DocBrown ฉันไม่ได้อ่าน แต่อย่างใด แต่คำตอบนี้เป็นคำตอบที่ดีอย่างไรก็ตามฉันก็เห็นด้วยอย่างเต็มที่ และมันตอบคำถามของ OP (ประโยคสุดท้าย) ไม่ใช่บทความที่อ้างถึง
qwerty_so

@DocBrown ฉันไม่คิดว่าบทความอ่านบทความUncle Bob ที่อ้างถึง : "สถาปัตยกรรมปลั๊กอินมีความแข็งแกร่งมากเนื่องจากกฎเกณฑ์ทางธุรกิจที่มีมูลค่าสูงมีเสถียรภาพสามารถเก็บไว้ได้โดยขึ้นอยู่กับโมดูลค่าต่ำที่ผันผวนเช่นส่วนต่อประสานผู้ใช้และฐานข้อมูล" ลุงบ๊อบมีมุมมองที่แข็งแกร่งต่อความคิดนี้มากกว่าที่ฉันทำ บทความนี้เชอร์รี่คัดสรรมาจากบทความของ Bob และทำให้ดูเหมือนว่า Bob กำลังพูดบางสิ่งที่เขาไม่ใช่
candied_orange

2

ฉันมีกรณีที่การแก้ปัญหาในชั้นธุรกิจจะเป็นนักฆ่าประสิทธิภาพที่แท้จริง

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

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

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