DBA จำเป็นต้องรู้วิธีการเขียนโปรแกรมในภาษาของระบบนอกเหนือจาก SQL หรือไม่?


20

ผู้ดูแลฐานข้อมูลจำเป็นต้องรู้ภาษาหรือระบบการเขียนโปรแกรมระดับแอปพลิเคชัน (ตัวอย่างเช่น. NET หรือ PHP) นอกเหนือจาก "just SQL" หรือไม่?

สำหรับวัตถุประสงค์ของคำถามนี้จะไม่มีการพิจารณามาตรฐาน SQL เฉพาะรุ่นสำหรับคำตอบนี้ (SQL ANSI 86, SQL ISO 87, SQL: 2008) เนื่องจากคำถามนี้เกี่ยวกับภาษาเดสก์ท็อปหรือเซิร์ฟเวอร์นอกขอบเขตของ SQL

คำตอบ:


25

มันขึ้นอยู่กับ.

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

ภาษาสคริปต์ (PowerShell, cmd.exe เป็นต้น) มักจะมีประโยชน์เสมอสำหรับการตรวจสอบการปรับใช้ ฯลฯ ฉันมักจะมีสคริปต์ Perl บางตัวที่ฉันต้องดูแล (ประมาณ) จากนั้นมีแพ็คเกจ ETL ที่หลากหลายที่คุณคาดหวังให้รู้

บอกว่าส่วนใหญ่ DBAs (ที่ฉันรู้) จะสามารถเขียนสิ่ง CLR พื้นฐานหรือรู้จัก PL / SQL ได้ดี สำหรับฉันแล้วเส้นแบ่งคือรู้เกี่ยวกับรูปแบบที่กว้างขึ้นหรือสถาปัตยกรรมของ. net หรือ Java ฉันไม่ต้องการมันในฐานะนักพัฒนา DB หรือ DBA ในทำนองเดียวกัน. net หรือ PHP หรือ Java Monkeys ไม่เข้าใจการออกแบบฐานข้อมูลหรือสถาปัตยกรรมหรือรหัสเช่นเดียวกับที่ฉันทำ

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


4
+1 สำหรับ "มันขึ้นอยู่กับ" ตามด้วยสิ่งที่ทุกคนพลาด (หรืออาจคิดว่าชัดเจนเกินไป) - ขึ้นอยู่กับขนาดของร้านค้าของคุณ งานก่อนหน้าของฉันคือเราสามคนในแผนกไอทีฉันต้องทำทุกอย่างเล็กน้อยรวมถึงการพัฒนาเว็บ ตอนนี้ที่สถานที่ปัจจุบันของฉันมีพนักงานไอที 80 คนมันเป็นฐานข้อมูลทั้งหมดตลอดเวลา
Simon Righarts

idk ฉันรู้สึกเหมือนเหมืองไม่ได้มุ่งสู่การเป็นร้านค้าขนาดใหญ่หรือเล็ก ...
jcolebrand

".. ฉันตัดสินใจหยุดไล่ล่าภาษาไคลเอนต์ล่าสุดหรือดีที่สุดเมื่อหลายปีก่อนและมุ่งเน้นไปที่การทำงานของฐานข้อมูล ... " - คำยกย่องนี้เป็นสิ่งที่ทำให้ฉันประทับใจ จุดที่ดี ฉันชอบที่จะดู db เป็นค่าคงที่ยอดเยี่ยมโดยคุณนำภาษาอื่น ๆ ไปยังบุคคลใน "access-points" ต่างๆไปยังฐานข้อมูล ไม่ว่าคุณต้องการสร้างจุดเชื่อมต่อเหล่านั้นหรือไม่ก็ขึ้นอยู่กับคุณ หากคุณพบว่าตัวเองถามคำถามนั้นบ่อยครั้งการปรับโฟกัสอาจเหมาะสม
robopim

gbn - คุณคิดว่าตัวเองเขียนโค้ดทุกวันเท่าไหร่? มันเป็น SQL ส่วนใหญ่หรือไม่
robopim

@pimbrouwers ตอนนี้เป็น PowerShell และ SQL แต่ฉันเป็นผู้ดูแลระบบ + DBA งานล่าสุดคือ SQL, PowerShell บางตัว, บาง c # ก่อนหน้านั้นส่วนใหญ่ SQL และ SSIS (BI DBA) มันขึ้นอยู่กับ SQL เสมอคุณสมบัติในสิ่งที่ฉันทำ
gbn

14

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

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

สภาพแวดล้อมการพัฒนาแบบ 'องค์กร' ที่ทันสมัยเช่น. Net หรือ Java นั้นซับซ้อนพอที่นักพัฒนาสามารถสร้างอาชีพได้ ในฐานะ DBA โดยเฉพาะอย่างยิ่งในพื้นที่การพัฒนาการมีความรู้ในการทำงานของ C # หรือ Java อาจไม่เจ็บ แต่คุณอาจจะไม่ใช้เวลาในการเขียนโค้ดจริง

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

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

ETL และการใช้เครื่องมือโดยรอบฐานข้อมูลอาจตกอยู่ในการส่งเงินของ DBA ฉันเคยเห็นบทบาท DBA ค่อนข้างน้อยที่โฆษณาซึ่งดูเหมือนว่าจะเกี่ยวข้องกับงานพัฒนาด้านหลังเป็นจำนวนมาก นี่จะเป็นเรื่องธรรมดาที่สุดใน บริษัท ขนาดเล็ก ผู้โพสต์ล่าสุดคนหนึ่งต้องการรวมการวัดที่กำหนดเองเข้ากับ Oracle Enterprise Manager ซึ่งมีปลั๊กอิน API เพื่อทำสิ่งนี้ เป็นเรื่องธรรมดามากที่จะเห็นความต้องการเช่นนี้เกิดขึ้นและโดยหลักแล้ววิธีเดียวที่จะทำได้คือการเขียนโค้ดกาว

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


6

ฉันจะบอกว่าไม่ปกติ แต่มันไม่เคยเจ็บ SQL Server มีขนาดใหญ่พอที่ฉันไม่คิดว่าคนคนหนึ่งจะเชี่ยวชาญในผลิตภัณฑ์ทั้งหมด ฉันเป็น DBA มาตั้งแต่ SQL Server 4.2 และพิจารณาตัวเองว่ามีความเชี่ยวชาญในด้านส่วนใหญ่ แต่ฉันยอมรับว่าฉันจะไม่สามารถเขียนแบบสอบถาม MDX โดยไม่ต้อง google ที่ปลายนิ้วของฉันทุกขั้นตอน

สิ่งที่ฉันพยายามจะพูดคือคุณไม่สามารถเป็นผู้เชี่ยวชาญในทุกสิ่ง การเป็น DBA ที่ดีจริงๆหมายความว่าคุณควรเก่งใน T-SQL แต่ไม่น่าจะดีมากที่. NET หรืออย่างน้อยก็ไม่มีประสิทธิภาพเท่าคนอื่น ๆ ที่สามารถมุ่งเน้นเวลาของพวกเขาใน. NET

Powershell เป็นสิ่งที่ดีที่จะรู้เช่นเดียวกับ ins-and-out ของ SSIS นอกเหนือจากนั้นปล่อยให้ภาษาการพัฒนาอื่น ๆ แก่นักพัฒนา


ฉันคิดว่ามันคุ้มค่าที่จะสังเกตว่า SSAS เป็นนิติบุคคลแยกต่างหากจาก SQL Server และมีคนจำนวนมากที่ไม่เคยตกอยู่ในสถานการณ์ที่พวกเขาทำงานจำนวนมาก ฉันใช้งาน SSAS มาตั้งแต่ปี 2544 และฉันใช้มันแค่ไม่กี่สัปดาห์ทุกปี
ConcernedOfTunbridgeWells

SSAS เป็นเพียงส่วนหนึ่งของตระกูล SQL Server เช่นเดียวกับ SSIS และ SSRS อย่างที่ฉันบอกว่า SQL Server นั้นใหญ่
datagod

1
SSAS นั้นมาพร้อมกับ SQL Server แต่เป็นระบบแบบสแตนด์อโลน คุณไม่จำเป็นต้องใช้ SQL Server จริง ๆ - สามารถโหลดข้อมูลจากทุกสิ่งที่คุณสามารถนำไปใช้เชื่อมต่อได้ ฉันคิดว่า SSAS ใช้เฉพาะในไซต์ SQL Server ส่วนน้อยเท่านั้น ลองเปรียบเทียบจำนวนของรายชื่อบน jobserve.com ที่ต้องการทักษะเซิร์ฟเวอร์ sql เทียบกับจำนวนโฆษณาของ mdx มันไม่สมเหตุสมผลที่จะใช้เวลาหลายปีในการทำงานกับ SQL Server และไม่เคยแตะ SSAS
ConcOfOfTunbridgeWells

SSIS สามารถติดตั้งเป็นระบบอิสระได้ นั่นเหมาะกับโมเดลของคุณด้วยหรือไม่? คุณคิดว่าชื่อ SSAS หมายถึงอะไร บริการวิเคราะห์เซิร์ฟเวอร์ SQL มันเป็นส่วนหนึ่งของชุดไม่ว่าคนจะใช้หรือไม่
datagod

5

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

ฉันมีอาจารย์ผู้สอนการบริหารฐานข้อมูลในโรงเรียนที่จบที่ให้รายการคำถามที่ดี (Oracle) DBA ใด ๆ ที่ควรจะสามารถตอบ: (ฉันจะโพสต์ไฮไลท์บางส่วนจากรายการ 40 หรือดังนั้น)

  • เหตุใด Oracle จึงไม่สร้างดัชนีในคอลัมน์คีย์ต่างประเทศโดยอัตโนมัติ
  • เมื่อวางข้อ จำกัด คุณจะใช้ส่วนคำสั่ง KEEP INDEX เมื่อใด?
  • เมื่อใดที่คุณจะใช้ IOT เทียบกับตารางปกติ
  • คุณควรวางตารางและดัชนีในพื้นที่ตารางแยกกันหรือไม่?
  • อะไรคือความแตกต่างระหว่างประเภทข้อมูล VARCHAR และ VARCHAR2?
  • มันจะดีกว่าถ้าใช้ทริกเกอร์หรือข้อ จำกัด ในการบังคับใช้กฎทางธุรกิจ
  • คุณต้องการใช้การจัดสรรอัตโนมัติกับขนาดเซกเมนต์คงที่เมื่อใด
  • เมื่อใดที่คุณจะใช้ตารางภายนอกเทียบกับตารางฮีปกับตาราง B-tree
  • คุณควรล้างถังรีไซเคิลบ่อยแค่ไหน?
  • กลยุทธ์ใดที่คุณจะแนะนำสำหรับการสำรองตารางที่แบ่งพาร์ติชัน วิธีการเกี่ยวกับดัชนีแบ่งพาร์ติชัน?

(Oracle) DBA จำเป็นต้องรู้ว่าสิ่งเหล่านี้มีประสิทธิภาพ นักพัฒนาส่วนใหญ่ที่ฉันรู้ (รหัสกับ Oracle) จะถูกกดยากที่จะตอบแม้หนึ่งหรือสองอย่างถูกต้อง


5

หากคุณเป็น DBA คุณอาจทำงานในขอบเขตของประสิทธิภาพและความปลอดภัย (ท่ามกลางผู้อื่น) สิ่งนี้อาจเกี่ยวข้องกับการทำโปรไฟล์และช่วยเหลือเกี่ยวกับการปรับแต่งแอปพลิเคชันไคลเอนต์ที่นักพัฒนากำลังทำงานอยู่ ดังนั้นมันจะไม่เจ็บแน่นอนที่จะรู้พื้นฐานของภาษาที่นักพัฒนาใช้และวิธีการเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล สำหรับ SQL Server นั่นอาจเป็น. NET สำหรับ MySQL อาจเป็นการรวมกันของ php หรือ java

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

คุณจะไม่ทำการเขียนโปรแกรมใด ๆในแง่ของการพัฒนาแอปพลิเคชันไคลเอนต์ถ้าคุณเป็น DBA อย่างเคร่งครัด แต่คุณควรรู้ว่ามันทำงานอย่างไร (โดยทั่วไปจะพูด)


1
+1. net ของฉันส่วนใหญ่มีข้อ จำกัด ในการรู้วิธีที่พวกเขาเรียกฐานข้อมูลของฉัน นั่นเป็นบิตที่สำคัญ:
2012

4

เรามาดูกันว่า Oracle ใช้ PL / SQL ซึ่งคล้ายกับ Pascal จริงๆ (ภาษาที่เคยใช้ในการผลิตโค้ดแอพสำหรับเดสก์ท็อป แต่มีการล้มลงในช่วงไม่กี่ปีที่ผ่านมาและนักพัฒนาได้ลอยไป Delphi) จากตรงนั้นถึง. NET) และขณะนี้ Oracle รองรับ Java สำหรับบางกิจกรรม เนื่องจาก Oracle DBA จำเป็นต้องรู้ทุกแง่มุมของระบบเพื่อให้เป็นที่พอใจฉันจะบอกว่าการรู้ภาษาปาสคาลและชวานั้นเป็นสิ่งจำเป็น

TSQL มีความสามารถในการเขียนโค้ดที่ได้รับการจัดการ. NET (CLR)สำหรับฟังก์ชันการทำงานบางอย่างใน SQL Server และดังนั้น DBA ที่ดีอาจจำเป็นต้องรู้เกี่ยวกับสิ่งนี้ (แต่มันไม่สามารถใช้งานได้ในรุ่นเก่าเสมอไป) ของ DBAs มักจะอายจากฟีเจอร์ชุดนั้นในประสบการณ์ของฉัน)

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


+1 แต่ฉันคิดว่าฝั่งเซิร์ฟเวอร์ Java ใน Oracle ไม่ได้มักจะมีประโยชน์มาก (มีข้อยกเว้นคี่ )
แจ็คดักลาส

@JackDouglas - ส่วนใหญ่จาวาฝั่งเซิร์ฟเวอร์หรือรหัส CLR มีประโยชน์สำหรับงานของระบบ สิ่งหนึ่งที่ควรทราบเกี่ยวกับรหัสฝั่งเซิร์ฟเวอร์คือคุณมักจะจ่ายเงินให้กับการอนุญาตให้ใช้งานเซิร์ฟเวอร์ DB สำหรับความจุของ CPU ที่ใช้ในการเรียกใช้
ConcOfOfTunbridgeWells

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

-1

ฉันค่อนข้างมั่นใจว่ามีเพียงร้านค้าขนาดใหญ่ที่มีแอพพลิเคชั่นขนาดใหญ่เท่านั้นที่มีความต้องการ DBA ที่ไม่ใช่การเขียนโปรแกรมเนื่องจากร้านค้าขนาดเล็กที่มีฐานข้อมูลอย่างง่ายสามารถเข้าถึงได้ด้วยนักพัฒนา / DBA สำหรับ DBA ที่จะเป็นผู้ชำนาญในผลิตภัณฑ์ (Oracle, SQL Server, อะไรก็ตาม) จะต้องมีความต้องการความรู้นี้! DBA ต้องอยู่ภายใต้สภาพแวดล้อมและปัญหาที่ซับซ้อนเพื่อช่วยให้เขามีความรู้มากขึ้น นี่เป็นคำพูดหยาบคายของฉันเพราะฉันเป็น DBA ที่ร้านค้าเล็ก ๆ และฉันไม่ได้ทำอะไรที่ต้องการเซลล์ประสาทมากกว่า 2 เซลล์ฉันคิดว่าฉันเสียเวลากับงานนี้ ฉันต้องการเป็นนักพัฒนา

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