โปรแกรมเมอร์ฐานข้อมูลทำอะไร


14

ทุกครั้งที่ฉันอ่านเกี่ยวกับโปรแกรมเมอร์ของออราเคิล ฯลฯ ฉันสับสน ฉันไม่รู้ว่าพวกเขาทำอะไรกันแน่

จากความเข้าใจของฉันโปรแกรมเมอร์แอปพลิเคชันจำเป็นต้องพัฒนาฟังก์ชั่นหลัก ไลบรารีที่ใช้อาจช่วยในการพัฒนา GUI หรือการเชื่อมต่อฐานข้อมูล แต่ฟังก์ชันการทำงานที่ทำให้แอปพลิเคชันนั้นต้องมีการตั้งโปรแกรมและทำให้ทุกแอปพลิเคชันแตกต่างกัน (บางอันอาจเป็น tweaked เวอร์ชันอื่น ๆ )

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

คำตอบ:


18

ขอขอบคุณผู้เขียนโปรแกรมฐานข้อมูลที่คุณต้องลองด้วยตัวเอง - ให้ฉันลองอธิบายอีกวิธีหนึ่ง

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

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

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

(แน่นอนว่านี่เป็นรายการที่ลดลงอย่างมากฉันแค่พยายามหาจุดที่มีความคล้ายคลึงกันในการพัฒนาฐานข้อมูล)

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

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

เช่นเดียวกับการพัฒนาแอปพลิเคชันที่เต็มไปด้วยข้อผิดพลาดที่ซ่อนอยู่ (เธรดปัญหา ฯลฯ ... ) ดังนั้นการพัฒนาฐานข้อมูลและบ่อยครั้งที่ผลที่ตามมาของปัญหาเหล่านี้ร้ายแรงมาก (เช่นการสูญหายของข้อมูลหรือการหยุดทำงานของแอพพลิเคชันทั้งหมด .

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


ขอบคุณสำหรับการตอบกลับ (ฉันได้ทิ้งความหวังว่าจะได้รับ)! เหตุผลที่ฉันถามสิ่งนี้คือฉันในฐานะ "แอปพลิเคชันโปรแกรมเมอร์" ได้ออกแบบฐานข้อมูลขนาดเล็กใน msaccess เพื่อทำสิ่งต่าง ๆ ให้กับโครงการของฉันและดูเหมือนว่าจะไม่ได้ทำงานมากนัก แต่ในฐานะโปรแกรมเมอร์ t "ง่าย" แต่ฉันก็ยังขาดทัศนะที่จำเป็นต่อการเข้าใจสิ่งนี้ ฉันหมายความว่าหนึ่ง dbase อาจแตกต่างจากที่อื่นได้อย่างไร เช่นเดียวกับไม่มีแอป "เขียน" รหัสการจัดการไฟล์ แต่ใช้ไลบรารีไม่พร้อมที่จะใช้แม่แบบ / ไลบรารีสำหรับการออกแบบ dbase หรือไม่ หรือการเขียนโปรแกรม dbase ในความเป็นจริงผู้ดูแลระบบ dbase?

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

1
จากประสบการณ์ของฉันมีการดำเนินธุรกิจบางอย่างที่ต้องใช้ทีมผู้เชี่ยวชาญของ DBA ล่าสุดที่ฉันได้ยินเกี่ยวกับการควบรวมกิจการระหว่าง Coca-Cola และ Minute Maid ฐานข้อมูลของพวกเขา (และพวกเขามีจำนวนมาก) จะต้องถูกรวมเข้าด้วยกันและ Minute Maid ไม่ได้ออกแบบมาในลักษณะเดียวกันกับ Coca-Cola พวกเขาวางแผนและทดสอบการผสานนี้เป็นเวลาหกเดือนก่อนที่จะดึงสิ่งที่จะทำ การมี DBA แบบสแตนด์อโลนไม่จำเป็นต้องมีใน บริษัท เล็ก ๆ แต่ในทีมใหญ่ ๆ นั้นจำเป็นสำหรับความพึงพอใจของลูกค้า
Mike S

ที่กล่าวว่าใน บริษัท ขนาดเล็ก (<50 คน) ที่มีอย่างน้อยหนึ่ง (ดีกว่าสองหรือสาม) แบบสแตนด์อโลน DBA (s) เป็น super, super ดีที่มีเท่าที่นักพัฒนาโปรแกรมมีความกังวล นั่นและพนักงานไอทีโดยเฉพาะในการแก้ไขคอมพิวเตอร์ แต่นั่นเป็นอีกเรื่องหนึ่งโดยสิ้นเชิง
Mike S

2
@ 0A0D และบ่อยครั้งในอีก 6 ปีต่อมาเมื่อมีการบันทึกเป็นพันล้านครั้งในตารางและเมื่อระเบียบทั้งหมดช้าลงอย่างรวดเร็วพวกเขาจ้างผู้เชี่ยวชาญด้านฐานข้อมูลเพื่อแก้ไขปัญหาที่ไม่ควรได้รับการออกแบบโดยโปรแกรมเมอร์โปรแกรม ฐานข้อมูลนั้นยากมากที่จะทำการปรับโครงสร้างใหม่และจำเป็นต้องได้รับการออกแบบมาเพื่อประสิทธิภาพตั้งแต่ต้น พวกเขายังมีแนวโน้มที่จะออกแบบตามสิ่งที่อินเทอร์เฟซผู้ใช้ต้องการไม่ใช่สิ่งที่ฐานข้อมูลต้องการดังนั้นจึงไม่ต้องมีการควบคุมภายในและการตรวจสอบและข้อ จำกัด ด้านความสมบูรณ์ของข้อมูล ฯลฯ
HLGEM

12

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

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

พวกเขาเขียนแบบสอบถามที่ซับซ้อนโดยเฉพาะอย่างยิ่งการรายงานแบบสอบถาม ฉันเองได้เขียนข้อความค้นหาที่ยาวกว่า 1,000 บรรทัดเนื่องจากความซับซ้อนของข้อกำหนด พวกเขายังคงต้องวิ่งได้เร็ว

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

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

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

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


6

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

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

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


2

ค่อนข้างง่าย หากคุณได้ยินเกี่ยวกับรูปแบบ MVC คุณควรทราบถึงความแตกต่างระหว่างคอนโทรลเลอร์และรุ่นของคุณ ตัวอย่างเช่นหากคุณกำลังเขียน ERP ลองจินตนาการว่าในคอนโทรลเลอร์ของคุณคุณเพียงแค่พูดว่า "restoreCashFlow" กับโมเดลของคุณและโมเดลของคุณจะเรียกโปรแกรมที่เก็บไว้ในฐานข้อมูล โปรแกรมที่จัดเก็บนี้ดูแลการเข้าร่วมการกรองการสั่งซื้อและอื่น ๆ และคุณจะได้รับข้อมูลที่ถูกประมวลผลกลับมา ในตัวควบคุมของคุณคุณเพียงแค่ต้องข้าวต้มสิ่งต่าง ๆ ด้วยกัน

หากคุณมีข้อสงสัยเกี่ยวกับขั้นตอนการจัดเก็บโปรดดูที่: ทำไมต้องใช้ขั้นตอนการจัดเก็บ

ใส่เพียง: นักพัฒนาฐานข้อมูลเขียนโปรแกรมที่เก็บไว้ (ขั้นตอนและฟังก์ชั่น) สำหรับแอปพลิเคชันของคุณเพื่อดูแล M ใน MVC (หรือ logics ธุรกิจหากคุณไม่ใช้ mvc)


2

Oracle ไม่ได้เป็นเพียงฐานข้อมูล แต่เป็นสภาพแวดล้อมการเขียนโปรแกรมที่สมบูรณ์รวมถึงฟอร์มและผู้ออกแบบรายงาน ในฐานะโปรแกรมเมอร์ของออราเคิลคุณตั้งโปรแกรมแอพพลิเคชั่นสำหรับผู้ใช้ การเข้ารหัสฐานข้อมูลที่คุณอ้างถึงมักจะทำโดยผู้ดูแลระบบฐานข้อมูลผู้เชี่ยวชาญ (DBA's)

Sybase ฉันคิดว่าเป็นอีกหนึ่งที่มีสภาพแวดล้อมการเขียนโปรแกรมที่คล้ายกัน

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


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

SQL Server เหมือนกัน นอกเหนือจากขั้นตอนการจัดเก็บแล้วแพคเกจ SSIS ยังอนุญาตให้ใช้การเขียนโปรแกรมด้วยภาพเรียกรหัสอื่น ๆ ที่มีอยู่การเขียนโปรแกรม vb.net หรือ c # .net และอื่น ๆ อีกมากมายทั้งหมดห่อหุ้มด้วย IDE ฉันไม่ได้ใช้ SSRS แต่ฉันคิดว่ามันคล้ายกัน มีตันของการเขียนโปรแกรมและโปรแกรมเมอร์ฐานข้อมูลต้องรู้เครื่องมือและภาษาและกระบวนการต่าง ๆ มากมาย
วันพฤหัสบดีที่

2

ฉันจะบอกว่านักพัฒนาฐานข้อมูลรับผิดชอบต่อไปนี้อย่างน้อยหนึ่งอย่าง

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

ขึ้นอยู่กับ RDBMS ที่เป็นปัญหาซึ่งอาจรวมถึงงานต่าง ๆ เช่น

  • การสร้างรายงานและแบบฟอร์ม
  • การสร้างโฟลว์สำหรับการนำเข้า / ส่งออกข้อมูล

ดูรายการความรับผิดชอบนี้

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