Showing posts with label Information Technology. Show all posts
Showing posts with label Information Technology. Show all posts

Wednesday, February 24, 2010

Data Komposit Array

Terminologi
Array merupakan tipe data komposit yang dapat digunakan untuk menyimpan lebih dari satu nilai homogen. Homogenitas nilai yang disimpan dibatasi oleh tipe data elemen-elemennya. Hubungan antar elemen dalam array bersifat linier, artinya setiap elemen hanya berelasi satu adn hanya satu dengan elemen lainnya, baik predecessor maupun successor, kecuali untuk elemen pertama dan terakhir.

Penempatan array di memory secara fisikal serupa dengan logikalnya, sehingga dengan suatu mekanisme mapping function dapat diketahui lokasi setiap lemen-elemennya.

Indeks
Setiap elemen array memiliki indek unik yang dapat digunakan untuk akses nilainya. Pengaksesan dapat dilakukan secara random(acak).Jumlah indek menunjukkan besarnya dimensi array. Secara konseptual, array dapat memiliki banyak dimensi, akan tetapi dengan pertimbangan waktu akses pada ranah praktisnya hanya dipakai pada batas tertentu.

Operasi
Array memiliki operasi dasar anatar lain Create, Read/Retrieve, Update/Store.
Create digunakan untuk menciptakan array baru yang masih kosong. Dalam kondisi ini, jika dilakukan pengecekan jumlah elemen akan dihasilkan nilai kosong(Empty).
Read digunakan untuk membaca elemen array pada indek tertentu. Operasi ini akan berhasil jika array tidak kosong. Sebaliknya, jika tidak kosong maka operasi read akan menghasilkan satu nilai(elemen) array.
Update digunakan untuk mengubah nilai array. Opeasi inipun akan berhasil jika array tidak kosong.

 Array Mapping Function (AMF)
AMF digunakan untuk memetakan nilai indek tertentu ke alamat (address) dari suatu elemen/komponen.
Parameter yang digunakan pada AMF meliputi :
  • Base Address (b) : alamat(byte) pertama daru array yang di-assign pada saat binding time. Binding time adalah waktu dimana array dialokasikan pada memory, bisa saat compile maupun execute.
  • Component Length(L) : panjangnya memory yang diperlkan untuk menyipan setiap komponen array. Untuk setiap bahasa pemrograman memiliki kapasitas yang berbeda untuk setiap tipe datanya. Contoh tipe data integer, pada Turbo PAscal 7.0 dan Turbo C 2.0 diperlukan 2 byta, sedangkan pada Visual C++ 5.0 diperlukan 4 byta.
  • Lower Bond (Lk) & Upper Bond (Uk) : Lk adalah nilai indek terkecil, sedangkan Uk adalah nilai indek terbesar. Contoh pada Turbo C 2.0 didefinisikan int S[10]; Maka nilai Lk=0, dan Uk=9.
  • Dimension (d) : besarnya dimensi dari suatu array. Contoh :
    • Array 1 dimensi : int S[10]; Besarnya d adalah 1.
    • Array 2 dimensi : int S[10][5]; Besarnya d adalah 2.
Rumus yang digunakan pada AMF :
         Lokasi komponen addr(S[i1][i2]...[id] = c0 + c1 x i1 + c2 x i2 + ... + cd x id, dimana :
         cd = L

         ct-1 = (ut - lt + 1) x ct dan 1 < t <= d
         c0 = b - (c1 x l1) - ... (cd x ld)

         Perhitungan besarnya memory (M) yang diperlukan : L x (u1 - l1 +1) x ... x (ud - ld + 1)


AMF untuk Array Khusus
  • Array segi tiga (Triangular Array)
    • Lower Triangular Array : array dua dimensi berbentuk bujur sangkar (u1=u2), dimana semua komponen di atas diagonal berisi 0.
    • Upper Triangular Array : array dua dimensi berbentuk bujur sangkar (u1=u2), dimana semua komponen di bawah diagonal berisi 0.
      Memerlukan lebih sedikit memory karena anga 0 tidak perlu disimpan.
           Rumus AMF :
                    addr(S[i,j] = c0 + c1 x (i x (i - 1) + c2 x j, dimana c0=b, c1=L/2, c2=L
                    Jumlah elemen = (u x (u + 1))/2
                    Jumlah memory(M) = L x jumlah elemen
  • Array Jarang (Sparse Array)
    Adalah array yang kebanyakan komponennya mempunyai satu nilai yang sama, misalkan 0. Hanya sebagian kecil yang nil;ainya tidak sama dengan 0.
Passing Parameter pada Array
Contoh potongan program array:


char LeftMost(char S[])
{ return(S[0]); };

char RightMost(char S[])
{ return(S[Len(S)-1]); };

void main()
{ char MyString[MaxLen);
…

printf(“Leftmost elemen :%c”,LeftMost(MyString));
printf(“Rightmost elemen :%c”,RightMost(MyString));
…
};

Tuesday, November 10, 2009

Dunia maya sebagai sarana lahirnya kekuatan alternatif

Hiruk-pikuk kasus hukum.
Akhir-akhir ini kita dihadapkan pada hiruk-pikuk kasus hukum yang menyangkut dua pimpinan KPK.Kasus tersebut sangat menyita perhatian dan energi bangsa ini, mengingat KPK adalah lembaga yang diharapkan bisa merepresentasikan gerakan reformasi, khususnya menyangkut kasus-kasus korupsi yang sudah mengakar di negeri ini. Korupsi telah menjadi tertuduh utama atas keterpurukan negeri ini, dan menjadikannya musuh bersama rakyat Indonesia. Begitu besarnya harapan rakyat kepada KPK, hingga perlakuan yang dirasa kurang adil terhadap lembaga tersebut bisa melukai hati rakyat, meskipun juga disadari bahwa KPK bukanlah lembaga kumpulan para malaikat.


Dengan dipicu penahanan kedua pimpinan KPK yang landasan hukumnya masih menjadi debat di kalangan umum, rakyat menjadi semakin gerah, kepercayaan kepada lembaga penegak hukum pun semakin melemah.Rakyat hanyalah rakyat, yang hanya bisa menyaksikan dan berteriak tanpa memiliki wewenang lebih. Akan tetapi rakyat juga sadar, bahwa kedaulatan tertinggi ada di tangannya.Mandat yang dilimpahkan kepada wakilnya seolah sudah tidak bisa diandalkan lagi, jika tidak bisa dibilang sudah tidak bisa sepenuhnya dipercaya. Melihat kondisi yang dirasa memprihatinkan, penggalangan dukunganpun menjadi makin tak terbendung. 


Dukungan teknologi informasi.
Rakyat yang merasa sudah lelah dengan aksi jalanan namun belum tentu efektif untuk menyuarakan aspirasinya, bahkan tidak jarang aksi jalanan justru hanya akan mengganggu kepentingan masyarakat luas, terlebih jika disusupi oknum yang tidak bertanggung-jawab. Dengan dukungan teknologi informasi yang berkembang pesat saat ini, khususnya teknoloogi informasi yang mendukung jejaring sosial, menjadikan rakyat seolah mendapatkan ruang yang leluasa dan efektif untuk menyuarakan aspirasinya.Bersama-sama dengan media informasi lainnya, teknologi jejaring sosial telah menjadi kekuatan yang patut diperhitungkan dalam mengontrol kebijakan-keijakan yang menyangkut kepentingan publik.Media informasi ini, telah terbukti mampu menjadi saluran alternatif yang bisa diakses masyarakat nyaris tanpa perlu birokrasi berbelit untuk menyuarakan aspirasinya.


Facebook
Facebook, teknoloogi jejaring sosial yang paling popular saat ini telah turut memberikan andil cukup besar dalam menjembati aspirasi rakyat yang terdaftar sebagai anggotanya.Facebook yang awal mulanya digunakan sekedar sebagai media pertemanan, telah berkembang menjadi media penggalangan masa yang jauh lebih cepat dari model-model penggalangan sebelumnya.Hanya dalam waktu kurang-lebih 10 hari, gelombang dukungan dalam salah satu group bisa mencapai lebih dari sejuta anggota.Perlahan tapi pasti, sunyi tapi meyakinkan. Dukungan tersebut tentu sangat bermakna bagi penegakan hukum di negeri ini, setidaknya memberikan dukungan moril yang kuat pada lembaga yang dipercaya rakyat.Alhasil, dua pimpinan KPK yang telah ditahanpun bisa bebas kembali. Lebih dari itu, pihak kejaksaanpun akhirnya mengembalikan berkas terkait ke kepolisian, karena berdasarkan atas temuan Tim 8, tidak ditemukan cukup bukti yang kuat untuk diproses lebih lanjut. Dengan merunut kembali dari awal, apa yang akhirnya diputuskan merupakan rangkaian yang melewati tahapan berupa gerakan dukungan moril rakyat melalui facebook. Tentu tanpa menafikkan peran serta media lainnya


Prospek selanjutnya.
Gerakan penggalangan masa yang kini mulai bermetamorfosis ke dunia maya semakin mendapatkan angin segar dengan dukungan perangkat media yang semakin mudah dimiliki oleh masyarakat. Salah satunya adalah makin terjangkaunya harga telepon genggam yang menyediakan akses ke situs jejaring sosial. Meski perangkat ini mayoritas baru bisa dijangkau kalangan menengah ke atas, tetapi dengan melihat semakin terjangkaunya teknologi seluler oleh lapisan masyarakat, terbuka kemungkinan akses yang lebih luas lagi penggunaan jejaring sosial.Peningkatan pertumbuhan ekonomi tentunya juga tidak menutup kemungkinan dapat membantu penyebaran kesempatan akses. Dengan mengacu pada perkiraan World Bank, yang dimuat dalam harian Kompas tanggal 14 Setember 2009, pertumbuhan ekonomi Indonesia tahun 2009 diperkirakan mencapai sekitar 4,3%. Sedangkan tahun-tahun selanjutnya diperkirakan sebesar 5,4% tahun 2010, dan sekitar 6,0 sd 6,5% di tahun 2011.


Dari sisi teknologinya sendiri, dengan berkaca pada data statistik yang ada di http://www.nickburcher.com, terbuka peluang yang cukup besar pertumbuhan keanggotan facebook sebagai salah satu jejaring sosial, kususnya di Indonesia. Untuk periode September 2009, yang notabenya pertumbuhan ekonomi kita baru sekitar 4,3, telah tercatat bahwa Indonesia menempati urutan ketujuh dari jumlah pengguna facebook dunia. Bahkan kalau dilihat dari sisi pertumbuhan keanggotannya, Indonesia menempati urutan pertama per Juli 2009. Di sisi lainnya lagi, angka statistik juga menunjukkan masih terbukanya peluang penetrasi lebih besar lagi keanggotan facebook di Indonesia, karena Indonesia masih tergolong dalam kelompok negara yang penetrasi penggunaan facebooknya rendah, yaitu berada pada posisi tujuh puluh satu dari sembilan puluh satu negara yang masuk dalam sampel.


Dengan mempertimbangkan angka-angka statistik tesebut, ditambahkan lagi dengan kultur kekerabatan kita yang memang sangat kuat, maka penggalangan dukungan melalui dunia maya, yang dalam hal ini direpresentaskan oleh facebook, akan tumbuh menjadi kekuatan yang luar biasa, terutama untuk kasus yang menyangkut kepentingan publik. Kekuatan yang mungkin tidak kalah dengan yang disuarakan oleh parlemen, meski tidak memiliki kekuatan hukum, tetapi mampu merepresentasikan aspirasi yang nyata.

Yang perlu diwaspadai adalah terbukanya kemungkinan muncul wajah-wajah palsu dengan menyuarakan aspirasi titipan di dunia maya. Seiring derasnya arus informasi saat ini, kejelian dalam menilai kualitas informasi sangat diperlukan agar tidak mudah terombang-ambing arus yang menyesatkan, bahkan terjebak oleh euforia yang menenggelamkan nalar yang sehat. 

 Data keanggotan facebook.



Wednesday, April 01, 2009

Facebook-Jaringan Pertemanan Maya

Jaringan pertemanan maya sangat populer bagi berbagai kalangan akhir-akhir ini, terlebih dengan hadirnya Facebook (FB). Banyak media pertemanan maya yang kita kenal dan cukup populer, beberapa di antaranya adalah Bebo, Friendster, Orkut, hi5, MySpace, dan Facebook. Jaringan pertemanan maya yang menyediakan pendaftaran anggota relatif mudah dan gratis ini dapat membantu para anggotanya untuk menelusuri jalinan pertemanan lama hingga membuat jalinan pertemanan baru. Walaupun sama-sama menjadi media jaringan pertemanan maya, namun masing-masing tentu menawarkan daya tarik yang beragam bagi setiap anggota atau penggunanya. Dengan memperhatikan kemudahan pendaftaran dan tingkat kepuasan berbeda yang ditawarkan oleh masing-masing media pertemanan, menjadikan status keanggotaannya begitu mudah untuk keluar dan masuk, atau dengan kata lain, status membership-nya memiliki tingkat entry barriers dan exit barriers yang relatif rendah.

Dengan melihat kondisi keanggotaan di bulan November 2008, sebagaimana data yang tergambar pada Gambar 1 di atas (sumber : http://venturebeat.com), Facebook telah menempati urutan pertama. Jumlah pengunjung FB semakin merangkak menjauhi para pesaingnya, terutama menggeser posisi MySpace yang sebelumnya menempati ranking pertama. Indikasi itu sudah nampak pada kecenderungan keanggotaan di tahun 2007, sebagaimana tergambar pada Gambar 2 (sumber:http://merdurian.com/) dan Gambar 3 di atas (sumber : http://venturebeat.com/).


FB kini menjadi sangat populer hingga melewati lintas batas usia, profesi, dan wilayah di dunia ini.Tidak hanya ibu rumah tangga, pelajar, pengajar, karyawan, CIO, bahkan presidenpun tidak mampu menolak kehadiran FB. FB bahkan bisa dibilang ikut andil dalam menghantarkan terpilihnya Barack Obama menjadi presiden Amerika Serikat. Kini, jejak itu juga bisa kita dapati pada presiden dan sekaligus salah satu calon presiden RI akan datang, SBY, yang ikut nimbrung di FB. Singkat kata, FB telah mewabah melewati berbagai batas kepentingan dan wilayah.


Melejitnya FB, tidak terlepas antara lain karena kelengkapan fitur dan fleksibilitasnya. Pada FB, pengunjung tidak hanya berperan pasif, tetapi dapat berperan aktif dalam mengolah isi yang dimilikinya. Dengan FB, pengunjung tidak hanya bisa sekedar bisa menambah teman, tetapi bisa menambah teman yang lebih realistis, yang memang bersinggungan secara langsung, bukan sekedar teman yang direkomendasikan dari negeri antah berantah yang tidak dikenal sebelumnya.


Kita, khususnya pengguna FB, patut berterima kasih kepada Zuckerberg d.k.k., sebagai pendiri jaringan pertemanan yang paling populer ini.Ketiganya adalah pemuda yang pernah belajar di Harvard University pada tahun 2004. Bahkan, Hughes kemudian direkrut Obama saat masih menjadi calon presiden untuk membuat situs barackobama.com. Di Facebook, Zuckerberg bertanggung jawab untuk urusan garis kebijakan umum dan penyusunan strategi perusahaan yang kini menjadi rebutan para pemasang iklan dan para investor. Zuckerberg telah mendapat julukan sebagai ”salah satu orang yang paling berpengaruh pada tahun 2008” versi majalah Time. Pada Forum Ekonomi Davos 2009, Zuckerberg termasuk dalam daftar pemimpin muda karena prestasi dan komitmen terhadap masyarakat serta berpotensi menyumbangkan ide untuk membentuk tatanan dunia baru. (Kompas, 28-02-2009).


Dengan memperhatikan kondisi barriers yang ada, perkembangan tuntutan anggota, serta fitur yang ditawarkan, tentu tidak ada jaminan bahwa FB akan tetap aman melenggang di urutan pertama sebagai media pertemanan yang paling populer. Jika FB terus melakukan terobosan lebih kreatif lagi dengan mengakomodasi tuntutan dan kepuasan penggunanya, setidaknya akan bisa lebih membuat anggotanya lebih kerasan.


Apa yang bisa diambil manfaatnya dari fenomena FB ini?
Adalah suatu kodrat bahwa manusia merupakan mahluk sosial, mahluk yang memerlukan interaksi satu dengan yang lainnya. Interaksi itu wujudnya tentu beragam, tergantung pada kepentingan masing-masing. Komunitas pembelajaran memerlukan interaksi antara sesama pelajar, interaksi pelajar dengan pendidik, interaksi antar pendidik, d,s,b. Contoh lain yang memerlukan interaksi adalah jalinan pertemanan sesama alumni. Alumni, yang dimaksudkan di sini adalah mantan pelajar, memerlukan interaksi untuk tetap dapat menjalin pertemanan dengan kawan lama atas dasar banyak hal, misalkan sharing pengetahuan dan informasi pekerjaan. Dengan berkaca pada keberhasilan FB, bisa menjadikan contoh betapa efektifnya media maya bisa dipakai sebagai penghubung antar sesama (teman). Kalau perlu, komunitas-komunitas tertentu dapat mengembangkan suatu produk baru yang bermanfaat bagi kepentingannya dengan mengadopsi keberhasilan FB.


Dengan popularitasnya, tidak serta merta bahwa pertemanan pada dunia maya dapat memberikan dampak positif, misalnya memudahkan komunikasi. Pengguna perlu hati-hati, terutama dalam menyajikan data yang sensitive, terutama lagi pada penjalinanan pertemanan baru. Jangan karena mengharapkan suatu eksistensi dengan memiliki jaringan pertemanan (maya) yang banyak hingga membuka peluang makin lebar terjadinya kejahatan dengan penyalahgunaan data yang dipublikasikan. Selektif dalam menyajikan data dan menjalin pertemanan adalah salah satu upaya yang dapat menghindari terjadinya tindakan yang bisa mengarah pada kejahatan. Memang upaya ini terkesan relatif protektif, tetapi apalah arti banyak pertemanan (maya) tetapi hakekatnya kita hanya kenal sebatas maya? Tidak mengenal betul latar belakang teman yang kita kenal? Apakah bisa dipastikan bahwa data yang disajikan mengambarkan kondisi nyata yang bersangkutan?

Wednesday, February 18, 2009

Normalisasi Tabel

Pada OLTP (online transaction processing), normalisai adalah suatu upaya penting yang dilakukan untuk menghindari agar tidak terjadi redundansi data yang bisa berakibat kepada anomali update. Anomali update meliputi anomali insert, anomali delete, anomali modification. Untuk lebih jelasnya bisa dilihat ilustrasi dari contoh berikut :










Berdasarkan atas contoh tabel (relation, entity) di atas, data yang terkait staf dan cabang dapat direpresentasikan dalam dua cara :
1. Cukup disediakan satu tabel, yaitu StaffBranch
2. Disediakan dua tabel, yaitu Staf dan Branch

Pada tabel StaffBranch terdapat redundansi data cabang, dimana detil dari cabang terjadi pengulangan untuk setiap staf. Sebaliknya, informasi cabang hanya muncul sekali untuk setiap cabang pada tabel Branch, dan hanya branchNo yang berulang di dalam tabel Staff untuk merepresentasikan lokasi kerja staf.
Bagaimana anomali bisa terjadi pada StaffBranch?
Contoh 1 : Misalkan terjadi transaksi penambahan (insert) staf baru, maka yang dilakukan tidak cukup hanya mengisi data staf tetapi berikut data cabangnya. Jika data cabang untuk staf baru sudah ada sebelumnya, maka ada kemungkinan pengisian ulang data cabang dengan nilai yang berbeda. Dengan demikian, akan terjadi inkonsistensi data cabang.
Contoh 2 : Misalkan terjadi transaksi penghapusan data (delete) staf dan pada target record tidak terdapat pengulangan data cabang, proses akan berdampak pada hilangnya data cabang yang mestinya tidak ikut terhapus.
Contoh 3 : Misalkan terjadi transaksi perubahan/modifikasi (update) data cabang untuk data cabang yang mengalami perulangan. Proses bisa menimbulkan inkonsistensi data jika proses perubahan tidak untuk seluruh record terkait.

Untuk melakukan proses normalisasi, perlu dipahami terlebih dahulu konsep utama dalam normalisasi yaitu ketergantungan fungsional (functional dependency). Functional dependency adalah hubungan antar antribut di dalam suatu tabel. Jika A dan B adalah atribut-atribut yang ada di dalam tabel R, B tergantung secara fungsional terhadap A, jika setiap nilai A di dalam R berelasi hanya dengan satu nilai B (ditulis A → B). Dalam hal ini, A disebut sebagai determinant.
Karakteriktik dari ketergantungan fungsional pada normalisasi adalah :
1. Berelasi satu dan hanya satu (1:1).
2. Berlaku (terjaga konsistensinya) untuk kapan saja.
3. Nontrivial.
Trivial dependency adalah ketergantungan fungsional dimana non determinant tergantung pada superset. Contoh StaffNo, StaffAddress → StaffAddress adalah trivial selama StaffAddress → StaffAddress.
Selain memahai ketergantungan fungsional, beberapa jenis ketergantungan berikut ini perlu untuk diketahui :
Trivial dependency, adalah ketergantungan fungsional dimana non determinant tergantung pada superset. Contoh StaffNo, StaffAddress → StaffAddress adalah trivial selama StaffAddress → StaffAddress.
Full functional depencey, adalah ketergantungan dimana non determinant tergantung penuh pada (seluruh) determinant. Misalkan OrderNo, PoductNo → Price.
Transitive dependency, adalah suatu hubungan ketergantungan fungsional yang terjadi secara tidak langsung.Contoh A → B, B → C, maka secara tidak langsung terjadi ketergantungan A → C.

Dalam proses normalisasi, perlu juga memahami konsep beberapa tingkatan nilai kunci (key) berikut ini:
· Superkey, adalah sebuah atribuat atau sebuah himpunan atribut yang secara unik dapat mengidentifikasi record dalam tabel. Contoh informasi keahlian staf dalam tabel StaffSkill bisa memiliki superkey StaffNo, StaffAddress, Skill, atau cukup StaffNo, Skill.
· Candidate key, adalah superkey yang tidak terdapat subset yang merupakan superkey.Dari kedua contoh superkey di atas, candidate key yang tepat adalah StaffNo, Skill.
· Primary key, adalah candidate key yang terpilih untuk mengidentifikasi nilai yang unik dalam suatu tabel.
· Alternate key, adalah candidate key yang tidak terpilih menjadi primary key.
Tahapan normalisasi :
· UNF (unnormalized form), adalah tabel yang masih memiliki satu atau lebih kelompok berulang (repeating group).
· 1NF (first normal form), adalah tabel yang hanya terdapat satu dan hanya satu nilai untuk irisan baris dan kolomnya. Diperoleh dengan menghilangkan kelompok berulang pada UNF, antara lain dengan membentuk tabel baru pada kelompok yang berulang dengan menyertakan (kopi) kuncinya.
· 2NF (second normal form), adalah tabel yang seluruh non determinannya bergantung penuh (bukan subset) pada determinant, jadi tidak terjadi partial dependency. Diperoleh dengan menghilangkan partial dependency dengan membentuk tabel baru yang menyertakan determinannya.
· 3NF (third normal form), adalah tabel yang tidak terdapat hubungan transitive di dalamnya. Diperoleh dengan menghilangkan transitive dependency dengan membentuk tabel baru yang menyertakan determinannya.
· BCNF(Boyce–Codd Normal Form), adalah tabel yang memiliki persyaratan 3NF dengan tambahan batasan determinant harus candidate key.Perbedaan antara 3NF dengan BCNF adalah (misalkan untuk relasi A → B), pada 3NF B boleh sebuah atribute primary key dan A bukan candidate key, sedangkan pada BCNF untuk relasi tersebut A harus candidate key. Dengan demikian BCNF tentu 3NF, tetapi 3NF belum tentu BCNF.
· 4NF (fourth normal form), adalah tabel yang memiliki persyaratan BCNF dan non-trivial MVD(multivalued dependency). Contoh di dalam tabel BranchStaffOwner terdapat relasi MVD branchNo → StaffName, OwnerName. Antara StaffName dan OwnerName masing-masing independen. Jadi untuk 4NF bisa dikembangkan menjadi branchNo → StaffName dan branchNo → OwnerName.
· 5NF (fifth normal form), adalah tabel yang tidak memiliki join dependency.Kasus ini jarang terjadi.
· Higher normal forms.
Dalam suatu proses normalisasi kemungkinan bisa terjadi lompatan kondisi dari suatu level normal ke dua atau bahkan lebih level di atasnya. Hal ini lebih besar kemungkinannya pada tabel-tabel atau entitas-entitas memiliki relationship yang sederhana, atau dengan kata lain jumlah entitas yang terkait sedikit. Misalkan pada proses normalisasi 1NF ke 2NF telah dilakukan proses penghilangan partial dependency, dan hasilnya terbentuk relationship baru yang bisa saja sudah tidak terdapat transitive depdendency, atau bahkan sudah memenuhi kriteria level di atasnya.Namun demikian, validasi normalisasi masih penting untuk dilakukan untuk bisa lebih memastikannya.

Monday, February 16, 2009

Mengoptimalkan Kinerja Akses Basis Data

Performa akses suatu basis data dalam sistem client-server, dapat dipengaruhi oleh beberapa faktor, antara lain kualitas desain basis data, dukungan OS&DBMS (software), dukungan infrastruktur (misal hardware dan jaringan). Dari sisi desain basis data, performa akses dapat dipengaruhi antara lain oleh kualitas desain query dan penerapan mekanisme indek. Dengan demikian, untuk menghasilkan performa akses basis data yang baik, tidak hanya menjadi fokus pada fase operasional, tetapi sudah dimulai pada fase pengembangan (analysis and design). Basis data yang dihasilkan melalui metodologi analisis dan desain yang tepat, akan membantu menghasilkan performa basis data yang baik. Salah satu metodologi pengembangan basis data adalah dengan menggunakan pendekatan DBALC (database application life cycle), lebih detil mengenai siklus ini bisa dibaca antara lain pada buku Connolly, Thomas dan Begg, Carolyn. (2002). Database Systems, 3rd Edition. Addison Wesley Longman, Inc. USA. Dan ringkasannya bisa libaca di http://choirulhuda.blogspot.com/2005/12/pengantar-basis-data.html.
Sebagaimana diketahui, dalam basis data relational, setiap tabel (ralation) memiliki struktur yang tersusun atas kolom (attribute) serta baris (tupple).Beberapa litaratur menyebut field, member untuk kolom, dan record untuk baris. Proses pembacaan suatu tabel dalam basis data, perlu menyertakan kolom dan baris yang dibutuhkan. Structured query language (SQL) untuk membaca data yang hingga saat ini dipakai adalah sebagai berikut :
SELECT [DISTINCT ALL]
{* [columnExpression [AS newName]] [,...] }
FROM TableName [alias] [, ...]
[WHERE condition]
[GROUP BY columnList] [HAVING condition]
[ORDER BY columnList]

Statemen query tersebut, prinsip dasarnya bekerja sebagaimana model relational algebra yang terdiri dari projection dan selection. Projection adalah mekanisme untuk memilih kolom-kolom tertentu pada relation sesuai kebutuhan, sedangkan selection adalah mekanisme pemilihan baris tertentu sesuai kebutuhan. Projection dan selection perlu diperhatikan pada saat mendesain sebuah query yang diinginkan agar performa akses data menjadi lebih baik, terlebih jika menggunakan beberapa tabel atau bahkan sub query.
Selain perlu memperhatikan desain query, performa akses basis data juga dapat dipengarui oleh adanya mekanisme indek. Mekanisme akses data dengan bantuan indek, secara sedehana dapat dianalogikan dengan suatu proses pencarian buku dalam rak melalui pembacaan katalog terlebih dahulu. Dari katalog bisa diperoleh lokasi yang lebih tepat keberadaaan buku yang diinginkan. Untuk kasus yang umum, pencarian buku dengan bantuan katalog tentu akan lebih cepat dibandingkan pencarian langsung ke rak penyimpanan. Dengan analogi tersebut, maka akses data langsung ke suatu tabel (table scan) akan memakan waktu lebih lama dibandingkan dengan akses melalui indek (index scan), karena fungsi indek tersebut dapat dianalogikan sebagaimana fungsi katalog pada proses pencarian buku.
Pada fase operasional, performa akses basis data masih perlu untuk terus dipelihara, meliputi antara lain pengaturan kembali indek (reindex), defragmentasi tabel dan indek, melakukan backup untuk record yang sudah tidak diakses lagi kemudian dihapus dari basis data yang selanjutnya bisa di-restore jika diperlukan. Umumnya DBMS (database management sytems) sudah menyediakan perangkat untuk membantu database tuning, yang tujuannya adalah untuk menjaga performa basis data untuk menjadi lebih baik. Selain itu, dari sisi DBMS perlu secara berkala melakukan patching pada DBMS, sesuai perkembangan terkini. Jika segala strategi tuning di atas masih belum signifikan untuk mendongkrak performa basis data, bisa jadi memang sudah waktunya untuk upgrade hardware ataupun menata kembali sistem jaringan yang terkait. Terkait hardware, perlu sekali diperhatikan umurnya, terutama harddrive, mengingat perangkat keras ini terhitung paling rentan, terlebih jika telah cukup lama dipakai secara terus-menerus.

Monday, November 24, 2008

Dunia Maya, Ruarrrrrr.....Biasa.......

Dengan perkembangan era digital saat ini, arus informasi sangat luar biasa derasnya, terutama di dunia maya yang kita sebut sebagai internet. Sebagaimana istilahnya sebagai dunia maya, internet tak ubahnya dunia ini secara fisik kita kenal, ada hitam, ada putih, ada abu-abu, tergantung pengguna masing-masing karena internet adalah hanya sekedar alat. Banyak kalangan sangat diuntungkan, tetapi tidak jarang juga menimbulkan kerugian karena makin terbukanya kemunculan model-model kejahatan baru. Segala aktifitas dan kreatifitas kita di dunia nyata dibatasi oleh koridor-koridor hukum yang relatif telah mapan, tetapi di dunia maya banyak kreatifitas yang lepas kontrol atau setidaknya sangat sulit dikontrol. Bisa saja diperlukan produk undang-undang untuk mengatur komunikasi di dunia maya, namun hal itu tentu tidaklah semudah membuat aturan di dunia nyata. Dibutuhkan aturan yang benar-benar adil, tidak sekedar reaksioner, dan tidak “gebyah uyah”, yang berpeluang mengebiri hak-hak kreatifitas seseorang.

Kehadiran dunia maya bak rob yang tiba-tiba datang dan menimbulkan euforia. Pada awal kemunculannya, banyak portal dibangun dan tenggelam dalam euforia, apa saja ingin di-"internet"-kan.Segala hal ingin dibuat maya, dan tidak sedikit akhirnya portal-portal yang tidak memiliki landasan kuat satu per satu berguguran.Bagi pengguna tertentu, internet tidak sekedar dipandang sebagai media komunikasi yang menyajikan informasi yang berlimpah dan cepat, tapi juga perlu menampilkan informasi yang berkualitas dan santun.

Pada masa kini, manfaat dari dunia maya tentu sudah tidak menarik untuk menjadi bahan diskusi. Yang perlu kita waspadai adalah "mabuknya" opengguna internet itu sendiri karena derasnya arus informasi yang bisa didapat dengan cepat. Saking "mabuknya" tidak mampu mengolah informasi yang diterima dan tidak menyadari dampak dari pendistribusian informasi yang dilakukan. Apa pun informasi yang diperoleh ditelan mentah-mentah tanpa ada pengolahan lebih lanjut. Celaknya tidak jarang suatu informasi yang menyesatkan langsung di teruskan ke pengguna lainya, dengan latar belakang kesengajaan ataupun tidak.Persoalannya saat ini adalah bukan bagaimana cara mendapatkan dan menyebarkan informasi, tetapi bagaimana cara mengolah informasi.

Komputer adalah perangkat yang dibuat dengan mengadopsi cara kerja manusia. Ada bagian yang disebut perangkat keras, dan ada bagian yang disebut piranti lunak. Dengan pendekatan suatu sistem, terdapat eleman yang disebut input, proses, output. Input adalah bagian yang digunakan untuk menerima masukan, proses adalah upaya untuk memberikan nilai lebih atas masukan yang diterima, sedangkan output adalah produk yang dihasilkan oleh suatu proses. Celakanya, kita sendiri yang notabenya memiliki desain fisik yang lebih hebat dan canggih dari komputer itu sendiri sering lepas kendali, sehingga input yang masuk langsung dikeluarkan tanpa ada suatu proses. Agar informasi itu memberikan manfaat, maka tiga hal di atas, perlu diperhatikan.

Input/masukan.
Adalah masukan/data yang akan diolah kembali agar diperoleh nilai lebih.Informasi yang berkualitas berdampak pada nilai lebih yang dihasilkan pada tahap selanjutnya. Terdapat banyak referensi untuk mengukur kualitas informasi, setidaknya tidak sekedar kuantitas dan kecepatan distribusi.Kualitas informasi antara lain bisa diukur dari sisi waktu, bentuk atau format, akurasi, kelengkapan. Dalam kaidah pemrosesan data, sering dipaparkan suatu istilah yang kita kenal GIGO, Garbage In Garbage Out.Artinya, kalau informasi itu tidak memiliki suatu kualitas (sampah), maka hasil dari proses selanjutnya juga tidak berkualitas (sampah).Dalam hal ini, memilah-milah informasi yang berkulitas adalah sangat penting dari pada sekedar mengumpulkan sampah, meskipun penampung kita tidak diragukan kapasitasnya.

Proses/pengolahan.
Informasi yang berkulitas, perlu adanya pengolahan yang tepat agar bisa dihasilkan nilai guna yang lebih.Cross Check dan konfirmasi ke sumbernya sangat diperlukan jika dirasa suatu informasi itu meragukan dan bisa menimbulkan polemik.Menyebarkan informasi di dunia maya tanpa proses yang matang, bisa saja menimbulkan masalah yang runyam, bak percikan api dalam sekam, membesar dan membara tak terkendali.

Output/Keluaran.
Informasi yang berkulitas dan proses yang sudah tepat belumlah cukup menghasilkan nilai tambah jika output disajikan tidak tepat, baik bentuk, cara, maupun waktunya.Cara komunikasi kita (orang Indonesia umumnya) saat menyampaikan suatu pesan ke orang lain dengan menggelengkan kepala, belum tentu dipersepsikan sama oleh penerima pesan jika penerima pesan adalah orang India misalnya. Tidak jarang juga terjadi kasus yang tanpa suatu kesengajaan kecuali ingin membangun suatu canda (joke), tetapi karena tidak berada pada kondisi yang tepat bukan canda yang dihasilkan tetapi malah bencana.

Akhirul kalam, dijelaskan dalam suatu hadits Nabi, "Barangsiapa yang beriman kepada Allah dan hari akhir, maka berkatalah yang benar atau diam" (HR.Bukhari Muslim).

Tuesday, November 04, 2008

Mengenal Concurrency Control pada Database

Tujuan utama dalam pengembangan database adalah membuat banyak pengguna bisa mengakses data secara bersamaan. Pengaksesan data ini tidak bermasalah jika semua pengguna hanya membaca data dan mereka tidak mengganggu satu sama lain. Tapi ketika dua pengguna atau lebih mengakses database yang sama secara bersamaan dan salah satu melakukan perubahan terhadap data, maka hal ini akan dapat menimbulkan adanya data yang tidak konsisten (inconsistency data).

Untuk mengatasi adanya kemungkinan inconsistency data, maka dibutuhkan adanya suatu mekanisme yang mengatur jalannya transaksi pengaksesan data yang sama tersebut. Mekanisme ini dikenal dengan istilah concurrency control. Concurrency control adalah proses pengaturan operasi–operasi dalam banyak transaksi yang berjalan secara simultan pada database tanpa mengganggu operasi pada transaksi lainnya sehingga dapat menghasilkan data yang konsisten ( Connolly, 2005, p577 ). Tiga contoh masalah penting yang terkait oleh concurrency, yaitu masalah Lost-Update, masalah Uncommitted Dependency, dan masalah Inconsistent Analysis.
Masalah Lost-Update
Penjelasan : Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan keduanya membaca saldo $100. T2 menambah balx $100 menjadi $200 dan menyimpan hasil perubahannya dalam database. Di sisi lain, transaksi T1 mengurangi copy dari balx $10 menjadi $90 dan menyimpan nilai ini dalam database, menimpa hasil update sebelumnya dan akhirnya menghilangkan $100 yang telah ditambahkan sebelumnya ke dalam saldo. Kehilangan update transaksi T2 dapat dihindari dengan mencegah T­1 membaca nilai dari balx sampai update T2 telah selesai.
Masalah Uncommited Dependency (dirty read)
Penjelasan: Transaksi T4 mengubah balx menjadi $200 namun T4 membatalkan transaksi sehingga balx harus dikembalikan ke nilai asalnya, yaitu $100. Namun, pada waktu itu, transaksi T3 telah membaca nilai baru balx ($200) dan menggunakan nilai ini sebagai dasar pengurangan $10, sehingga memberikan saldo yang keliru sebesar $190, yang seharusnya adalah $90. Nilai balx yang dibaca T3 disebut dirty data, yang berasal dari nama alternatifnya, yaitu masalah dirty read. Alasan rollback ini tidaklah penting. Masalahnya adalah transaksinya gagal (error), mungkin mengurangi rekening yang salah. Efeknya adalah asumsi T3 yang menganggap update T4 telah berhasil dijalankan, meskipun selanjutnya perubahannya dibatalkan. Masalah ini dihindari dengan mencegah T3 membaca balx sampai keputusan telah dibuat, yaitu commit atau membatalkan efek T4. Dua masalah di atas mengkonsentrasikan pada transaksi yang mengubah database dan campur tangan mereka bisa membuat database menjadi corrupt. Namun, transaksi yang hanya membaca database bisa juga memberikan hasil yang tidak akurat jika mereka diijinkan untuk membaca hasil bagian dari transaksi yang belum selesai yang secara bersamaan membaca database. Contohnya dijelaskan pada masalah inconsistent analysis.
Masalah Inconsistent Analysis
Penjelasan: Masalah inconsistent analysis muncul ketika sebuah transaksi membaca beberapa nilai dari database tapi transaksi kedua mengubah beberapa darinya ketika eksekusi transaksi yang pertama. Contohnya, sebuah transaksi yang meringkas data pada sebuah database(contohnya, saldo total) akan mendapat hasil yang tidak akurat jika, ketika berjalan, transaksi lain sedang mengubah database. Pada contoh diatas, ringkasan transaksi T6 sedang berjalan secara bersamaan dengan transaksi T5. Transaksi T6 sedang menjumlahkan saldo rekening x ($100), rekening y ($50), dan rekening z($25). Namun, di tengah jalan, transaksi T5 telah mentransfer $10 dari balx ke bal­z, sehingga T6 sekarang mempunyai hasil yang salah (lebih besar $10).
Tujuan protokol concurrency control adalah untuk menjadwalkan transaksi sedemikian rupa sehingga dapat menghindar dari berbagai gangguan, dan juga mencegah tipe-tipe masalah yang digambarkan pada sesi sebelumnya. Satu solusi yang jelas adalah mengijinkan hanya satu transaksi yang berjalan dalam satu waktu. Satu transaksi berstatus commit sebelum transaksi berikutnya diijinkan mulai. Namun, tujuan dari DBMS multi user juga untuk memaksimalkan derajat concurrency atau paralelisme dalam sebuah sistem, sehingga transaksi yang dapat berjalan tanpa mengganggu satu sama lain dapat berjalan secara paralel. Contohnya, transaksi yang mengakses bagian berbeda pada database dapat dijadwalkan bersama tanpa gangguan. Dalam bagian ini, kita memeriksa serializability sebagai sebuah cara untuk membantu mengidentifikasi eksekusi transaksi tersebut yang dijamin untuk memastikan konsistensi. Pertama, kita beri beberapa definisi.
Schedule adalah sebuah urutan dari operasi-operasi oleh satu set transaksi yang jalan bersamaan yang menjaga urutan operasi pada setiap transaksi individual ( Connolly, 2005, p580 ). Sebuah transaksi mencakup sebuah urutan operasi yang terdiri dari tindakan baca dan/atau tulis pada database, diikuti oleh sebuah tindakan commit atau abort. Sebuah schedule S terdiri dari sebuah urutan operasi dari sekumpulan n transaksi T1, T2, … Tn, bergantung pada constraint yang dilindungi oleh urutan operasi untuk setiap transaksi pada schedule tersebut. Jadi, untuk setiap transaksi Ti pada schedule S, urutan operasi pada Ti harus sama dengan schedule S. Serial Schedule adalah sebuah schedule di mana operasi dari setiap transaksi dijalankan secara berurutan tanpa adanya tarnsaksi yang mengganggu transaksi lainnya (Connolly, 2005, p580). NonSerial Schedule adalah sebuah schedule di mana operasi-operasi dari satu set concurrent transactions mengalami interleaved (Connolly, 2005, p580). Pada sebuah serial schedule, transaksi dijalankan pada serial order. Contohnya, jika kita mempunyai dua transaksi T1 dan T2, serial ordernya akan menjadi T1 diikuti oleh T2, atau T2 diikuti oleh T1. Lalu, pada eksekusi serial tidak ada interferensi antara transaksi, karena hanya satu transaksi yang berjalan pada satu waktu. Tujuan serializibility adalah untuk menemukan non serial schedule yang mengijinkan transaksi untuk berjalan secara bersamaan tanpa mengganggu satu sama lain, dan kemudian memproduksi sebuah state database yang dapat diproduksi oleh sebuah eksekusi serial. Jika sebuah set transaksi berjalan secara bersamaan, bisa dikatakan bahwa schedule (nonserial) adalah benar jika memproduksi hasil yang sama seperti beberapa eksekusi serial lainnya. Schedule seperti itu disebut serializable. Untuk mencegah inkonsistensi dari transaksi yang mengganggu satu sama lain, penting untuk menjamin serializability dari transaksi yang jalan bersamaan.
Pada serializability, urutan operasi baca dan tulis itu penting. Berikut ini hal – hal yang perlu diperhatikan:
  • Jika dua transaksi hanya membaca satu item data yang sama, dua transaksi tersebut tidak mengalami konflik dan urutan menjadi tidak penting.
  • Jika dua transaksi melakukan operasi membaca ataupun menulis pada item data yang berbeda, dua transaksi tersebut tidak mengalami konflik dan urutan menjadi tidak penting.
  • Jika satu transaksi menulis sebuah item data dan transaksi lain baik membaca ataupun menulis pada item data yang sama, maka urutan eksekusi itu menjadi penting.
Anggap schedule S1 yang ditunjukkan oleh gambar (a) di bawah mengandung operasi dari dua transaksi yang sedang berjalan secara bersamaan, yaitu T7­ dan T8. Karena operasi tulis pada balx di T8 tidak konflik dengan operasi baca berikutnya pada baly di T7, kita dapat mengubah urutan operasinya untuk memproduksi schedule yang ekuivalen (S2) ditunjukkan oleh gambar (b). Jika kita sekarang juga mengubah urutan dari operasi yang tidak konflik berikut, kita memproduksi serial schedule yang ekuivalen (S3) ditunjukkan oleh gambar (c) di bawah.
  • Ubah urutan write(balx) di T8 dengan write(baly) di T7
  • Ubah urutan read(balx) di T8 dengan read(baly) di T7
  • Ubah urutan read(balx) di T8­ dengan write(baly) di T7
Keterangan Gambar :
(a) nonserial schedule S1
(b) nonserial schedule S2
(c) serial schedule S3, ekuivalen dengan S1 dan S2
Schedule S3 adalah sebuah schedule serial dan karena S1 dan S2 ekuivalen dengan S3, maka S1 dan S2 adalah serializable schedule.
Recoverable schedule adalah sebuah schedule di mana, untuk setiap transaksi Ti dan Tj, jika Tj membaca sebuah item data yang sebelumnya ditulis oleh Ti, kemudian operasi commit dari Ti mendahului operasi commit Tj.
Ada dua teknik concurrency control utama yang mengijinkan transaksi untuk berjalan dengan aman dalam subjek paralel untuk constraint tertentu, yaitu locking dan metode timestamp tertentu. Locking dan timestamping adalah pendekatan konservatif karena mereka menyebabkan transaksi ditunda dalam kasus mereka konflik dengan transaksi lain pada beberapa waktu di masa yang akan datang. Metode optimistik, didasarkan pada premis bahwa konflik itu jarang ditemui, jadi mereka mengijinkan transaksi untuk lanjut tidak tersinkronisasi dan hanya mengecek konflik di bagian akhir, ketika transaksi melakukan operasi commit.
Locking adalah sebuah prosedur yang digunakan untuk mengendalikan akses bersamaan ke data. Ketika sebuah transaksi sedang mengakses database, sebuah lock mungkin menolak akses ke transaksi lain untuk mencegah hasil yang salah ( Connolly, 2005, p587 ). Ada dua macam lock, yaitu shared lock dan exclusive lock yang harus digunakan sebelum melakukan akses membaca ataupun menulis terhadap database. Penggunaan lock ini adalah untuk menjaga konsistensi data didalam database. Jika sebuah transaksi mempunyai sebuah shared lock pada sebuah item data, transaksi tersebut dapat membaca item tapi tidak dapat mengubah datanya ( Connolly, 2005, p588 ). Jika sebuah transaksi mempunyai sebuah exclusive lock pada sebuah item data, transaksi tersebut dapat membaca dan mengubah item data ( Connolly, 2005, p588 ).
Lock digunakan dengan cara sebagai berikut:
  • Transaksi apapun yang membutuhkan akses pada sebuah item data harus melakukan lock terhadap item tersebut, meminta shared lock untuk akses membaca saja atau sebuah exclusive lock untuk akses membaca dan menulis.
  • Jika item belum dikunci oleh transaksi lain, lock tersebut akan dikabulkan
  • Jika item sedang dikunci, DBMS menentukan apakah permintaan ini compatible dengan lock saat ini. Jika diminta shared lock pada sebuah item yang sudah mempunyai shared lock terpasang padanya, permintaan itu akan dikabulkan. Selain itu, transaksi harus menunggu sampai lock yang ada terlepas.
  • Sebuah transaksi lanjut memegang lock sampai transaksi tersebut melepasnya baik pada waktu eksekusi ataupun pada waktu transaksi tersebut berakhir (abort atau commit). Efek operasi tulis akan terlihat pada transaksi lain hanya pada waktu exclusive lock telah dilepas.
Two Phase Locking adalah sebuah transaksi yang mengikuti protokol two-phase locking jika semua operasi locking mendahului operasi unlock pertama pada transaksi ( Connolly, 2005, p589 ).
Aturan-aturannya adalah sebagai berikut :
  • Sebuah transaksi harus mendapatkan sebuah lock pada item sebelum beroperasi pada item tersebut. Lock tersebut bisa berupa baca atau tulis, tergantung dari tipe akses yang dibutuhkan
  • Sebelum transaksi melepaskan sebuah lock, transaksi tersebut tidak akan pernah mendapatkan lock baru lainnya.
Deadlock adalah jalan buntu yang dapat terjadi ketika dua atau lebih transaksi masing-masing menunggu lock yang sedang dipegang oleh transaksi lainnya untuk dilepas. Hanya ada satu cara untuk menghancurkan deadlock, yaitu abort satu atau lebih transaksi. Ada tiga cara untuk menangani deadlock, yaitu timeout, deadlock prevention dan deadlock detection and recovery.
Pendekatan sederhana pada pencegahan deadlock adalah berdasarkan lock timeout. Dengan pendekatan ini, sebuah transaksi yang meminta sebuah lock akan menunggu hanya sampai periode waktu tertentu yang didefinisikan sistem.
Pendekatan lain untuk mencegah deadlock adalah untuk memesan transaksi menggunakan timestamp transaksi. Dua algoritma telah ditemukan oleh Rosenkrantz. Algoritma pertama, Wait-Die, mengijinkan hanya transaksi yang lebih tua untuk menunggu yang lebih muda, jika tidak transaksi dibatalkan (die/mati) dan restart dengan timestamp yang sama, sehingga lama kelamaan transaksi tersebut akan menjadi transaksi aktif tertua dan tidak akan mati. Algoritma kedua, Wound-Wait, menggunakan pendekatan simetrikal. Hanya transaksi yang lebih muda yang dapat menunggu untuk yang lebih tua. Jika transaksi yang lebih tua meminta lock yang dipegang oleh transaksi yang lebih muda, transaksi yang lebih muda digagalkan.
Deadlock detection biasanya ditangani oleh konstruksi wait-for graph (WFG) yang menunjukkan ketergantungan transaksi, yaitu transaksi Ti tergantung pada Tj jika transaksi Tj memegang lock pada sebuah item data yang ditunggu oleh Ti.
WFG adalah sebuah directed graph G = (N, E ) yang terdiri dari satu set node N dan satu set directed edge E, yang dikonstruksi sebagai berikut
  • Buat sebuah node untuk setiap transaksi.
  • Buat sebuah directed edge Ti → Tj , jika transaksi Ti menunggu untuk melakukan lock sebuah item yang sedang di-lock oleh Tj.












Deadlock terjadi jika dan hanya jika WFG mengandung sebuah cycle. Gambar di atas menunjukkan WFG yang menunjukkan deadlock antara dua transaksi.
--------------------------------------------------------------
Connolly T dan Begg C. (2005). Database Systems: A Practical Approach in Design, Implementation, and Management. Fourth Edition. Addison Wesley. Longman Inc., USA.

Saturday, August 09, 2008

Roles in DB Environment

Terdapat lima role pada DB Environment, terkait pada pengembangan dan penggunaan basis data.
1.Data Administrator (DA)
Data Administrator (DA) dan Database Administrator (DBA) bertanggung jawab terhadap pengelolaan dan pengontrolan aktifitas-aktifitas yang terkait data maupun basis data. DA lebih terfokus di tahap awal pada siklus pengembangan basis data, sedangkan DBA lebih fokus pada tahap akhir. Untuk penjelasan lebih detil siklus pengembangan basis data, ada di http://choirulhuda.blogspot.com/2005/12/pengantar-basis-data.html

Pengelolaan sumber-sumber data yang dilakukan meliputi :

  1. perencanaan basis data,
  2. pengembangan dan pemeliharaan standar, kebijakan dan prosedur, perancangan konseptual dan logikal basis data.

2.Database Administrator (DBA)
Pengelolaan atas realisasi pada tahap fisikal aplikasi basis data, meliputi :

  1. perancangan basis data fisikal dan implementasi,
  2. pengaturan keamanan dan kontrol integritas,
  3. pemantauan terhadap kinerja sistem, dan pengorganisasian kembali basis data.

3.Database Designers
Bertanggung jawab terhadap perancangan database, mulai dari model logikal hingga fisikal.

4.Application Programmers
Bertanggung jawab terhadap perancangan dan implementasi atas user interface dan program aplikasi yang digunakan untuk mengolah basis data.

5.End Users
Bertangung jawab dalam pengolahan data dengan menggunakan program aplikasi yang telah disediakan. Dikenal ada dua kategori pengguna basis data :

  1. naive user : adalah pengguna yang sedikit memiliki pemahaman terhadap basis data, baik dari sisi teknis ataupun tatalaksana perusahaan/organisasi .Pengguna yang termasuk dalam kategori ini perlu mendapatkan pelatihan lebih intensif untuk pemakaian aplikasi basis data. Disamping itu, pada saat identifikasi kebutuhan, perlu usaha yang lebih untuk berkomunikasi dengan pengguna pada kategori ini.
  2. Sophisticated/expert user : adalah pengguna yang sangat memahami basis data, baik dari sisi teknis ataupun tatalaksana perusahaan/organisasi.Pengguna ini mampu mendefinisikan kebutuhannya dengan baik pada tahap awal pengembangan basis data karena didukung penguasaan tatalaksana perusahaan/organisasi.Pelatihan yang diberikan untuk pemakaian aplikasi basis data juga tidak perlu seintensif naïve user.




Referensi :

  • Connolly Thomas, Berg Carolyn, 2002, Database System, A Practical Approach to Design, Implementation, and Management, Addison – Wesley.

Wednesday, April 30, 2008

Modular Programming

Konsep

  • Program dibagi-bagi menjadi bagian-bagian (modul-modul) yang lebih kecil.
  • Seluruh modul adalah suatu kesatuan untuk menyelesaikan suatu tugas.
  • Modul dibentuk dengan mengelompokkan sejumlah perintah untuk menyelesaikan tugas tertentu.
  • Modul diperlukan jika kelompok perintah tersebut kerap kali digunakan di tempat lain dalam program.
  • Modul sering disebut juga dengan Sub-Program.

Keuntungan menggunakan modul

  • Rancangan Top-Down dengan teknik Sub Goal, program besar dapat dibagi menjadi lebih kecil.
  • Dapat dikerjakan oleh lebih dari satu orang dengan koordinasi yang relatif mudah.
  • Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan kesalahan dapat dilokalisir dalam satu modul.
  • Modifikasi dapat dilakukan, tanpa menggangu program secara keseluruhan.
  • Mempermudah dokumentasi.

Sifat-sifat modul yang baik

  • Fan-In yang tinggi, yaitu makin sering suatu modul dipanggil oleh pengguna, makin tinggi nilai fan-in.
  • Fan-Out yang rendah, makin sedikit tugas yang dilakukan oleh suatu modul makin rendah nilai fan-out. Dengan demikian, makin spesifik tugas yang dikerjakan oleh modul tersebut.
  • Self-Contained, atau memenuhi kebutuhannya sendiri.

Implementasi

  • Implementasi konsep modular dalam bahasa pemrograman dikenal dengan berbagai cara. Pada Pascal tersedia dalam bentuk fungsi dan prosedur, sedangkan pada C cukup dengan fungsi.
  • Implementasi modular programming bisa juga diterapkan pada saat abstraksi tipe data (lebih lanjut bisa dibaca pada arikel di blog ini yang berjudul “Tipe Data”, dimuat pada tanggal 17 Desember 2005).
  • Contoh pembagian program menjadi beberapa subprogram :


Algoritma

Definisi
• Algoritma adalah sekumpulan langkah-langkah terbatas untuk mencari solusi suatu masalah.
• Berasal dari kata algoris dan ritmis. Diperkenalkan oleh Abu Ja’far Muhammad Musa Al-Khowarizmi (780-850) dalam bukunya yang berjudul Kitab Al Jabr Waal Muqobala (Rules of Restoration and Reduction).
• Pada pemrograman, algoritma didefinisikan sebagai metode yang terdiri dari langkah-langkah terstuktur untuk mencari solusi suatu masalah dengan bantuan komputer.

Syarat Algoritma
Menurut Donald E.Knuth sebuah algoritma harus memenuhi persyaratan :
• Finiteness.
Algoritma harus berakhir (terminate) setelah melakukan sejumlah langkah proses.
• Definiteness.
Setiap langkah algoritma harus didefinisikan dengan tepat dan tidak menimbulkan makna ganda(ambiguous).
• Input.
Setiap algoritma memerlukan data sebagai masukan untuk diolah.
• Output.
Setiap algoritma memberikan satu atau lebih hasil keluaran.
• Effectiveness.
Langka-langkah algoritma dikerjakan dalam batas waktu yang wajar.

Jenis Proses Algoritma
Langkah-langkah yang membentuk suatu algoritma dapat dibagi menjadi tiga kelompok proses :
• Sequence process.
Sederetan instruksi dijalankan secara berurutan dari awal hingga akhir.
• Selection process.
Instruksi atau sederetan instruksi dijalankan jika kondisi tertentu terpenuhi.Contohnya adalah siswa dinyatakan lulus mata kuliah jika nilainya minimal 60.
• Iteration process.
Instruksi atau sederetan instruksi dijalankan secra berulang jika kondisi tertentu terpenuhi. Contohnya adalah siswa harus mengambil mata kuliah selama nilainya di bawah 60.

Tahap Pengembangan Algoritma

Penulisan (penyajian) Algoritma
• Tulisan, seperti : Structure English, Pseudocode.
Contoh Algoritma "Penggunaan Kalkulator"
Mulai
.....Nyalakan kalkulator
.....Kosongkan Kalkulator
.....Ulangi
..........Input harga
..........Tekan tombol Plus (+)
..........Sampai semua harga diinput
.....Tampilkan total harga
.....Matikan kalkulator
Selesai

• Gambar, seperti : Flow Chart.
Contoh Algoritma "Penggunaan Kalkulator"





















Referensi :
• Deitel, H.M. and Deitel, P.J. (2001). C HOW TO PROGRAM. 3rd edition. Prentice Hall, NJ.
• Ngoen. Th. S. (2004). Pengantar Algoritma dengan Bahasa C. Penerbit Salemba Teknika.

Wednesday, April 09, 2008

Sekelumit Tentang Evolusi Pengolahan Data

Dalam pengambilan suatu keputusan, kualitas informasi adalah salah satu peranan yang sangat penting. Untuk menghasikan informasi yang berkualitas diperlukan antara lain adanya basis data yang mendukung pengolahan data yang akurat. Sebelum pesatnya perkembangan teknologi informasi, pengolahan data masih dilakukan secara manual, yaitu dengan mencatat kejadian di kertas-kertas. Pencatatan ini menimbulkan kesulitan ketika dilakukan pencarian data, terutama jika data tersimpan dalam banyak tumpukan kertas. Di samping itu, data yang tersimpan dalam dokumen rentan terhadap masalah akses data dan umur dokumen. Seiring dengan mulai diperkenalkannya komputer yang dapat mendukung kegiatan operasional, banyak pengolahan data mulai beralih dari sistem manual ke sistem yang berbasis komputer. Namun pada masa tersebut pengolahan dan penyimpanan data masih menggunakan pendekatan file (file base approach). Salah satu ciri pendekatan ini adalah pendifinisian struktur file secara langsung di setiap program pengolah data.
Meskipun pendekatan file lebih mempermudah pengaksesan data dibandingkan dengan pendekatan manual, namun pendekatan ini masih memiliki banyak kelemahan. Kelemahan tersebut antara lain pengaksesan data yang sulit karena tersebarnya file yang digunakan dan masing-masing tidak ada relasi, memungkinkan terjadinya duplikasi data, ketergantungan data terhadap physical structure dan storage yang didefinisikan dalam program mempersulit perubahan terhadap struktur saat diperlukan, incompatible file formats dapat terjadi karena struktur file dikembangkan pada masing–masing program aplikasi, proses query data yang kurang fleksibel. Hal tersebut di atas berakibat sulitnya pengaksesan data, dan tidak terjaminnya integritas terhadap data, serta beresiko besar terhadap keamanan data.
Berangkat dari kelemahan pendektatan di atas, kemudian mulai berkembang pendekatan database (Database Approach). Database adalah sekumpulan data yang saling terhubung, dapat digunakan secara bersamaan oleh banyak pengguna dan dibentuk untuk dapat menghasilkan informasi yang dibutuhkan oleh organisasi ( Connolly, 2005, p15 ).
Namun demikian, pengaksesan data dalam database akan beresiko menimbulkan masalah juga jika dua pengguna atau lebih mengakses database secara bersamaan dan salah satu melakukan perubahan terhadap data. Hal ini akan dapat menimbulkan adanya data yang tidak konsisten ( inconsistency data ).
Untuk mengatasi adanya kemungkinan inconsistency data, maka dibutuhkan adanya suatu mekanisme yang mengatur jalannya transaksi pengaksesan data yang sama. Mekanisme ini dikenal dengan istilah concurrency control. Concurrency control adalah proses pengaturan operasi–operasi dalam banyak transaksi yang berjalan secara simultan pada database tanpa mengganggu operasi pada transaksi lainnya sehingga dapat menghasilkan data yang konsisten ( Connolly, 2005, p577 ). Terdapat tiga masalah penting yang disebabkan oleh concurrency, yaitu masalah lost-update, masalah uncommitted dependency, dan masalah inconsistent analysis. Masalah lost-update dan uncommitted dependency mengkonsentrasikan pada transaksi yang melakukan perubahan pada database dan adanya transaksi lain yang membaca data tersebut pada saat bersamaan . Namun, transaksi yang hanya membaca database bisa juga memberikan hasil yang tidak akurat jika mereka diijinkan untuk membaca sebagian hasil dari transaksi yang belum selesai melakukan perubahan terhadap data yang sama yang berjalan secara bersamaan mengakses database. Hal ini dikenal sebagai masalah inconsistent analysis.

Friday, December 16, 2005

Pengantar Basis Data

Pengantar Basis Data

Basis Data
Pengertian basis data menurut Connoly dan Begg (2002, p14), “database is a shared collection of logically related data, and a description of this data, designed to meet the information needs of an organization.”. Jadi basis data merupakan sekumpulan data maupun keterangan tentang data, yang secara logis saling berhubungan untuk digunakan bersama, dalam rangka memenuhi kebutuhan informasi dari suatu organisasi.

Database Management System (DBMS)
Mengacu pada Connoly (2002, p16), DBMS adalah suatu perangkat lunak yang bisa digunakan untuk mendefinisikan, membuat, memelihara, dan mengontrol akses ke basis data. DBMS umumnya memiliki fasilitas untuk mendefinisikan basis data (Data Definition Language), dan fasilitas yang dapat mendukung pegolahan data ( Data Manipulation Language).

Siklus Hidup Basis Data ( Database Application Lifecycle)
Tahapan daur hidup aplikasi basisdata (Connolly, Database Systems: A Practical Approach to Design, Implementation, and Management, 2002, p272), meliputi aktivitas-aktivitas utama sebagai berikut :
· Perencanaan Basis Data (Database Planning)
Mengatur dan merencanakan aktivitas-aktivitas dengan mengikuti langkah-langkah dari aplikasi database dan diterapkan seefektif dan seefisien mungkin. Ada tiga masalah pokok yang harus diperhatikan dalam merumuskan strategi sistem informasi (Connoly, 2002, p273) :
- Mengidentifikasikan rencana dan tujuan perusahaan dengan menentukan sistem informasi yang diperlukan
- Mengevaluasi sistem informasi yang ada untuk melihat kelebihan dan kekurangannya.
- Penilaian mengenai peluang IT yang mungkin dapat menghasilkan keuntungan yang kompetitif.

· Definisi Sistem Basis Data (System Definition)
Menjelaskan batasan-batasan untuk aplikasi database, pengguna database, dan area-area aplikasi. Menentukan jangkauan beserta batasan dari aplikasi basisdata, penggunanya, dan area aplikasinya. Sebelum dilakukan perancangan basisdata, amatlah penting untuk mengidentifikasikan batasan dari sistem yang sedang berjalan(ditelusuri), serta bagaimana sistem tersebut berinteraksi dengan bagian lain dalam sistem informasi organisasi (Connolly, 2002, h274).

· Pengumpulan dan Analisa Kebutuhan (requirement collection & analysis)
Proses mengumpulkan dan menganalisa kebutuhan-kebutuhan dari informasi tentang bagian dari perusahaan yang akan dibuat sebuah basis data dan menggunakan informasi ini untuk mengidentifikasikan kebutuhan user dan sistem yang baru (Connolly,2002,p276). Informasi yang dikumpulkan mencakup :
- Deskripsi tentang data yang digunakan
- Keterangan secara lengkap bagaimana data tersebut digunakan
- Kebutuhan tambahan lainnya untuk aplikasi data yang baru

· Desain Basis Data (database design)
Adalah aktifitas untuk merancang basis data yang dapat mendukung operasi dan tujuan perusahaan. Pendekatan yang bias digunakan adalah top-down, bottom-up, inside-out, mixed. Pada pendekatan top-down, terdapat tiga tahap dalam aktifitas perancangan, meliputi conceptual design, logical design, physical design.

· Desain Konseptual Basis Data (conceptual database design)
Langkah awal dalam conceptual database adalah dengan membuat model data secara konseptual dari perusahaan yang brsangkutan. Data tersebut merupakan informasi-informasi mengenai perusahaan. Dalam menentukan model data secara konseptual data yang digunakan tidak termasuk dalam sasaran DBMS, program aplikasi, bahasa pemrograman, dan masalah dalam pembuatan basis data. Dalam conceptual database design data yang ada dikembangkan dengan representasi secara konseptual yang mencakup mengidentifikasi entity, relationship dan atribut yang sangat penting dalam perancangan basis data tersebut.
Desain konseptual bertujuan untuk merepresentasikan kebutuhan informal, deksripsi lengkap, namun tidak bergantung pada kriteria DBMS. Merepresentasikan isi dari database tanpa mengkhawatirkan bagaimana informasi ini diimplementasikan pada sistem. (McGraw Hill, 2003, p160)

· Desain Logikal Basis Data (logical database design)
Desain logikal mentranslasikan skema konseptual yang didefinisikan pada fase sebelumnya ke model data yang sesuai dengan DBMS. Model logikal merepresentasikan data dengan tanpa tergantung dengan fisiknya, meskipun DBMS yang digunakan harus mendukung data model itu. (McGraw Hill, 2003, p161)
Dalam logical database design, model data yang telah diperoleh dalam conceptual database design diubah dalam bentuk logical model dimana data yang ada dipengaruhi oleh model data yang menjadi tujuan basis data (database). Hal ini dilakukan untuk menterjemahkan representasi konseptual ke dalam bentuk struktur logic dalam database. Logical data model merupakan sumber informasi dalam merancang physical database. Logical database design memberikan sarana yang membantu para perancang physical database

· Desain Fisikal Basis Data (Physical database design)
Desain fisikal berupa skema logikal telah lengkap dan detil dari implemetasi fisiknya (organisasi file dan peng-indeks-an) pada DBMS tertentu. Model ini bergantung pada DBMS tertentu yang dipilih dan organisasi fisik data pada sistem itu. (McGraw Hill, 2003 ,p162).
Physical database design dilakukan untuk memutuskan struktur logik secara fisik diimplementasikan ke dalam tujuan database management system (DBMS), para perancang juga harus membuat keputusan mengenai bagaimana basis data (database) tersebut dapat diimplementasikan / diterapkan dalam perusahaan. Oleh karena itu, physical database design harus disesuaikan dengan DBMS yang spesifik.

· Pemilihan DBMS (DBMS selection)
Pemilihan DBMS dilakukan untuk memilih DBMS yang cocok atau sesuai dengan aplikasi basis data. Berikut ini adalah langkah-langkah utama dalam memilih DBMS (Connolly, 2002, p284) :
1. menggambarkan cakupan tugas berdasarkan kebutuhan perusahaan
2. membuat perbandingan mengenai dua atau tiga produk DBMS
3. mengevaluasi produk-produk DBMS tersebut
4. merekomendasikan pemilihan DBMS dan membuat laporan hasil dari evaluasi produk DBMS tersebut.

· Desain Aplikasi (application design)
Rancangan dari user interface dan program aplikasi yang digunakan untuk memproses basis data (Connolly, 2002, p287)

· Prototyping
Membangun suatu model kerja dari aplikasi database (Connolly,2002,p291). Tujuan utama mengembangkan suatu prototipe aplikasi database adalah mengijinkan user untuk menggunakan prototipe untuk mengidentifikasikan corak sistem apakah sistem bekerja dengan baik. Dan jika mungkin meningkatkan corak baru kepada aplikasi database.

· Implementasi (implementation)
Implementasi merupakan realisasi secara fisik dari basis data dan desain aplikasi (Connolly,2002, p292). Pengendalian keamanan integritas untuk aplikasi juga telah diterapkan. Sebagian dari kendali ini telah diterapkan dengan menggunakan DDL, tetapi yang lain mungkin perlu untuk digambarkan di luar dari DDL, sebagai contoh penggunaan yang disediakan DBMS atau kendali sistem operasi.

· Data Conversion & Loading
Pemindahan data yang ada dalam basis data yang baru dan mengubah aplikasi yang sedang berjalan agar dapat digunakan dalam basis data yang baru (Connolly, 2002,p293) langkah ini diperlukan hanya ketika suatu sistem basis data baru sedang menggantikan suatu sistem basis data yang lama.

· Testing
Testing adalah suatu proses melaksanakan progaram aplikasi dengan tujuan menemukan kesalahan (Connoly, 2002, p293). Sebelum diterapkan dalam suatu sistem, basis data harus dilakukan testing terlebih dahulu.

· Operational Maintenance
Suatu proses untuk memonitor dan merawat sistem aplikasi setelah instalasi. Dalam langkah-langkah yang sebelumnya, aplikasi basis data telah secara penuh diterapkan dan diuji. Sistem sekarang pindah kesuatu langkah pemeliharaan yang melibatkan atifitas yang berikut (Connolly, 2002, p293) :
- monitoring performance dari sistem. Jika performance jatuh dibawah suatu tingkatan yang bisa diterima penyetelan atau reorganisasi basis data mungkin diperlukan.
- maintaining dan meningkatkan mutu aplikasi basis data (ketika diperlukan).

CO

World Cup 2010

Sepak bola (World Cup 2010) hanya sebuah aktifitas yg dimainkan di area panjang 100-110m x lebar 64-75m, tetapi magnetnya bisa menghisap rat...