Monday, September 21, 2015

Membuat database yang baik dan benar

Ada tahapan bagi seseorang untuk bisa sampai ke tahapan advanced, expert, atau apapun sebutannya untuk seorang yang telah menguasai bidangnya, atau bahkan mengembangkan bidangnya. Namun sayang sekali seseorang yang sudah sampai tingkatan expert sangat jarang sekali mendokumentasikan kemampuan, pengalaman, sekaligus eksperimen yang pernah dilakukan. Jelasnya dokumentasi ini sangat bermanfaat untuk orang-orang setelahnya. Bagi para newbie, dan intermediate. Dimana pengalaman adalah sesuatu yang tidak ternilai harganya.
Apa yang akan saya jelaskan kali ini sebetulnya memang di khususkan untuk para programmer pemula, maupun tingkatan menengah, begitu juga untuk para database engineering pemula maupun tingkatan menengah. Dan apa yang akan saya rincikan di sini merupakan sesuatu yang sudah pernah dibuktikan terlebih dahulu. Bukan sekedar teori yang perlu diformulasikan kembali ketika akan dilakukan pembuktiannya.
Bagi seorang programmer, dan database engineer, merupakan hal yang vital ketika akan melakukan develop aplikasi, terlebih lagi pada fase perencanaan dalam pembuatan database, di mana diperlukan analisa yang betul-betul jitu hingga mendapatkan tingkat efektifitas dalam relasi yang menunjang operasi CRUD, Create Read Update Delete. Memang ketika para pemula mendalami CRUD terbilang mudah untuk dikuasai. Tidak jadi masalah ketika programer membuat aplikasi dengan pengguna yang tidak begitu banyak, belasan, sampai puluhan. Namun masalah akan didapatkan ketika aplikasi yang dirancang itu digunakan oleh ribuan, atau bahkan jutaan orang. Server down karena hang akibat query yang lambat dieksekusi, berantai dari terlalu banyak men-JOIN relasi antar table.
Sehingga dari sini betul-betul seorang programmer maupun database engineer harus betul-betul teliti dan bekerja sebagaimana mestinya.
1. Jangan Terlalu Banyak Membuat Relasi Table
Aplikasi yang kompleks pastinya berdampak kepada relasi database, semakin kompleks aplikasi berdampak pada pembuatan relasi table semakin banyak. Tapi bisa juga membuat aplikasi yang kompleks tanpa membuat relasi table yang banyak. Loh? Bagaimana bisa? Bisa. Di ambil alih oleh bahasa pemrogaman itu sendiri, sebagai contohnya adalah penggunaan serialize() di PHP. Lebih jelasnya silahkan membuka http://php.net/manual/en/function.serialize.php Dengan fungsi ini sang programmer bisa dengan leluasa menyimpan atribut ke dalam array, dan arraynya di simpan ke suatu field di dalam table.
Kalaupun harus membuat banyak relasi antar table, anda harus melakukan nasihat di poin ke 2.
2. Jangan Terlalu Banyak Men-Join Relasi Antar Table
Saya sendiri maksimal dalam men-join relasi antar table adalah 5 relasi. Ini pun sudah terlalu berat sekali jika user yang menggunakan aplikasi ini berjumlah ribuan atau bahkan sampai jutaan. Server terasa beraaaaaat sekali. Disarankan untuk menjoin table kurang dari 5 relasi. Karena biasanya optimasi query pun dilakukan termasuk di antaranya adalah memperbaiki join table yang terlalu banyak dan kurang efisien.
Lalu bagaimana jika sudah terlanjur banyak relasi? Karena sudah terlanjut mau bagaimana lagi, gunakanlah field-field yang sudah di jadikan sebagai key dengan atribut INDEX maupun PRIMAY dalam men-JOIN table. Mengapa karena jika tidak di lakukan maka response database server akan terasa sangat lambat sekali.
Sebelum terlanjur maka alangkah baiknya untuk memperhatikan “anjuran untuk tidak terlalu banyak men-join relasi antar table” yang jelasnya ini sangat berhubungan dengan poin pertama. Sehingga planning dalam pembuatan database perlu secara detil diperhatikan.
3. Gunakanlah InnoDB jika… Gunakanlah MyIsam jika…
MyIsam merupakan jenis database engine yang cocok untuk pemula, karena tidak terlalu banyak memikirkan integritas data. Maksudnya bagaimana? Apakah yang tidak ada kontroversi hati? Sederhananya MyIsam itu lebih dulu lahir, ketimbang InnoDB. MyIsam dibuat untuk menunjang database yang hanya digunakan untuk View / Read saja dengan fungsi select pada sql query. Dan tidak terlalu banyak Insert sekaligus Update data, namun lebih banyak di Read saja.
Sedangkan InnoDB betul-betul memperhatikan integritas data, dan innodb ini cocok digunakan dalam database yang sangat banyak sekali menggunakan operasi Insert, dan Update. Namun karena kelebihannya tersebut dibutuhkan ketelitian yang lebih dalam pembuatan database menggunakan InnoDB engine.
Begitulah sedikit nasihat yang mudah-mudahan bermanfaat bagi Anda yang akan memulai membuat aplikasi dengan banyak pengguna. Sehingga nantinya tidak perlu menyalahkan Memory / Resource Server manakala terasa lambat. Tapi sejujurnya adalah ketika perencanaan database itulah penggunaan Resource Server bisa di efisiensikan.