Siapa yang mendesain basis data dalam pengembangan web? [Tutup]

10

Dalam konteks pengembangan web, siapa yang mendesain basis data? Meskipun banyak informasi yang mengaitkan web dev back-end dengan pemrosesan sisi server, pemodelan data, dan sejenisnya, aspek desain basis data dari persamaan ini tampaknya tidak ada secara misterius.

Saya tidak berbicara tentang siapa yang mengatur basis data fisik, saya merujuk pada siapa yang mendesain model logis dari basis data, melakukan wawancara dengan pengguna-cerita untuk mendapatkan informasi tentang bidang apa yang dibutuhkan, apa spesifikasi bidang itu, dan lain-lain. .

Aku sudah menyadari bahwa ( PROPER desain) dari database adalah bukan tugas kecil (saya membaca ini 672 pager) dan dapat dengan mudah seluruh profesi. Namun, mencari naik dan turun internet telah menyebabkan hasil yang sedikit mengejutkan bagi siapa yang diharapkan untuk menangani tugas ini dalam konteks web dev.

the_endian
sumber
2
Ini sangat tergantung pada organisasi dan departemen mana dan struktur yang digunakannya - dalam pengalaman saya biasanya pengembang back-end / arsitek solusi dan jika ada departemen basis data, sehubungan dengan DBA atau pengembang basis data tertentu.
Allan S. Hansen
what those field specifications are, jika proyek Anda memiliki spec, Anda harus dapat mengidentifikasi model Anda.
Walfrat
1
Saya akan mengatakan, hari ini, kerangka apa pun yang Anda gunakan menentukan desain database Anda.
Pieter B

Jawaban:

17

Pertanyaan Anda tidak hanya terkait dengan aplikasi web, tetapi untuk semua jenis aplikasi yang menggunakan backend basis data.

Dalam pengalaman saya

  • Desain basis data adalah karya gabungan dari pengembang dan DBA.
  • Pengembang membuat desain basis data yang kasar, atau seringkali sangat bagus. Itu semua tergantung pada pengalaman para programmer.
  • Seringkali pengembang membuat tabel dalam database pengembangan mereka dan model konseptual direkayasa balik darinya.
  • Seringkali diagram ER konseptual didiskusikan dengan anggota tim lain, seringkali klien. Pada tahap ini kesalahan konseptual yang jelas terdeteksi dan mudah-mudahan menemukan dan memperbaiki.
  • Pekerjaan DBA adalah untuk meninjau desain seperti itu, dan menyempurnakannya untuk mendeteksi pelanggaran bentuk normal.
  • DBA juga memberlakukan konvensi penamaan tabel dan kolom
  • DBA juga membayangkan kemungkinan hambatan kinerja dan mencoba memahami bagaimana data akan ditanyakan untuk membuat indeks yang sesuai nanti.
  • Revisi / pemeriksaan / perbaikan siklus antara pengembang / desainer aplikasi dan DBA melewati beberapa iterasi sampai model cukup matang untuk menghasilkan model fisik.
  • Biasanya alat desain basis data digunakan di semua basis data yang sangat kecil untuk membantu proses ini.

Intinya:

  • Pengembang tahu bisnis dan domain masalah lebih baik daripada DBA, sehingga mereka sangat melakukan sebagian besar desain awal dan, tergantung pada pengalaman pengembang, desain seperti itu bisa sangat dekat dengan desain akhir.
  • Peran DBA sebagian besar untuk memastikan NF, konvensi penamaan, pertimbangan kinerja, untuk memperbaiki kesalahan yang jelas dan akhirnya menghasilkan model fisik, kemudian skrip basis data khusus, dan menjalankannya untuk membuat basis data.
  • Saya akan mengatakan ini adalah 80% pekerjaan pengembang dan analisis kebutuhan dan 20% pekerjaan DBA.

MEMPERBARUI:

Ada 3 jenis DBA:

  • pengembangan DBA yang mengetahui pemodelan data, ahli SQL dan dapat menulis prosedur tersimpan, mereka biasanya adalah mantan pengembang;
  • produksi DBA yang berspesialisasi dalam pemasangan, penyempurnaan kinerja, pencadangan dan pemulihan, dll.,
  • dan jack-of-all-trade DBA yang telah bekerja melakukan semua hal dan dengan demikian dapat melakukan yang paling (sangat sedikit).

Kebanyakan DBA adalah produksi DBA, yang bagus karena mereka adalah orang-orang yang memulihkan database yang hilang dari array disk yang gagal di larut malam. Tetapi mereka tidak berpartisipasi aktif dalam proses desain.

Tulains Córdova
sumber
2
Ini mengingat Anda memiliki DBA yang dapat melakukan itu, di mana saya dan saya sebelumnya, tidak ada yang membantu untuk itu.
Walfrat
2
@ Walfrat Kamu benar. Ada 3 jenis DBA: DBA pengembangan yang sekarang pemodelan data, adalah ahli SQL dan dapat menulis prosedur yang tersimpan; produksi DBA yang berspesialisasi dalam pemasangan, penyempurnaan kinerja, pencadangan dan pemulihan, dll. dan jack-of-all-trade DBA yang telah berhasil melakukan semua hal dan yang paling bisa melakukan hal itu. Sayangnya, sebagian besar DBA hanya produksi DBA.
Tulains Córdova
9
Anda lupa "kami tidak mampu membeli DBA" di mana toko itu sangat kecil sehingga beberapa pengembang mengelola database di samping. Itu juga sangat umum.
Sebastian Redl
1
Apa artinya "NF"?
BЈовић
1
Formulir Normal, lihat juga wikipedia .
Friek
4

Tergantung apa yang digunakan untuk database.

Dalam banyak aplikasi (aplikasi web atau tidak), basis data terkait erat dengan aplikasi itu karena berfungsi sebagai toko yang gigih untuk itu. Kemudian database secara konseptual merupakan bagian dari aplikasi sehingga dirancang bersama (dan Anda menganggap bahwa tidak ada program lain yang secara signifikan akan mengakses atau memperbarui database itu). BTW, kegigihan dapat dicapai dengan cara lain selain dari basis data, mis. File teks biasa, file biner (file yang diindeks khusus a la GDBM ), repositori git (atau VCS lainnya), direktori atau file pohon, partisi disk mentah, perangkat keras khusus (mis. flash), sistem file jarak jauh, pos pemeriksaanteknik. Untuk database yang dirancang untuk dan dengan satu aplikasi, Anda harus memperhatikan pengambilan umum & pola pembaruan dan merancang skema database (dan pengindeksan!) Dengan mereka dalam pikiran.

Dalam beberapa situasi, basis data itu sendiri merupakan aset utama dan independen, dan dirancang apriori untuk digunakan oleh beberapa aplikasi yang berbeda (dan bahkan yang akan datang). Maka itu harus dirancang secara independen (dan jauh lebih hati-hati).

Secara khusus beberapa aplikasi web hanyalah antarmuka web ke database yang ada.

Dalam banyak kasus (anggap beberapa wiki sebagai contoh), data lebih penting dan lebih berharga daripada aplikasi yang menggunakannya. Anda mungkin peduli bagaimana membuatnya menjadi bukti di masa depan dan dapat mengembangkannya dengan mudah (misalnya dengan menggunakan atau mendefinisikan format teks & serbaguna - yang lebih baik terstandarisasi dan terdokumentasi) untuk membuat cadangan dan memulihkannya).

Saya telah menyadari bahwa desain (PROPER) dari database bukanlah tugas kecil ...

Baca juga tentang NoSQL , database berorientasi dokumen , kunci-nilai database , manajemen pengetahuan , representasi pengetahuan dan penalaran , ontologi , sistem pakar , aturan bisnis pendekatan , ERP , CMS . Mungkin pertimbangkan untuk menggunakan REDIS , MongoDB , dll.

Basile Starynkevitch
sumber
Tidak yakin. Saya tidak melakukannya. Terima kasih atas beberapa tautan terakhir!
the_endian
IMHO, tautan di paragraf pertama juga layak dibaca.
Basile Starynkevitch
Ya, saya tidak yakin mengapa tetapi tampaknya hal ini tidak "tertutup" dalam kursus pengembang sebanyak mungkin. Sampai di titik di mana saya yakin ada beberapa peretasan database serius yang terjadi di sana di tanah web dev. Mereka mengajari Anda cara menggunakan DBMS, tetapi tidak sebanyak yang kami bicarakan di sini.
the_endian
@TeeSee Saya dapat meyakinkan Anda, itu bukan hanya tanah web dev di mana ada pekerjaan hack serius terjadi dengan database. Tapi ya, ada banyak hal yang terjadi, umumnya untuk alasan bisnis, seperti menjaga biaya awal (melupakan pemeliharaan dan utang teknis)
gabe3886