Apakah tugas programmer untuk mendesain database?

16

Saya telah menjadi seorang programmer selama enam tahun terakhir. Sepanjang karir saya, saya telah bekerja pada banyak aplikasi web.

Sebagian besar waktu, ketika sebuah database dibutuhkan, itu diberikan kepada kami (programmer) atau kami memiliki beberapa database lama untuk dikerjakan. Jika tidak, kami harus membuat dan mendesain database sendiri yang tidak terlalu sulit.

Tetapi apakah kita, sebagai programmer, seharusnya membuat seluruh database dari awal ketika kita harus membangun aplikasi baru di mana data sangat penting dan memiliki persyaratan berantakan dengan model data yang kompleks?

Bukankah itu demi kepentingan terbaik aplikasi dan perusahaan untuk menyelesaikannya oleh seorang ahli?

Saya tidak mencoba untuk melarikan diri dari mendesain database, tetapi itu adalah hal yang sangat penting untuk diperbaiki.

ashishjmeshram
sumber
2
Jawabannya iya. Apakah jawaban yang benar di sini akan membantu manajemen Anda berubah pikiran? Saya kira tidak. Dan di sisi lain, itu akan menjadi pengalaman yang sangat bagus untuk dimiliki. Mengapa tidak mencobanya untuk merancang skema data?
eminemence
9
"Pakar DB" dan "programmer" tidak saling eksklusif. Anda akan membutuhkan seorang ahli untuk merancang basis data. Pakar itu bisa jadi programmer.
Lord Tydus
10
Apakah tugas saya sebagai prajurit untuk mengetahui cara menunggang kuda? Ini mungkin atau mungkin bukan bagian dari pelatihan, tetapi jika karena alasan tertentu kelangsungan hidup Anda bergantung pada kuda, maka jawabannya sudah jelas. Jika deskripsi pekerjaan Anda berubah, mengejutkan, maka mungkin cari di tempat lain. Saya pribadi akan mengambil keterampilan db ini hanya karena saya tidak suka bergantung pada orang lain.
Ayub
@ Bob tidak bisa mengatakannya dengan lebih baik :)
Songo

Jawaban:

32

Pertama-tama, itu tugas Anda jika manajer proyek memberi tahu Anda. Perusahaan kecil seringkali tidak memiliki pakar DB penuh waktu. Tidak ada (dan seharusnya tidak) perbedaan yang jelas antara pengembang dan pakar DB - pengembang yang baik akan memiliki pengetahuan yang cukup tentang DB, dan setiap DBA yang baik akan tahu cara membuat kode, setidaknya dalam bahasa DB untuk prosedur yang tersimpan .

Meskipun desain DB adalah bagian yang cukup sentral dari suatu aplikasi, tidak penting untuk "mendapatkan yang benar" daripada bagian-bagian pusat lainnya yang akan menjadi sandaran banyak kode lainnya.

Dan seperti halnya kode, gagasan bahwa Anda meminta beberapa ahli super untuk duduk dan berpikir keras selama seminggu dan kemudian menuliskan desain yang sempurna yang tidak perlu diubah adalah sebuah ilusi. Desain DB dapat dan akan berubah ketika aplikasi sedang dikembangkan.

Oleh karena itu sebenarnya bermanfaat untuk memiliki DB yang dirancang oleh seorang programmer (yang mengerti DB dengan baik), karena Anda memiliki seseorang yang mengenal kedua belah pihak. Itu tentu lebih baik daripada dilakukan oleh seseorang yang hanya memahami DB dan tidak ada hubungannya dengan pekerjaan pengembangan lainnya.

Michael Borgwardt
sumber
Bisakah Anda jelaskan perbedaan antara DBA dan pengembang Database ketika datang ke desain database?
Songo
@Songo: IMO seharusnya tidak ada perbedaan.
Michael Borgwardt
1
Betulkah? Saya selalu berpikir DBA lebih tentang menjalankan database dan menala sementara pengembang database lebih peduli tentang pemodelan dan desain database!
Songo
3
Administrator basis data dan pengembang basis data adalah dua hal yang berbeda. Perusahaan kecil dan menengah biasanya tidak tahu bedanya. Ketika bekerja dalam sistem perusahaan besar, Anda mungkin memiliki dba, pengembang intelijen bisnis (layanan analisis, gudang data) dan pengembang basis data. Bagi kami itu adalah pekerjaan yang sangat berbeda.
CodeART
1
@CodeWorks: Mereka memang berbeda, tetapi IMO itu adalah antipattern organisasi untuk menetapkan spesialisasi berlebihan seperti itu, karena itu membuat kolaborasi antara orang-orang yang hanya mengetahui spesialisasi mereka sangat bermasalah.
Michael Borgwardt
4

Sudah biasa bagi programmer untuk membuat database. Sangat umum. Sayangnya banyak programmer tidak memiliki pengalaman dengan DB. Mereka tidak mengerti bagaimana melaporkan data besar, konsep data mart, skema bintang, dll. Beberapa bahkan tidak mengerti dasar-dasar normalisasi.

Jika seseorang memiliki keterampilan untuk melakukan segalanya pada tingkat ahli, itu akan menghasilkan produk yang sangat bagus. Pasukan satu orang dapat melakukan apa yang dapat dilakukan tim 10 orang dalam sepersekian waktu dengan kualitas 1000 kali lipat. Tidak berlebihan.

Adalah kepentingan terbaik bagi programmer untuk melakukannya (lebih sedikit orang), dengan asumsi programmer tahu apa yang dia lakukan. Tentu saja ada ribuan kegagalan untuk ditunjukkan.

Tuan Tydus
sumber
Saya menemukan ini banyak terjadi di semua tim kecil saya. Para pengembang dengan sedikit pengalaman DB diharapkan untuk merancang (tidak terlalu tangguh di permukaan) dan menyesuaikan (jauh lebih sulit) database di bawah kode mereka. Selalu berharap saya bisa memiliki DBA yang saya miliki.
Rig
1
"Tidak berlebihan." Yaitu, kecuali Anda dapat memenuhi syarat klaim ini entah bagaimana.
Burhan Ali
4

Ini pertanyaan yang menarik - ada argumen kuat bahwa sebagian besar pengembang yang baik harus memahami cara menyusun basis data relasional dengan benar, yaitu mengatakan bahwa mereka harus mampu menghasilkan skema yang dinormalisasi dan - berdasarkan pengalaman dan pola umum - agar masuk akal keputusan tentang bagaimana data harus disusun terstruktur (bagi saya itu sebagian besar terbukti sendiri, tetapi saya tahu bahwa tidak semua orang melihatnya seperti itu).

Lebih lanjut, jika Anda melihat Entity Framework Code-first yang menyarankan bahwa pemikiran yang sama dengan membangun model data tingkat rendah akan menghasilkan skema yang masuk akal - atau setidaknya memberi petunjuk.

Jadi tidak, saya tidak terlalu berpikir bahwa Anda memerlukan pakar basis data untuk merancang skema basis data - setidaknya tidak untuk database ukuran kecil dan menengah (yang merupakan hal-hal yang telah saya kerjakan).

Masalahnya adalah bahwa merancang skema yang baik (atau setidaknya memadai) bukanlah keseluruhan cerita - terutama tidak jika database harus diukur. Bagi saya, "nilai tambah" yang dibawa oleh DBA adalah mendapatkan hal-hal selain dari skema dasar yang tepat - indeks, mengonfigurasi penyimpanan, memelihara basis data (menjaga ukuran file dalam pemeriksaan, membangun kembali indeks, dll), menjadi lebih pintar dengan pengguna dan peran dan sebagainya dan sebagainya.

Seorang programmer yang baik harus membawa beragam portofolio keterampilan - harus lebih dari sekadar kode [masukkan bahasa pilihan] dan saya akan menyertakan pemahaman tentang basis data dalam portofolio itu.

Murph
sumber
4

Saya pikir kemampuan untuk merancang basis data relasional yang masuk akal pada dasarnya merupakan kebutuhan bagi programmer non-junior.

Dengan itu, terutama untuk aplikasi besar, sangat penting untuk mendapatkan database "benar" pertama kali (skema, pengindeksan, dll). Jika perusahaan memiliki akses ke DBA terampil, tugas itu harus jatuh ke piring mereka; secara umum mereka akan lebih berkualitas. Tinjauan potensial / diskusi harus dilakukan dengan pengembang utama yang akan mengakses dan bekerja dengan database di sisi klien sehingga tidak ada kejutan. Jika tidak ada DBA, programmer merancang basis data.

Bobby Everyteen
sumber
1
Administrator basis data belum tentu analis data. Dibutuhkan keahlian yang berbeda untuk menyetel database dan menormalkan data relasional, masing-masing.
Gilbert Le Blanc
1

Saya melihat dua pertanyaan di sini:

  • Haruskah pengembang basis data memodelkan logika bisnis?
  • Haruskah saya tahu cara mempertahankan data ke database?

Logika bisnis

  • Logika bisnis tidak hidup dalam database. Ini adalah model konseptual yang harus independen dari lapisan lain dalam sistem Anda.

  • Anda selalu dapat mengganti satu database dengan yang lain, atau Anda bahkan mungkin memutuskan untuk menggunakan solusi NoSQL untuk mengatasi masalah kinerja potensial.

  • Pengembang basis data dapat terlibat selama proses pemodelan, tetapi biasanya ini dilakukan oleh orang-orang dengan pemahaman lengkap tentang domain masalah. Di organisasi kami ini dilakukan oleh pengembang sisi server.

  • Banyak yang berpikir bahwa basis data adalah dasar dari aplikasi Anda. Buat fondasi yang buruk, dan sistem akan jatuh. Saya tidak setuju dengan ini. Saya melihat database sebagai media penyimpanan yang selalu bisa diganti.

Data yang Ada

  • Anda harus tahu cara mempertahankan data ke media penyimpanan yang berbeda, termasuk solusi SQL dan NoSQL.

  • Tingkat keahlian yang dibutuhkan akan bervariasi dengan ukuran sistem yang sedang Anda kerjakan.

  • Perusahaan kecil akan mengharapkan Anda untuk memiliki pengetahuan itu, ketika perusahaan besar biasanya akan mempekerjakan para ahli untuk mengatasi kinerja, skalabilitas, dan persyaratan terkait keamanan.

Untuk meringkas:

  • Model domain adalah fondasi sistem Anda, bukan basis data.

  • Jika Anda bekerja untuk perusahaan kecil di proyek yang relatif kecil, maka Anda mungkin harus mendesain database sendiri.

  • Jika Anda bekerja untuk perusahaan besar di sistem perusahaan, maka mungkin lebih masuk akal untuk meneruskan pekerjaan ke pakar domain.

CodeART
sumber