Jadi ingin ngebahas lebih lanjut :

ID pada prinsipnya dapat dihasilkan secara
automatis dan user entry. 
Use entry memiliki keunggulan :
1. id representatif => bermakna bagi manusia

kekurangganya :
1. tidak scalable
bagaimana mencegah 2 user memasukan sebuah id yang
sama untuk 2 item yang beda. Bisa tapi itu boros
komunikasi dan boros proses.
2. bergantung pada mental model user
3. ada kecenderungan boros tempat

Automatis generated id dapat dibagi menjadi beberapa
yaitu :
1. auto number
2. id dibentuk berdasarkan aturan tertentu
3. string acak sepanjang 32 karakter

Keunggulan auto number :
1. mudah dibuat
2. murah
3. irit tempat berarti biaya join dapat ditekan.
4. tidak menyebabkan pagefault (jarang)

Kekuranggannya :
1. menyebabkan disk contention dan biasanya
menyebabkan  sistem berbasis RAID jadi tidak berfungsi
dengan optimal. RAID = redudant array of independent
disks. Sebuah sistem fault tolerance dengan menyebar
data ke beberapa disk. auto number tidak bisa membuat
data tersebar ke beberapa disk. Kalopun bisa ongkosnya
muahal.

2. rentan terhadap serangan berurut (sequence attack).

Contoh kita punya tabel tapesan ( pesanid autonumber,
owner varchar(30))
Field lain diabaikan. Untuk mendapatkan pesan yang
ditujukan untuk oranglain kita cukup maju mundurkan
pesanid yang kita ketahui. Bisa diperoleh pesan untuk
orang lain.

3. tidak representatif 
4. dapat menyebabkan bottleneck pada sistem database
tersebar. 1 database gigantic yang ada datanya
dikelola di beberapa server. Server yang menghasilkan
autogenerated id akan mengalami workload jauh lebih
besar.


ID Dibentuk berdasarkan aturan sebagai contoh nim saya

13596072 1= s1 3 teknik industri 5 teknik informatika
96 nomor angkatan 072 nomor urut.

ID dibentuk berdasarkan aturan tertentu memiliki
keuntungan :
1. representatif
2. mudah dibuat 
3. murah
4. cukup tahan terhadap disk contention (RAID bisa
dipakai secara optimal)
5. scalable di multiserver
6. biaya join menegah (tidak terlalu boros tempat
biasanya dibanding pake string acak 32 karakter)

Kekurangganya 
1. aturan pembuatanya sulit diubah sekalinya sistem
dipakai. Sebagai contoh diatas bagaimana jika
fakultasnya berkembang lebih dari 10 sementara tempat
yang disediakan untuk fakultas cuman 1 digit.

2. tidak tahan terhadap serangan berurut. tinggal
cobanya aturannya

string acak 32 karakter unggul dalam 
1. keamanan 
serangan berurut tidak bisa diterapkan (baca muahal
muahal muahal)

2. sangat scalable baik scale up dan scale out. Scale
up berarti penambahan disk pada raid tinggal plug and
play aja. sedang scale out berarti penambahan server
baru juga tinggal plug and play.

3. kebal perubahan aturan (la wong acak)

kekurangan :
1. boros tempat
2. sering menyebabkan page fault. Page fault adalah
sebuah kejadian dimana blok penyimpan data telah penuh
sehingga harus dialokasikan block baru. Proses alokasi
ini mahal.
3. proses join mahal karena ukuran index membesar.
4. tidak representatif

dengan pengetahuan di atas coba jawab pertanyaan saya
:
kapan masing-masing item dipakai ?

> 2. membuat table ID generator
> contoh taIDGen ( namatable varchar(128), nomor int,
> primary key (namatable))
> 
> untuk menggunakannya gunakan cara berikut
> lock taidgen
> 
> select nomor+1 as nomor2 from taidgen
> where namatable='nama table'
> 
> update taidgen set nomor=nomor+1  
> where namatable='nama table'
> 
> commit;
> 
> releaselock taidgen.

Cara ini menyebabkan konkurensi agak rendah. Cara yang
lebih baik :

 select nomor+1 as nomor2 from taidgen
 where namatable='nama table  (holdlock)
 
 update taidgen set nomor=nomor+1  
 where namatable='nama table'
 
 commit;

kedua cara diatas hanya berlaku untuk SQL server.

Cara pertama menyebabkan seluruh table dilock sedang
cara kedua hanya record yang akan dipakai saja yang
dilock.
 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


Wahana Programmer Groups Links

<*> Untuk mengunjungi sponsor milis ini, klik link berikut:
    http://wahanaprogrammer.net

<*> Untuk menghubungi owner milis ini, kirim email ke:
    [EMAIL PROTECTED]

<*> Konsultasi pemrogramman bisa chat disini:
    Yahoo! Messenger: wahanaprogrammer
 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/Programmer-VB/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Kirim email ke