Apakah DBA perlu tahu cara memprogram dalam bahasa sistem selain SQL?

20

Sejauh mana seorang Administrator Database perlu mengetahui bahasa pemrograman tingkat aplikasi atau sistem (misalnya. NET atau PHP) selain "hanya SQL"?

Untuk keperluan pertanyaan ini, tidak ada versi spesifik dari standar SQL yang dipertimbangkan untuk jawaban ini (SQL ANSI 86, SQL ISO 87, SQL: 2008) karena pertanyaannya berkaitan dengan bahasa desktop atau server di luar ranah SQL.

p mac
sumber

Jawaban:

25

Tergantung.

Di toko besar, mungkin bukan karena Anda memiliki ribuan server yang harus dijaga dan alat Anda disediakan. Di sebuah toko kecil, Anda mungkin perlu lebih banyak pengetahuan karena Anda memiliki uang yang lebih luas.

Bahasa scripting (PowerShell, cmd.exe misalnya) selalu berguna meskipun untuk memantau, menggunakan dll. Saya sering memiliki beberapa skrip Perl yang harus saya pertahankan (hanya tentang). Lalu ada berbagai paket ETL yang diharapkan Anda ketahui.

Mengatakan itu, sebagian besar DBA (yang saya tahu) akan dapat menulis hal-hal dasar CLR atau tahu PL / SQL dengan baik. Bagi saya, garis pemisah adalah mengetahui tentang pola atau arsitektur .net atau Java yang lebih luas. Saya tidak membutuhkannya sebagai pengembang DB atau DBA. Dengan cara yang sama dengan .net atau PHP atau Java Monkeys tidak mengerti desain database atau arsitektur atau kode seperti halnya saya.

Secara pribadi, saya memutuskan untuk berhenti mengejar bahasa klien terbaru atau terbaik tahun lalu dan fokus pada pekerjaan basis data. Itu tidak membuat saya menjadi "non-programmer": Saya harus mempelajarinya lagi jika saya harus.

gbn
sumber
4
Memberi +1 untuk "itu tergantung" diikuti oleh sesuatu yang dilewatkan semua orang (atau mungkin dianggap terlalu jelas) - itu tergantung pada ukuran toko Anda. Pekerjaan saya sebelumnya adalah kami bertiga di departemen TI, saya harus melakukan semuanya termasuk pengembangan web. Sekarang di tempat saya sekarang dengan 80 staf TI, itu semua basis data sepanjang waktu.
Simon Righarts
idk, aku merasa milikku tidak diarahkan ke toko besar atau kecil ...
jcolebrand
"..Aku memutuskan untuk berhenti mengejar bahasa klien terbaru atau terbaik bertahun-tahun lalu dan fokus pada pekerjaan basis data ..." - pujian ini yang membuatku senang. Poin yang bagus. Saya suka melihat db sebagai konstanta besar, di mana Anda membawa bahasa lain ke pesta di berbagai "titik akses" ke database. Apakah Anda ingin membuat titik akses itu, terserah Anda. Jika Anda mendapati diri Anda sering mengajukan pertanyaan itu, mungkin perubahan fokus sudah tepat.
robopim
gbn - berapa banyak kode yang Anda temukan setiap hari? Apakah sebagian besar SQL?
robopim
@pimbrouwers sekarang, ini adalah PowerShell dan SQL tapi saya sysadmin + DBA. Pekerjaan terakhir adalah SQL, beberapa PowerShell, beberapa c #. Sebelumnya, kebanyakan SQL dan SSIS (BI DBA). Itu tergantung fitur SQL selalu dalam apa yang saya lakukan.
gbn
14

Saya sudah tahu DBA bisa lolos dengan sedikit atau tanpa keterampilan pemrograman, tetapi setiap DBA yang pernah saya anggap bagus setidaknya memiliki keterampilan pemrograman yang masuk akal. Satu atau dua yang bisa saya pikirkan memiliki latar belakang pengembangan yang substansial dan merupakan pengembang yang cukup baik. Ada yang adil jumlah dari open-source perkakas yang ditulis oleh orang-orang yang bekerja sebagai DBA dalam pekerjaan mereka dan IIRC orang yang menulis Toad digunakan untuk bekerja sebagai DBA.

Bergantung pada peran Anda mungkin menemukan diri Anda menulis atau menyetel kueri, menulis skrip untuk mengotomatiskan tugas atau berkonsultasi pada desain aplikasi. Dalam beberapa kasus, Anda mungkin hanya mengurus banyak server melalui OEM atau alat pemantauan lainnya.

Lingkungan pengembangan 'perusahaan' modern seperti .Net atau Java cukup kompleks sehingga pengembang dapat membuat karier hanya karena mengkhususkan diri di dalamnya. Sebagai DBA, khususnya di ruang pengembangan, memiliki pengetahuan C # atau Java yang bekerja mungkin tidak ada salahnya, tetapi Anda mungkin tidak akan menghabiskan banyak waktu untuk benar-benar membuat kode di dalamnya.

Anda mungkin akan mendapatkan lebih banyak jarak tempuh dari alat skrip apa pun yang digunakan pada platform Anda, meskipun banyak sistem mengekspos .Net, Java, COM atau API layanan web. Jika Anda perlu kode sesuatu terhadap API ini, Anda akan memerlukan setidaknya pengetahuan dasar kerja dari sesuatu yang dapat mengkonsumsi API itu. Namun, keterampilan arsitektur aplikasi tingkat lanjut biasanya tidak diperlukan untuk melakukan ini.

Beberapa pengembang akan memiliki keterampilan basis data yang kuat, tetapi ketakutan yang tidak rasional terhadap basis data cukup umum di kalangan pengembangan. Banyak pengembang juga tidak pernah benar-benar memahami paradigma 'mengatur operasi' yang mendasari SQL. Sebagai Dev DBA Anda dapat menemukan diri Anda berurusan dengan konsekuensi dari ini, dan mungkin harus campur tangan dalam kode prosedur yang tersimpan untuk menyelesaikan masalah kinerja.

ETL dan perangkat yang mengelilingi database juga dapat jatuh ke dalam kewenangan DBA. Saya telah melihat beberapa peran DBA yang diiklankan yang tampaknya melibatkan sejumlah besar pekerjaan pengembangan back-end. Ini akan paling umum di perusahaan kecil. Satu poster baru-baru ini ingin mengintegrasikan metrik khusus ke Oracle Enterprise Manager, yang memiliki API plugin untuk melakukan ini. Sangat umum untuk melihat persyaratan seperti ini muncul, dan pada dasarnya satu-satunya cara untuk ini adalah menulis beberapa kode lem.

Ada banyak 'Tools Guys' yang bekerja di IT dan mereka dapat menyelesaikan pekerjaan yang bermanfaat meskipun ada parokalisme. Namun, ketika alat kehabisan tenaga, seringkali satu-satunya cara untuk menyelesaikan sesuatu adalah dengan benar-benar menulis sedikit kode untuk melakukannya. Di sinilah keterampilan pemrograman memisahkan pria dari anak laki-laki.

ConcernedOfTunbridgeWells
sumber
6

Saya akan mengatakan tidak biasanya, tetapi tidak pernah sakit. SQL Server cukup besar sehingga saya tidak berpikir satu orang bisa menguasai seluruh produk. Saya telah menjadi DBA sejak SQL Server 4.2, dan menganggap diri saya seorang ahli di sebagian besar area, tetapi saya akui saya tidak akan bisa menulis permintaan MDX tanpa google di ujung jari saya di setiap langkah.

Yang ingin saya katakan adalah bahwa Anda tidak bisa menjadi ahli dalam segala hal. Menjadi DBA yang benar-benar baik berarti Anda harus hebat dalam T-SQL, tetapi kemungkinan tidak terlalu bagus di .NET, atau setidaknya tidak seefektif orang lain yang dapat memfokuskan waktu mereka pada .NET.

Powershell baik untuk diketahui, seperti halnya masuk dan keluarnya SSIS. Selain itu, serahkan bahasa pengembangan lainnya ke pengembang.

datagod
sumber
Saya pikir itu perlu dicatat bahwa SSAS benar-benar entitas yang terpisah dari SQL Server dan tidak banyak orang yang pernah terlibat dalam situasi di mana mereka melakukan banyak pekerjaan dengannya. Saya telah menggunakan SSAS dan sejak sekitar tahun 2001 dan saya benar-benar hanya melakukannya selama beberapa minggu setiap tahun.
ConcernedOfTunbridgeWells
SSAS adalah bagian dari keluarga SQL Server seperti SSIS dan SSR. Seperti saya katakan, SQL Server BESAR.
datagod
1
SSAS dibundel dengan SQL Server tetapi merupakan sistem mandiri. Anda sebenarnya tidak memerlukan SQL Server untuk menggunakannya - ia dapat memuat data dari apa pun yang dapat Anda peroleh untuk terhubung. Saya pikir SSAS hanya digunakan di sebagian kecil situs SQL Server. Coba bandingkan jumlah listing di jobserve.com yang menginginkan keterampilan server sql vs jumlah iklan untuk mdx. Tidak masuk akal untuk menghabiskan waktu bertahun-tahun bekerja dengan SQL Server dan tidak pernah menyentuh SSAS.
ConcernedOfTunbridgeWells
SSIS dapat diinstal sebagai sistem mandiri. Apakah itu cocok dengan model Anda juga? Menurut Anda, apa arti nama SSAS? Layanan Analisis SQL Server. Itu adalah bagian dari suite, apakah orang menggunakannya atau tidak.
datagod
5

Sudah pengalaman saya bahwa sementara sebagian besar DBA memiliki semacam latar belakang pengembangan, mereka sama sekali tidak diharuskan untuk menulis kode. DBA yang benar-benar bagus yang pernah saya tangani telah memiliki pengetahuan luas berbagai topik termasuk skrip shell, sistem operasi, dan pengetahuan aplikasi khusus (mis: PeopleSoft).

Saya memiliki instruktur Administrasi Database di sekolah pascasarjana yang memberi kami daftar pertanyaan yang dapat dijawab oleh DBA (Oracle) yang baik: (Saya hanya akan memposting beberapa hal penting dari daftar 40 atau lebih)

  • Mengapa Oracle tidak secara otomatis membuat indeks pada kolom kunci asing?
  • Saat menjatuhkan batasan, kapan Anda akan menggunakan klausa KEEP INDEX?
  • Kapan Anda akan menggunakan IOT vs tabel biasa?
  • Apakah ide yang baik untuk menempatkan tabel dan indeks di tablespace terpisah?
  • Apa perbedaan antara tipe data VARCHAR dan VARCHAR2?
  • Apakah lebih baik menggunakan pemicu atau kendala untuk menegakkan aturan bisnis?
  • Kapan Anda ingin menggunakan alokasi otomatis vs. ukuran segmen tetap?
  • Kapan Anda akan menggunakan tabel eksternal vs tabel tumpukan vs tabel B-tree?
  • Seberapa sering Anda harus membersihkan tempat sampah?
  • Strategi apa yang akan Anda rekomendasikan untuk membuat cadangan tabel yang dipartisi? Bagaimana dengan indeks yang dipartisi?

(Oracle) Kebutuhan DBA untuk mengetahui hal-hal ini agar efektif. Kebanyakan pengembang yang saya tahu (yang menentang Oracle) akan kesulitan untuk menjawab bahkan satu atau dua dari ini dengan benar.

Harun
sumber
5

Jika Anda DBA, Anda mungkin bekerja di bidang kinerja dan keamanan (antara lain). Ini bisa melibatkan pembuatan profil dan bantuan dengan menyetel aplikasi klien yang sedang dikerjakan pengembang. Dengan demikian tentu tidak ada salahnya untuk mengetahui dasar-dasar bahasa yang digunakan pengembang, dan bagaimana berinteraksi dengan server database. Untuk SQL Server, itu mungkin .NET. Untuk MySQL, mungkin beberapa kombinasi php atau java.

Misalnya, jika server ditekan untuk utas klien, maka akan membantu untuk dapat memberi tahu pengembang bahwa mereka harus menggunakan instance tunggal untuk ObjectDataSources mereka sehingga mereka dapat menggunakan kembali koneksi database tunggal. Dan juga pastikan mereka menggunakan query parameter dengan benar untuk membatasi injeksi SQL. Hal-hal seperti itu.

Anda tidak akan melakukan pemrograman apa pun dalam arti mengembangkan aplikasi klien jika Anda benar-benar seorang DBA, tetapi Anda harus tahu cara kerjanya (secara umum).

db2
sumber
1
+1 .net saya sebagian besar terbatas pada mengetahui bagaimana mereka memanggil basis data saya. Itulah yang penting :-)
gbn
4

Baiklah, mari kita lihat, Oracle menggunakan PL / SQL yang benar-benar mirip dengan Pascal (bahasa yang digunakan untuk menghasilkan kode aplikasi desktop tetapi telah jatuh dalam beberapa tahun terakhir, dan pengembang telah beralih ke Delphi, yang beberapa telah hilang dari sana ke .NET), dan Oracle sekarang juga mendukung Java untuk beberapa kegiatan. Karena Oracle DBA harus mengetahui semua aspek sistem agar dapat dihargai, saya akan mengatakan bahwa mengetahui Pascal dan Java akan menjadi persyaratan.

TSQL memiliki kapasitas untuk menulis kode yang dikelola .NET (CLR) untuk beberapa fungsi di Sql Server, dan oleh karena itu, DBA yang baik mungkin perlu tahu tentang ini (tetapi itu tidak selalu dapat digunakan dalam versi yang lebih lama, jadi banyak DBA cenderung menghindar dari yang set fitur dalam pengalaman saya).

Jadi itu yang besar, dan yang kebanyakan orang rujuk ketika mereka bertanya ketika Anda bertanya. Saya tidak tahu semua mesin lain untuk mengetahui apa yang mereka lakukan dan tidak mendukung, tetapi saya tahu bahwa banyak yang lain memiliki integrasi bahasa selain SQL juga.

jcolebrand
sumber
+1 tapi saya pikir Java server-side di Oracle biasanya tidak terlalu berguna (ada pengecualian aneh )
Jack Douglas
@JackDouglas - sebagian besar java sisi server atau kode CLR berguna untuk tugas sistem. Satu hal yang perlu diperhatikan tentang kode sisi server adalah Anda cenderung membayar untuk lisensi server DB pada kapasitas CPU yang digunakan untuk menjalankannya.
ConcernedOfTunbridgeWells
Tak satu pun dari mereka yang sangat berguna setiap hari, tetapi ketika Anda membutuhkannya, Anda membutuhkannya. Dan jika DBA tidak mengetahui hal-hal itu, dan setidaknya tidak bisa membaca kode yang diberikan oleh pengembang, dia dalam kesulitan. Itu saja yang saya katakan.
jcolebrand
-1

Saya cukup yakin bahwa hanya toko-toko besar dengan aplikasi besar yang memiliki permintaan untuk DBA non-pemrograman, karena toko-toko kecil dengan basis data sederhana dapat lolos dengan jack-of-all-trades developer / DBA. Agar DBA menjadi master produk (Oracle, SQL Server, apa pun) harus ada permintaan untuk pengetahuan ini! DBA harus mengalami lingkungan dan masalah yang kompleks untuk membantunya menjadi lebih berpengetahuan. Ini pada dasarnya kata-kata kasar saya, karena saya seorang DBA di sebuah toko kecil dan saya tidak melakukan apa pun yang membutuhkan lebih dari 2 neuron, saya pikir saya membuang-buang waktu saya di pekerjaan ini. Saya ingin menjadi pengembang.

Leshrac Evil
sumber