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.
sumber
Jawaban:
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.
sumber
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.
sumber
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.
sumber
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.
sumber
Saya melihat dua pertanyaan di sini:
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.
sumber