apa yang dilakukan pemrogram basis data?

14

Setiap kali saya membaca tentang programmer Oracle dll, saya menjadi bingung. Saya tidak tahu persis apa yang mereka lakukan.

Dari pemahaman saya, programmer aplikasi perlu mengembangkan fungsionalitas inti. Perpustakaan yang mereka gunakan mungkin membantu dalam pengembangan GUI atau konektivitas basis data tetapi fungsionalitas yang membuat aplikasi itu aplikasi harus diprogram dan yang membuat setiap aplikasi berbeda (mungkin beberapa bisa men-tweak versi lain).

Dalam hubungan ini, bukankah pemrograman database pada dasarnya membuat tabel dan bukankah tabel ini diproses sebagai tanggapan terhadap pernyataan SQL yang dikeluarkan oleh aplikasi yang biasanya merupakan ujung depan? Jadi, apakah pembuatan meja adalah masalah besar?

Thomas
sumber

Jawaban:

18

Untuk benar-benar menghargai apa yang dilakukan oleh programmer basis data, Anda harus mencobanya sendiri - izinkan saya mencoba dan menjelaskannya dengan cara lain.

Untuk kurang informasi itu mungkin tampak seperti di programer aplikasi dunia yang ideal tidak benar-benar melakukan itu banyak - mereka mengambil persyaratan dan proses seperti yang ditulis oleh analis bisnis dan menerjemahkannya ke dalam kode yang melakukan penawaran programmer.

Tentu saja siapa pun yang memiliki pengalaman pemrograman akan tahu bahwa ini bukan cara kerjanya - mengabaikan fakta bahwa persyaratan tidak pernah menentukan perilaku aplikasi hingga detail terbaik, ada sejumlah komplikasi

  • Pemrogram perlu memutuskan bagaimana aplikasi harus disusun
  • Menerjemahkan persyaratan menjadi sesuatu yang dimengerti komputer seringkali jauh dari sepele.
  • Pemrogram perlu menyadari implikasi kinerja
  • Ketika programmer mendapatkan pengalaman menggunakan platform pilihan mereka, mereka menjadi lebih mahir, memberikan kode kualitas yang lebih tinggi pada tingkat yang lebih cepat.

(Tentu saja ini adalah daftar yang jauh berkurang, saya hanya mencoba untuk mengambil poin yang memiliki paralel dalam pengembangan basis data)

Baik pengembangan basis data hampir sama - bagi yang kurang informasi kelihatannya cukup mudah, tetapi begitu Anda semakin terlibat, Anda menjadi sadar akan komplikasi spesifik pengembangan basis data:

  • Mereka memutuskan bagaimana database harus disusun
  • Seringkali pertanyaan yang lebih kompleks bisa jauh dari sepele untuk diterjemahkan dari persyaratan
  • Pengembang basis data harus peduli dengan kinerja basis data
  • Mereka juga perlu peduli dengan menjaga integritas dan ketersediaan data
  • Dan seperti halnya pengembang, pemrogram basis data menjadi lebih cakap dalam segala hal yang mereka lakukan saat mereka menjadi lebih berpengalaman.

Sama seperti pengembangan aplikasi diisi dengan jebakan tersembunyi (masalah threading dll ...), begitu pula pengembangan basis data, dan sering kali konsekuensi dari pelanggaran busuk terhadap masalah ini sangat serius (mis. Kehilangan data atau berpotensi downtime untuk semua aplikasi menggunakan database) .

Saya pikir hal yang membuat pemrogram berpikir bahwa tidak ada yang terjadi ("Tidak bisakah programmer melakukan ini?") Adalah bahwa ada banyak tumpang tindih antara peran, dan mereka memang membutuhkan keahlian yang sama - saya punya tidak ada keraguan bahwa siapa pun yang memiliki kemampuan untuk menjadi pengembang yang baik juga memiliki kemampuan untuk menjadi programmer database yang baik diberikan waktu dan pengalaman, namun tidak seorang pun harus meremehkan nilai dari pakar basis data yang berpengalaman.

Justin
sumber
Terima kasih atas jawabannya (saya telah menyerah berharap mendapatkannya)! Alasan saya menanyakan hal ini adalah, saya, sebagai "programmer aplikasi", mendesain database kecil dalam msaccess untuk menyelesaikan sesuatu untuk proyek saya dan sepertinya tidak banyak pekerjaan tetapi sebagai seorang programmer tentu saja saya tidak tahu apa-apa. t "mudah". Tetapi saya masih kekurangan perspektif yang diperlukan untuk memahami hal ini. Maksudku, betapa berbedanya satu dbase dari yang lain? Seperti tidak ada pengembang aplikasi "menulis" kode manajemen file tetapi menggunakan pustaka, apakah tidak ada siap untuk menggunakan templat / pustaka yang tersedia untuk desain dbase? Atau apakah pemrograman dbase pada kenyataannya adalah admin dbase?
Bukankah seorang programmer biasa melakukan ini juga? Saya kira saya telah bekerja di organisasi yang terlalu kecil untuk mengamati penggunaan untuk programmer database secara eksklusif karena pengembang aplikasi biasanya yang mengendarai kereta, sehingga untuk berbicara. Dia tahu apa yang dia inginkan dan biasanya mendesainnya sendiri.
Brian
1
Dalam pengalaman saya ada tindakan bisnis tertentu yang membutuhkan tim ahli DBA. Yang terbaru yang saya dengar adalah merger antara Coca-Cola dan Minute Maid. Basis data mereka (dan mereka memiliki banyak) harus digabung, dan Minute Maid's tidak dirancang dengan cara yang sama dengan yang dimiliki Coca-Cola untuk mereka dan ini, itu, dan hal lainnya. Mereka merencanakan dan menguji gabungan ini selama enam bulan sebelum menarik semua malam untuk melakukannya. Memiliki DBA mandiri tidak selalu diperlukan di perusahaan kecil, tetapi dalam tim besar mereka menjadi mutlak diperlukan untuk kepuasan pelanggan.
Mike S
Yang mengatakan, di perusahaan kecil (<50 orang) memiliki setidaknya satu (lebih disukai dua atau tiga) DBA mandiri adalah super, sangat bagus untuk dimiliki sejauh yang menyangkut pengembang aplikasi. Itu dan staf TI yang berdedikasi untuk memperbaiki komputer, tapi itu cerita lain sepenuhnya.
Mike S
2
@ 0A0D, dan semuanya 6 tahun kemudian ketika ada satu miliar catatan atau lebih di tabel dan ketika seluruh kekacauan sangat lambat, mereka menyewa seorang ahli basis data untuk memperbaiki kekacauan yang seharusnya tidak pernah dirancang oleh seorang programmer aplikasi. Database sangat sulit untuk diperbaiki dan perlu dirancang untuk kinerja sejak awal, sesuatu yang terlalu sulit dipahami oleh para pemrogram aplikasi. Mereka juga cenderung mendesain berdasarkan apa yang dibutuhkan antarmuka pengguna bukan apa yang dibutuhkan oleh basis data dan dengan demikian mengabaikan kontrol internal dan audit serta kendala integritas data, dll.
HLGEM
12

Pemrogram basis data melakukan banyak hal. Pertama mereka merancang struktur basis data sehingga akan berfungsi dengan baik dengan jumlah catatan yang diharapkan. Struktur desain yang berfungsi baik untuk beberapa ribu catatan dapat membuat database tidak dapat digunakan pada beberapa juta catatan. Mereka juga perlu memastikan data akan menjaga integritasnya dari waktu ke waktu dan bahwa data tersebut aman dari perubahan atau pencurian yang tidak sah. Mereka harus benar-benar memahami normalisasi dan kapan harus melumpuhkan dan mengapa. Mereka harus memahami kinerja dan cara memastikan integritas data. Mereka harus memahami keamanan dan bagaimana mencegah data dicuri atau diubah dengan jahat.

Mereka menampilkan permintaan. Saya telah mengubah kueri yang memerlukan waktu beberapa menit untuk berjalan ke millseconds. Saya telah mengubah proses yang membutuhkan waktu lebih dari 24 jam untuk berjalan menjadi kurang dari 30 menit. Mereka mendesain dan mempertahankan struktur pengindeksan yang akan menyeimbangkan kecepatan menyisipkan melawan kecepatan pemilihan.

Mereka menulis kueri kompleks terutama kueri pelaporan. Saya pribadi memiliki pertanyaan yang panjangnya lebih dari 1000 baris karena rumitnya persyaratan. Mereka masih harus dan memang berlari cepat.

Mereka membuat gudang data dan proses ETL yang menyertainya untuk mendukung mereka. Seringkali mereka perlu menulis proses untuk membawa data dari sumber lain dan harus mencari tahu cara memetakan bidang dari beberapa basis data klien ke sumber mereka dan ini tidak pernah cocok dalam jenis data, ukuran data, bidang yang diperlukan, nilai pencarian, dll.

Mereka harus menentukan cara memperbaiki karena persyaratan basis data berubah tanpa merusak 100.000.000 catatan yang sudah mereka miliki dan tanpa menghentikan penggunaan basis data. Database besar dapat melibatkan ribuan tabel dan procs tersimpan dan fungsi yang ditentukan pengguna. Memahami struktur seperti itu membutuhkan waktu dan keterampilan seperti halnya memahami apa yang akan dipengaruhi oleh perubahan dan bagaimana.

Mereka merancang cara untuk mengaudit data untuk alasan pengaturan dan pemulihan. Mereka kemudian merancang cara untuk memulihkan data dari tabel audit tersebut. Mereka meneliti masalah dengan data untuk menemukan apakah masalahnya berasal dari bug dalam proses impor, file buruk yang disediakan oleh orang lain atau insert / pembaruan buruk dari aplikasi, atau dari akses yang tidak sah. Mereka menemukan cara untuk memperbaiki data yang buruk ketika programmer aplikasi membuka lubang bagi peretas untuk menyerang.

Seringkali mereka terlibat dalam konversi data dari satu sistem ke sistem baru. Terkadang ini melibatkan pemindahan data dari satu produk COTS ke yang baru yang baru saja dibeli perusahaan. Seperti impor yang dijelaskan sebelumnya, ini adalah proses kompleks yang dapat memakan waktu berbulan-bulan untuk merencanakan dan melaksanakan dan yang memerlukan pengujian ekstensif. Tidak seperti impor, pemrogram database mungkin tidak memiliki kontrol atas struktur data yang berbeda.

HLGEM
sumber
6

Saya magang sebagai programmer basis data untuk pembuatan data dari pembuat wafer 24 jam di akhir tahun 90-an. Saya tidak tahu bagaimana tipikal tugas saya, tetapi bagian terbesar bagi saya adalah ketika perubahan ke pengkodean atau skema lapangan diperlukan, saya harus memastikan bahwa perubahan itu mulus untuk produksi. Pada dasarnya, itu berarti saya akan memberitahu mereka untuk meningkatkan aplikasi klien mereka, yang akan mereka lakukan pada waktu yang nyaman bagi mereka, dan diharapkan akan segera muncul kembali dengan perubahan baru.

Itu jauh lebih terlibat daripada yang saya perkirakan. Skrip konversi dan perangkat lunak klien harus diuji secara menyeluruh. Seringkali dua set data yang semantik identik tetapi tidak kompatibel harus dipertahankan dalam sinkronisasi sampai semua orang diganti. Terkadang perlu untuk beralih dalam beberapa fase yang direncanakan dengan hati-hati untuk membuatnya lancar. Itu tidak biasa untuk mempersiapkan berminggu-minggu untuk pergantian yang terjadi pada dasarnya instan.

Jika seorang programmer database melakukan pekerjaannya dengan benar, akan terlihat bagi pengamat seperti pekerjaannya sangat mudah. Saya tidak terkejut bahwa banyak orang tidak benar-benar tahu apa yang mereka lakukan.

Karl Bielefeldt
sumber
2

Ini agak sederhana. Jika Anda mendengar tentang pola MVC, Anda harus tahu perbedaan antara pengontrol dan model Anda. Sebagai contoh jika Anda menulis ERP maka bayangkan bahwa di controller Anda, Anda hanya mengatakan "ambilveCashFlow" untuk model Anda dan model Anda memanggil program yang tersimpan dalam database. Program tersimpan ini menangani setiap penggabungan, pemfilteran, pemesanan, dan sebagainya, dan Anda mendapatkan kembali data yang diproses. Di controller Anda, Anda hanya perlu bubur hal-hal bersama.

Jika Anda ragu tentang prosedur tersimpan, periksa ini: mengapa menggunakan prosedur tersimpan?

Sederhananya: pengembang basis data menulis program tersimpan (prosedur dan fungsi) untuk aplikasi Anda untuk menangani M di MVC (atau logika bisnis jika Anda tidak menggunakan mvc).

Adam Arold
sumber
2

Oracle bukan hanya database tetapi lingkungan pemrograman yang lengkap, termasuk formulir dan desainer laporan. Sebagai seorang programmer Oracle, Anda memprogram aplikasi pengguna yang lengkap. Pengkodean basis data yang Anda rujuk akan sering dilakukan oleh Adminstrator Database spesialis (DBA).

Sybase saya pikir adalah satu lagi dengan lingkungan pemrograman yang serupa.

Basis data lain mungkin membatasi diri untuk "hanya" mengizinkan definisi dan pelaksanaan laporan, sedangkan yang lain mungkin tidak menawarkan formulir atau desain laporan / fasilitas pelaksanaan sama sekali.

Marjan Venema
sumber
1
"Oracle bukan hanya database tetapi lingkungan pemrograman yang lengkap ... Database lain mungkin membatasi diri mereka untuk" hanya "memungkinkan definisi dan pelaksanaan ..." Ini saya tidak tahu. Sekarang masuk akal.
Thomas
SQL Server sama. Selain prosedur tersimpan, paket SSIS memungkinkan pemrograman visual, memanggil kode lain yang ada, menulis program vb.net atau c # .net, dan banyak lagi, semuanya dibungkus dengan IDE. Saya belum pernah menggunakan SSR, tapi saya curiga mirip. Ada TON pemrograman, dan seorang programmer basis data harus mengetahui banyak alat dan bahasa serta proses yang berbeda.
thursdaysgeek
2

Saya akan mengatakan pengembang database bertanggung jawab untuk satu atau lebih hal berikut ini

  • Desain, ini termasuk membuat tabel (atau lebih tepatnya mendefinisikan hubungan)
  • Optimasi, mengatur indeks yang tepat, memilih kunci, memilih tipe data yang tepat
  • Fungsinya, menulis fungsi yang berguna untuk digunakan dalam kueri
  • Prosedur, menulis logika aplikasi yang erat dengan lapisan database.
  • Membuat fungsi pemicu untuk merespons acara
  • Memproduksi spesifikasi di atas.

Tergantung pada RDBMS yang dipermasalahkan itu dapat mencakup tugas-tugas seperti

  • Membuat laporan dan formulir
  • Membuat arus untuk impor / ekspor data

Lihatlah daftar tanggung jawab ini

Peter Lindqvist
sumber