Bogarting Data Access Layer


9

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

คำถาม: อะไรคือโซลูชั่น / กระบวนการที่แนะนำที่จะช่วยให้การพัฒนารวดเร็วขึ้น / คล่องตัวขึ้นในขณะที่รักษาความถูกต้องของข้อมูลรวมถึงความรักและความสงบสุขในหมู่ทีม?


ฉันกังวลเกี่ยวกับสาเหตุที่คุณต้องเพิ่มคอลัมน์และกฎธุรกิจที่เกี่ยวข้องกับคอลัมน์นี้ คุณอาจหาวิธีที่อยู่รอบ ๆ และในที่สุดก็เพิ่มคอลัมน์ แต่ถ้าคุณใช้ประเภทข้อมูลที่ไม่ถูกต้อง, การตั้งค่าเป็นโมฆะ, คำจำกัดความของดัชนี, แย่กว่านั้นถ้าคอลัมน์ไม่ควรอยู่ในตารางหรือหากคุณขาดตารางสี่แยกทั้งหมด? ฉันคิดว่าบางคนต้องรับผิดชอบต่อผลกระทบทางธุรกิจของการกำหนดข้อมูลใหม่และบางคนควรรับผิดชอบผลกระทบของการเปลี่ยนแปลงฐานข้อมูลของรหัส (นอกเหนือจาก DBA) บุคคลทั้งสองอาจเล่นโดยบทบาทเดียวกัน
NoChance

ต้องการ DBA เพื่อทำงานในสาขาของเขาเอง อย่าให้สิทธิ์ในการชำระเงินกับสาขาการพัฒนาหลัก อีกวิธีหนึ่งคือสร้างสาขา dev ของคุณเองและรวมการเปลี่ยนแปลงของคุณตามต้องการ
SoylentGray

คำตอบ:


11

Martin Fowler และ Pramod Sadalage ได้เขียนบทความที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้

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

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


1
oooh ฉันชอบ ... นี่คือ Q แรกของฉันที่นี่ดังนั้นฉันไม่สามารถ upvote แต่คุณได้หนึ่ง comin แน่นอน ... อาจจะ / อาจเป็นคำตอบเกินไป แต่ฉันชอบที่จะรอสักครู่เพื่อดูสิ่งที่คนอื่นพูด
spaghetticowboy

ปัญหานี้คือผู้พัฒนาทำทุกอย่างบนสมมติฐานที่ว่า dba จะอนุมัติ
HLGEM

@HLEGM: จากประสบการณ์ของฉันนี่เป็นกรณีที่ไม่ค่อยบ่อยครั้งที่ DBA จะอนุมัติหรือเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น มันยังดีกว่าการมี devs ที่ไม่ได้ใช้งานนั่งอยู่รอบ ๆ ยิ่งไปกว่านั้นมันอาจจะนำไปสู่ทางออกที่ดีที่สุดถ้า DBA และ dev เป็นคนที่สมเหตุสมผล
เหยี่ยว

+1 เพื่ออธิบายว่าทำไมบทความนี้จึงเป็นบทความที่ยอดเยี่ยมแทนที่จะโพสต์ลิงก์
JeffO

@ HLGEM - ฉันคิดว่าทั้งสองฝ่ายต้องพิสูจน์ว่าพวกเขาทำอะไร DBA ควรได้รับประโยชน์จากความสงสัยในเรื่อง db แต่ทั้งคู่ต้องตอบคนอื่นที่จะต้องตัดสินใจขั้นสุดท้าย
JeffO

3

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

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

หากเขาจะเป็นผู้รักษาประตูเพียงคนเดียวเขาต้องมีสเป็คคงที่หรือสามารถ "ขาย" วิสัยทัศน์ของเขาให้กับผู้พัฒนาที่เหลือ


เราน่ารักน่าขยะแขยง ... และบางครั้งเราก็เป็นคนใจร้อนเช่นกันและต้องการทำสิ่งต่าง ๆ ด้วยตัวเอง
spaghetticowboy

@spaghetti: ใช่แล้ว ... ฉันอาจจะแย่กว่านี้เพราะฉันได้ทำงาน DBA มาหลายครั้งดังนั้นฉันจึงมีสองครั้งที่ "ฉันรู้วิธีที่จะทำให้ดีขึ้น!" กว่าโปรแกรมเมอร์ส่วนใหญ่ ฉันจะพูดแบบนี้: กับฐานข้อมูลมันสำคัญมากที่จะต้องทำให้ถูกต้องก่อน ... ถ้าคุณเพิ่มต่อไปเรื่อย ๆ จนกระทั่งในช่วงปลายโครงการมันจะทำให้เกิดปัญหาแน่นอน
Satanicpuppy

3

มีปัญหาสำคัญที่ทำให้เกิดปัญหาอื่น ๆ :

  1. ทำไมผู้รับเหมาถึงมีรหัสตรวจสอบอยู่เสมอ ?

ทำไมเขาถึงได้รับอนุญาตให้ทำเช่นนี้? ไม่มีใครควรมีไฟล์เช็คเอาต์เว้นแต่ว่าพวกเขากำลังทำการแก้ไข ควรมีนโยบายทีมเกี่ยวกับการชำระเงิน

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


1

แทนที่จะชอบแนวนอนฉันชอบทำงานในไซโลข้ามชั้น

ด้วยวิธีนี้ไม่มี 1 คน / ทีมสามารถบล็อกในแบบนี้

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

แน่นอนว่ามีส่วนต่างๆ (การออกแบบ UI และการออกแบบฐานข้อมูล) ที่อาจต้องการงานพิเศษเพิ่มเติม แต่คุณจะได้รับแนวคิด


1

ง่ายถ้าคุณยังไม่ได้สร้างคุณควรมี 3 สภาพแวดล้อม:

  • การพัฒนาสภาพแวดล้อม
  • สภาพแวดล้อม QA
  • สภาพแวดล้อมการผลิต

สภาพแวดล้อมที่พัฒนาขึ้นควรได้รับการดูแลโดยนักพัฒนาของคุณ

คุณอาจต้องการเพิ่มสภาพแวดล้อม RC

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


1
OP กำลังพูดถึงโค้ดที่เช็คเอาต์ สภาพแวดล้อมที่แตกต่างกันจะไม่มีผลกระทบ
NotMe

1

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


+1: นี่อาจเป็นสาเหตุของปัญหา หลาย บริษัท มี DBA น้อยเกินไป
เหยี่ยว

1

นี่คือปัญหาการจัดการมากพอ ๆ กับด้านเทคนิค

มีเหตุผลที่ถูกต้องอย่างแน่นอนสำหรับ DBA (ไม่ว่าสถานที่หรือนอกสถานที่, ผู้รับเหมาหรือพนักงาน) เพื่อป้องกันไม่ให้นักพัฒนาทำการเปลี่ยนแปลงฐานข้อมูลทุกประเภท

อย่างไรก็ตามปัญหาหลักที่คุณกำหนดคือหนึ่งในความพร้อมใช้งาน ผู้จัดการของคุณรู้หรือไม่ว่าเวลา / เงินกำลังรอคนนี้อยู่? ถ้าไม่เช่นนั้นคุณอาจต้องการนำเสนอวิธีการที่ทุกคนนั่งล้อมรอบ

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