RonaldWidha

percaya sama occam razor
See also: Other Geeks@INDC

Cara Memakai Visual Studio Database Edition GDR dalam situasi beneran

Di post sebelumnya: Visual Studio Database Edition GDR untuk bekerja dengan database dalam development team, aku menjelaskan konsep database development menggunakan Visual Stuio Database Edition GDR.

Di post ini aku ingin menjelaskan bagaimana cara memakai Visual Studio Database Edition GDR ini dalam kerjaan sehari-hari, bukan sekedar demo doank.

Setup – biasanya dilakukan oleh si Team Lead (atau senior dev)

Kembali seperti di post aku sebelumnya (kesempatan terakhir untuk ngeklik dan ngebaca artikelnya sebelum makin ga nyambung), aku menuntut untuk setiap developer bisa memiliki instalasi databasenya masing2 (isolated database environment).

Dalam cara kerja ini, kita harus memulai database project di Visual Studio Database Edition GDR seperti berikut:

  1. Create database baru untuk aplikasi di development box kamu (di mana visual studio berjalan). Atau kalo ini bukan green field project, make sure kamu punya database instancenya di development box lanjut langsung ke step 2. Kita akan nge-refer database instance ini sebagai development database mulai dari sekarang.
  2. Buka Visual Studio Database Edition GDR, klik new Project. Pilih Database Projects > SQL Server 200x (sesuai dengan database engine kamu) dan pilih SQL Server 200x Wizard.

    Wizard ini bakal nanyain kamu beberapa pertanyaan penting untuk memulai seperti: import existing schema dengan opsi-opsi tertentu, collation settings, deployment settings dsb.

    Kalo kamu nge-generate development database dari kode (dengan code smith atau subsonic misalnya), atau kalo kamu sudah punya aplikasi yang menggunakan database tersebut, rekomendasi aku adalah untuk add database project ini ke dalam solution aplikasi kamu. Tujuannya adalah nge-ikat versioning antara kode dengan databasenya.
  3. Di langkah kedua kamu akan ditanyakan “what type of project would you like to create?”. Karena aku ingin isolated database environment mari kita pilih “a database project to manage changes to a user-defined database
  4. Di langkah keempat, pilih import existing schema dan pilih database aplikasi kamu yang berjalan di dev box.
  5. Di langkah terakhir wizard, kamu set up target connection kamu ke database instance yang sama. Tick “always re-create database’”. Dengan pilihan itu kita bakal memastikan development database selalu sinkron dengan database project kita.

    Langkah yang terpenting di sini adalah untuk me-rename nama server kamu dari server instance name ke (local). Misalnya: karena aku pake SQL Express maka server instance aku (local)\SQLExpress. Ini dikarenakan connection string target database disimpan di project file (.dbproj) yang berarti memaksa seluruh team untuk memiliki connection strings yang sama. Dengan menggunakan (local) maka seluruh team bisa memakai 1 connection strings saja.
  6. Sekarang kita sudah punya database project di solution kita.
  7. Buka Solution Explorer > Schema Comparisons > Add new Schema Comparison.
    Namakan: FromDevToModel.scmp
    Set Source Schema ke Development Database (jangan lupa set nama server dengan nama local supaya bisa digunakan oleh semua team member yang lain).
    Set Target Schema ke Database Project

    Liat options comparenya, dan pilih object types yang kamu berharap para dev bakal nge-update seperti tables, functions, stored procs dsb. Ibaratnya ini ignore list di Subversion atau TFS.

    Ini akan dipakai untuk nge-sync perubahan yang developers lakukan ketika development dari Development database ke dalam Database Project.
  8. Bikin 1 Schema comparison lagi, Solution Explorer > Schema Comparisons > Add new Schema Comparison
    Namakan: FromModelToDev.scmp
    Set Source Schema ke Database Project
  9. Set Target Schema ke Development Database.

    Ini akan dipakai untuk nge-sync perubahan yang dilakukan oleh developer lain dari source control ke dalam Development Database.

  10. add Development database kita ke Server explorer. Ini akan memudahkan kita untuk menciptakan table tanpa menulis 1 line T-SQL pun.

Nah, setelah melewati langkah-langkah tadi kita sekarang sudah memiliki solution yang berisi kode aplikasi kita, begitu jg database project yang mengontrol development database. Kita cukup melakukan ini sekali dalam 1 project.

Untuk para programmer yang lain

Tugas berat sudah diemban oleh si Team Lead (atau Senior Dev). Langkah terpenting untuk para team members sekarang adalah untuk memiliki sql server instance dengan nama yang sama supaya seluruh team bisa memakai project file yang sama.

Sekarang mari kita ngebahas gimana siklik developmentnya

Development

Step 1: Database Development pake Server explorer

Aku bukan a hardcore DBA. Jadi urusan alter-mengalter database aku biasanya mengandalkan tool seperti Visual Studio Server Exploerer atau SQL Management Studio Express untuk membantu aku. Dengan Visual Studio Database Edition GDR kita bisa tetap melakukan hal yang sama.

Bikin table, relationship, primary key, foreign key, stored procedure baru atau bahkan lakukan refactoring untuk menyelesaikan tugas kamu.

Step 2: Masukkan perubahan yang baru kamu bikin ke dalam Database Project kita

Setelah kita sudah menyelesaikan perubahan database kita, gunakan Compare Schema untuk memasukkan schema yang baru ke dalam database project.

Gunakan FromDevToModel schema comparison. Dan kita bisa akan melihat update yang baru saja kita lakukan seperti di bawah ini.

image

image

Sepertinya aku baru aja nambahin Schema, dan Table baru.

Klik Writes Updates dan lanjut step 3.

Step 3: persiapan Check in

Seperti team member yang baik, kita ga mau menggangu kerjaan team member yang lain dengan nge-break Continuous Integration build. Jadi setelah membuat perubahan kamu, get latest source code termasuk database project dari version control. Merge conflict yang kamu temuin, lalu lakukan Compare Schema database project yang baru dengan Development Database kamu FromModelToDev.scmp.

Kalo kamu nemuin perbedaan, klik Write Updates untuk nge-update Development Database kamu sesuai dengan Database Project.

Ini jg kesempatan untuk ngejalanin unit test dan Database unit test kita untuk memastikan ga ada unit test yang rusak.

Step 4: check in

Akhirnya kita bisa check in, dan berharap ga ada yang teriak2 “Woyy database-nya rusakk nihhhh gara-gara check in elooo!!”.

Di post berikut mungkin aku akan membahas soal deployment ke production, database unit test, ngegenerate test data dan juga gimana cara nambahin default lookup value ke table baru kita.

Semoga berguna.

Share this post: | | | |

Comments

No Comments