Bagaimana menangani basis data besar yang tidak berdokumen

10

Baru-baru ini saya dipekerjakan sebagai satu-satunya IT Guy di Perusahaan X tertentu dan saya ditugaskan untuk memperbaiki aplikasi mereka, dan menurut saya, cara terbaik untuk memulai adalah dengan memahami database.

Database mereka saat ini adalah database MySQL dengan 186 tabel (perlu diketahui bahwa beberapa tabel kosong karena hanya Tuhan yang tahu mengapa). Dan aplikasi berkomunikasi dengan database melalui antarmuka basis data MS Access. (Saya bertanya pada diri sendiri mengapa pengembang juga melakukannya)

Pertanyaannya adalah, Bagaimana cara saya mulai menangani basis data besar tanpa dokumen ini? Ya, itu tidak berdokumen karena pengembang aplikasi tidak mau memberi saya ERD atau kamus data atau informasi apa pun tentang database untuk memudahkan hidup saya. Bagaimana Anda menyarankan untuk mengambil upaya berbahaya ini untuk memahami setiap sudut dan celah dari database yang agak besar?

Pertanyaan Terkait: Bagaimana cara menyelam ke dalam database yang jelek?

maru
sumber
5
Dimulai dengan meja kosong, perlahan-lahan jatuhkan satu demi satu meja sampai pengembang mau bekerja sama ...
René Nyffenegger
Pikirkan sebelum Anda berkomentar. OP secara eksplisit menyatakan bahwa dia adalah pria SAJA . Jadi siapa pengembang itu? Kontraktor eksternal mungkin, yang dibayar tidak lebih dari waktu yang dibutuhkan untuk membangunnya? Mengapa mereka mau menggunakan waktu mereka untuk dukungan tambahan, perusahaan X mana yang mungkin tidak mau membayar untuk memulai? Atau mungkin mereka mantan karyawan yang di-PHK karena terlalu mahal? Mengapa mereka menggunakan waktu mereka untuk membantu perusahaan X dengan masalahnya? Dan siapa yang akan terluka karena menjatuhkan meja?
Erwin Smout
6
@ErwinSmout Saya percaya komentar Rene dimaksudkan untuk ditafsirkan sebagai jibe yang ringan hati. Begitulah cara saya melihatnya.
Mark Storey-Smith

Jawaban:

11

Jawaban tertaut menangani masalah bottom-up, database terlebih dahulu. Karena tanggung jawab Anda mencakup aplikasi dan basis data, saya akan cenderung menyerang top-down ini mulai dari aplikasi.

Fokuskan perhatian Anda pada pemahaman fitur-fitur aplikasi yang paling sering digunakan melalui konsultasi dengan basis pengguna. Lacak interaksi basis data dari fitur-fitur tersebut melalui profiling / alat logging sehingga Anda dapat mengidentifikasi tabel dan prosedur utama.

Dengan cara ini, upaya awal Anda dibatasi pada "hal-hal yang penting", daripada membuang waktu untuk mendokumentasikan tabel dan kueri yang mungkin jarang atau tidak pernah digunakan. Fokusnya juga harus membawa Prinsip Pareto pada upaya memperbaiki bug Anda ( demikian kata Microsoft pula ).

Mark Storey-Smith
sumber
Terima kasih atas jawabannya. Jujur saya tidak memikirkan itu dan saya juga tidak tahu bahwa saya bisa mencatat permintaan yang sedang dijalankan di server. Terima kasih banyak!
maru
1

Saya mungkin akan mencoba mendapatkan MySQL Workbench dan kemudian membuat model EER dari database. Ini berarti Anda dapat melihat tautan apa ke apa dan mencari tahu apa yang dipikirkan pengembang. Semua tergantung pada aplikasi juga untuk bagaimana terstruktur.

Bradley Weston
sumber
Saya mencoba menempuh rute itu, tetapi agak menjengkelkan di tengah jalan karena ada 186 meja dan meja kerja baru saja menampar semua meja di tengah kanvas. dan real estat layar kecil tidak membantu hal menjadi lebih kecil. Tapi dari kelihatannya, tidak ada jalan keluar melakukan hal yang sulit
maru
Jangan repot-repot mencoba melakukan ini dengan Workbench karena penuh dengan cacat (bug) - Anda akan menghabiskan lebih banyak waktu untuk mengatasinya daripada Anda akan mencapai sesuatu yang berguna. Sebagai gantinya, pertimbangkan untuk menggunakan Microsoft Visio untuk merekayasa balik database yang ada menjadi model seperti yang dijelaskan dalam artikel singkat ini: tautan .
KXNV-89.1FM
Tautan yang lebih apropos: tautan - "merekayasa balik basis data yang ada menjadi model basis data" (dengan Microsoft Visio).
KXNV-89.1FM
1

Saya menemukan DBLint berguna untuk identifikasi masalah dengan database. Ini memiliki sifat-sifat baik berikut:

  1. Ini peringkat temuan berdasarkan kepentingan (subjektif) mereka, sehingga Anda tidak tenggelam dalam banjir peringatan kecil.
  2. Temuan penting sering kali tidak terbantahkan dan dapat ditindaklanjuti.
  3. Skor skor database dengan satu angka, sehingga Anda dapat mengukur kemajuan Anda dan membandingkan kualitas dari berbagai database. Saya merasa itu sangat memotivasi.
  4. Sangat mudah untuk mengkonfigurasi DBLint untuk hanya menggunakan pemeriksaan berbasis skema. Jadi, cepat untuk mencobanya bahkan pada basis data besar. Satu-satunya keluhan yang mungkin saya miliki adalah bahwa saya harus menjalankan Windows untuk menjalankan DBLint.

Untuk identifikasi cepat hotspot pada database MySQL, Neor Profile SQL adalah proksi segel yang berada di antara aplikasi dan database. Keindahannya adalah bahwa ia cepat untuk dipasang.

Untuk penemuan kunci primer dan asing faktual dalam database, yang, bagaimanapun, tidak didefinisikan dalam database, Anda dapat menggunakan Linkifier . Untuk ERD plotting, estimasi dapat diekspor ke yEd , yang memiliki banyak algoritma tata letak untuk penentuan posisi tabel. BPMN adalah favorit saya untuk ERD.

pengguna824276
sumber
0

Ada alat oracle (My SQl workbench) untuk mengakses database Sql saya, itu adalah antarmuka yang bisa memberi Anda ERD database.

Adnan
sumber
ya, saya terbiasa dengan meja kerja tetapi fungsi reverse engineer hanya membuang semua tabel di tengah kanvas ... 186 tabel menjengkelkan untuk disortir. tahu jalan keluar dari itu?
maru