FEEDJIT Live Traffic Feed

Ads 468x60px

Senin, 24 Oktober 2011

DATABASE TERDISTRIBUSI

Database Terdistribusi adalah kumpulan data yang digunakan bersama yang saling terhubung secara logic tetapi tersebar secara fisik pada suatu jaringan computer. sistem database terdistribusi berisi kumpulan site eksekusi transaksi lokal (mengakses data pada satu site) & transaksi global (mengakses data pada site berbeda )






tugas database terdistribusi 1


Basis data terdistribusi : Secara logik keterhubungan dari kumpulan-kumpulan data yang digunakan bersama-sama, dan didistribusikan melalui suatu jaringan komputer.

DBMS Terdistribusi :Sebuah sistem perangkat lunak yang mengatur basis
data terdistribusi dan membuat pendistribusian data
secara transparan.

DDBMS memiliki satu logikal basis data yang dibagi ke dalam beberapa fragment. Dimana setiap fragment disimpan pada satu atau lebih komputer dibawah kontrol dari DBMS yang terpisah , dengan mengkoneksi komputer menggunakan jaringan komunikasi.
Masing- masing site memiliki kemampuan untuk mengakses permintaan pengguna pada data lokal dan juga mampu untuk memproses data yang disimpan pada komputer lain yang terhubung dengan jaringan.
Pengguna mengakses basis data terdistribusi dengan menggunakan dua aplikasi yaitu aplikasi lokal dan aplikasi global, sehingga DDBMS memiliki karakteristik yaitu :

Kumpulan dari data logik yang digunakan bersama-sama
•Data di bagi menjadi beberapa fragment
•Fragment mungkin mempunyai copy ( replika )
•Fragment / replika nya di alokasikan pada yang digunakan
•Setiap site berhubungan dengan jaringan komunikasi
•Data pada masing-masing site dibawah pengawasan DBMS
•DBMS pada masing-masing site dapat mengatasi aplikasi lokal, secara otonomi
•Masing-masing DBMS berpastisipasi paling tidak satu global aplikasi.

Dari definisi tersebut , sistem diharapkan membuat suatu distribusi yang transparan. Basis data terdistribusi terbagi menjadi beberapa fragment yang disimpan di beberapa komputer dan mungkin di replikasi, dan alokasi penyimpanan tidak diketahui pengguna . Adanya Transparansi di dalam basis data terdistribusi agar terlihat sistem ini seperti basis data tersentralisasi. Hal Ini mengacu pada prinsip dasar dari DBMS (Date,1987b). Transparansi memberikan fungsional yang baik untuk pengguna tetapi sayangnya mengakibatkan banyak permasalahan yang timbul dan harus diatasi oleh DDBMS.
Paralel DBMSs

DDBMS memiliki perbedaan dengan paralel DBMS.


Paralel DBMSs ; Sistem manajemen basis data ini menggunakan beberapa prosesor dan disk yang dirancang untuk dijalankan secara paralel , apabila di mungkinkan, selama hal tersebut digunakan untuk memperbaiki kinerja dari DBMS


Sistem DBMS berbasis pada sistem prosesor tunggal dimana sistem prosesor tunggal tidak memiliki kemampuan untuk berkembang, untuk menghitung skala efektifitas dan biaya, keandalan dan kinerja dari sistem. Paralel DBMS di jalankan oleh berbagai multi prosesor . Paralel DBMS menghubungkan beberapa mesin yang berukuran kecil untuk menghasilkan keluaran sebuah mesin yang berukuran besar dengan skalabilitas yang lebih besar dan keandalan dari basis datanya.
Untuk menopang beberapa prosesor dengan akses yang sama pada satu basis data, DBMS paralel harus menyediakan manajemen sumber daya yang dapat diakses bersama. Sumber daya apa yang dapat digunakan bersama, dan bagaimana sumber daya tersebut di implementasikan, mempunyai efek langsung pada kinerja dan skalabilitas dari sistem , hal ini tergantung dari aplikasi atau lingkungan yang digunakan.

Ada tiga arsitektur yang digunakan pada paralel DBMS yaitu :
a. Penggunaan memory bersama ( share memory )
b. Penggunaan disk bersama ( share disk )
c. Penggunaan secara sendiri-sendiri ( share nothing )

Arsitektur pada penggunaan secara sendiri – sendiri ( share nothing ) hampir sama dengan DBMS terdistribusi, namun pendistribusian data pada paralel DBMS hanya berbasis pada kinerja nya saja. Node pada DDBMS adalah merupakan pendistribusian secara geographic, administrasi yang terpisah , dan jaringan komunikasi yang lambat, sedangkan node pada paralel DBMS adalah hubungan dengan komputer yang sama atau site yang sama.

Penggunaan Memori Bersama ( Share Memory ) adalah sebuah arsitektur yang menghubungkan beberapa prosesor di dalam sistem tunggal yang menggunakan memori secara bersama – sama ( gbr 1.3 ). Dikenal dengan SMP (Symmetric Multiprocessing ), metode ini sering digunakan dalam bentuk workstation personal yang mensupport beberapa mikroprosesor dalam paralel dbms, RISC ( Reduced Instruction Set Computer ) yang besar berbasis mesin sampai bentuk mainframe yang besar. Arsitektur ini menghasilkan pengaksesan data yang sangat cepat yang dibatasi oleh beberapa prosesor , tetapi tidak dapat digunakan untuk 64 prosesor dimana jaringan komunikasi menjadi masalah ( terjadinya bottleneck).

Penggunaan Disk Bersama ( Share Disk ) adalah sebuah arsitektur yang mengoptimalkan jalannya suatu aplikasi yang tersentrallisasi dan membutuhkan keberadaan data dan kinerja yang tinggi ( Gbr 1.4 ). Setiap prosesor dapat mengakses langsung semua disk , tetapi prosesor tersebut memiliki memorinya sendiri – sendiri. Seperti halnya penggunaan secara sendiri – sendiri arsitektur ini menghapus masalah pada penggunaan memori bersama tanpa harus mengetahui sebuah basis data di partisi. Arsitektur ini di kenal dengan cluster

Penggunaan Secara sendiri – sendiri ( Share nothing ) ; sering di kenal dengan Massively parallel processing ( MPP ) yaitu arsitektur dari beberapa prosesor di mana setiap prosesor adalah bagian dari sistem yang lengkap , yang memiliki memori dan disk ( Gbr 1.5 ). Basis data ini di partisi untuk semua disk pada masing – masing sistem yang berhubungan dengan basis data dan data di berikan secara transparan untuk semua pengguna yang menggunakan sistem . Arsitektur ini lebih dapat di hitung skalabilitasnya dibandingkan dengan share memory dan dapat dengan mudah mensupport prosesor yang berukuran besar. Kinerja dapat optimal jika data di simpan di lokal dbms.

Paralel teknologi ini biasanya digunakan untuk basis data yang berukuran sangat besar ( terabites ) atau sistem yang memproses ribuan transaksi perdetik. Paralel DBMS dapat menggunakan arsitektur yang diinginkan untuk memperbaiki kinerja yang kompleks untuk mengeksekusi kueri dengan menggunakan paralel scan, join dan teknik sort yang memperbolehkan node dari banyak prosesor untuk menggunakan bersama pemrosesan kerja yang di gunakan.

KEUNTUNGAN DAN KERUGIAN DARI DDBMS


Data dan aplikasi terdistribusi mempunyai kelebihan di bandingkan dengan sistem sentralisasi basis data. Sayangnya , DDBMS ini juga memiliki kelemahan.

KEUNTUNGAN:
• Merefleksikan pada bentuk dari struktur organisasinya
Ada suatu organisasi yang memiliki sub organisasi di lokasi yang tersebar di beberapa tempat,.sehingga basis data yang digunakan pun tersebar sesuai lokasi dari sub organisasi berada.

• Penggunaan bersama dan lokal otonomi
Distribusi secara geografis dari sebuah organisasi dapat terlihat dari data terdistribusinya, pengguna pada masing-masing site dapat mengakses data yang disimpan pada site yang lain. Data dapat dialokasikan dekat dengan pengguna yang biasa menggunakannya pada sebuah site, sehingga pengguna mempunyai kontrol terhadap data dan mereka dapat secara konsekuen memperbaharui dan memiliki kebijakkan untuk data tersebut. DBA global mempunyai tanggung jawab untuk semua sistem. Umumnya sebagian dari tanggung jawab tersebut di serahkan kepada tingkat lokal, sehingga DBA lokal dapat mengatur lokal DBMS secara otonomi.

• Keberadaan data yang ditingkatkan
Pada DBMS yang tersentralisasi kegagalan pada suatu site akan mematikan seluruh operasional DBMS. Namun pada DDBMS kegagalan pada salah satu site, atau kegagalan pada hubungan komunikasi dapat membuat beberapa site tidak dapat di akses, tetapi tidak membuat operasional DBMS tidak dapat dijalankan.

• Keandalan yang ditingkatkan
Sebuah basis data dapat di replikasi ke dalam beberapa fragmen sehingga keberadaanya dapat di simpan di beberapa lokasi juga. Jika terjadi kegagalan dalam pengaksesan data pada suatu site di karenakan jaringan komunikasi terputus maka site yang ingin mengakses data tersebut dapat mengakses pada site yang tidak mengalami kerusakan.

• Kinerja yang ditingkatkan
Sebuah data ditempatkan pada suatu site dimana data tersebut banyak di akses oleh pengguna, dan hal ini mempunyai dampak yang baik untuk paralel DBMS yaitu memiliki kecepatan dalam pengkasesan data yang lebih baik dibandingkan dengan basis data tersentralisasi Selanjutnya, sejak masing-masing site hanya menangani sebagian dari seluruh basis data , mengakibakan perbedaan pada pelayanan CPU dan I/O seperti yang di karakteristikan pada DBMS tersentralisasi.




• Ekonomi
Grosch's Law menyatakan daya listrik dari sebuah komputer di hitung menurut biaya yang dihabiskan dari penggunaan peralatannya, tiga kali biaya peralatan, 9 kali nya dari daya listrik . Sehingga lebih murah jika membuat sebuah sistem yang terdiri dari beberapa mini komputer yang mempunyai daya yang sama jika dibandingkan dengan memiliki satu buah super komputer. Oleh karena itu lebih efektif untuk menambah beberapa workstation untuk sebuah jaringan dibandingkan dengan memperbaharui sistem mainframe. Potensi yang juga menekan biaya yaitu menginstall aplikasi dan menyimpan basis data yang diperlukan secara geografi sehingga mempermudah operasional pada setiap situs.

• Perkembangan modular
Di dalam lingkungan terdistribusi, lebih mudah untuk menangani ekspansi .Site yang baru dapat di tambahkan ke suatu jaringan tanpa mempengaruhi operational dari site - site yang ada. Penambahan ukuran basis data dapat di tangani dengan menambahkan pemrosesan dan daya tampung penyimpanan pada suatu jaringan. Pada DBMS yang tersentralisasi perkembangan akan di ikuti dengan mengubah perangkat keras dan perangkat lunak.


KERUGIAN

• Kompleksitas
Pada distribusi DBMS yang digunakan adalah replikasinya, DBMS yang asli tidak digunakan untuk operasional, hal ini untuk menjaga reliabilitas dari suatu data. Karena yang digunakan replikasinya maka hal ini menimbulkan berbagai macam masalah yang sangat kompleks dimana DBA harus dapat menyediakan pengaksesan dengan cepat , keandalan dan keberadaan dari basis data yang up to date . Jika aplikasi di dalam DBMS yang digunakan tidak dapat menangani hal - hal tersebut maka akan terjadi penurunan pada tingkat kinerja , keandalan dan kerberadaan dari DBMS tersebut, sehingga keuntungan dari DDBMS tidak akan terjadi.

• Biaya
Meningkatnya kekompleksan pada suatu DDBMS berarti biaya untuk perawatan dari DDBMS akan lebih besar dibandingkan dengan DBMS yang tersentralisasi, seperti biaya untuk membuat jaringannya, biaya komunikasi yang berjalan , orang-orang yang ahli dalam penggunaan, pengaturan dan pengawasan dari DDBMS.

• Keamanan
Pada DBMS yang tersentralisasi, pengaksesan data lebih terkontrol. Sedangkan pada DDBMS bukan hanya replikasi data yang harus di kontrol tetapi jaringan juga harus dapat di kontrol keamanannya.

• Pengontrolan Integritas lebih sulit
Kesatuan basis data yang mengacu pada keabsahan dan kekonsistenan dari data yang disimpan. Kesatuan biasanya di ekspresikan pada batasan, dimana berisi aturan untuk basis data yang tidak boleh diubah. Membuat batasan untuk integrity, umumnya memerlukan pengaksesan ke sejumlah data yang sangat besar untuk mendefinisikan batasan tersebut, namun hal ini tidak termasuk di dalam operasional update itu sendiri. Dalam DDBMS, komunikasi dan biaya pemrosesan yang dibutuhkan untuk membuat suatu batasan integrity mungkin tidak diperbolehkan.
PERANCANGAN RELASIONAL BASIS DATA TERDISTRIBUSI

Faktor - faktor yang dianjurkan untuk digunakan pada basis data terdistribusi yaitu :
1. Fragmentasi : Sebuah relasi yang terbagi menjadi beberapa sub-sub relasi yang disebut dengan fragment, sehingga disebut juga distribusi. Ada dua buah fragmentasi yaitu horisontal dan vertikal. Horisontal fragmentasi yaitu subset dari tupel sedangkan vertikal fragmentasi subset dari atribut.
2. Alokasi, setiap fragmen disimpan pada situs dengan distribusi yang optimal.
3. Replikasi, DDBMS dapat membuat suatu copy dari fragmen pada beberapa situs yang berbeda.

Definisi dan alokasi dari fragmen harus berdasarkan pada bagaimana basis data tersebut digunakan.
Perancangan harus berdasarkan kuantitatif dan kualitatif informasi. Kuantitatif informasi digunakan pada alokasi data sedangkan kualitatif informasi digunakan untuk fragmentasi.
Kuantitatif informasi termasuk :
• Seberapa sering aplikasi di jalankan
• Situs mana yang aplikasinya dijalankan
• Kriteria kinerja untuk transaksi dan aplikasi
Kualitatif informasi termasuk transaksi yang dieksekusi pada aplikasi, termasuk pengaksesan relasi, atribut dan tuple , tipe pengaksesan( R atau W ) dan predikat dari operasional.

Definisi dan alokasi dari fragment menggunakan strategi untuk mencapai obyektifitas yang diinginkan :
1. Referensi Lokal
Jika memungkinkan data harus disimpan dekat dengan yang menggunakan. Bila suatu fragmen digunakan di beberapa lokasi , akan menguntungkan jika fragmen data tersebut disimpan di beberapa lokasi juga.
2. Reliabilitas dan Availabilitas yang ditingkatkan
Keandalan dan ketersediaan data ditingkatkan dengan replikasi. Ada salinan lain yang disimpan di lokasi yang lain.
3. Kinerja yang di terima
Alokasi yang tidak baik dapat mengakibatkan bottleneck terjadi, sehingga akan mengakibatkan banyaknya permintaan dari beberapa lokasi yang tidak dapat dilayani dan data yang diminta menjadi tidak up to date menyebabkan kinerja turun.
4. Seimbang antara kapasitas penyimpanan dan biaya
Pertimbangan harus diberikan pada ketersediaan infrastruktur dan biaya untuk penyimpanan di setiap lokasi, sehingga untuk efisiensi dapat digunakan tempat penyimpanan yang tidak mahal.
5. Biaya komunikasi yang minimal
Pertimbangan harus diberikan untuk biaya akses jarak jauh. Biaya akan minimal ketika kebutuhan lokal maksimal atau ketika setiap site menduplikasi data nya sendiri. Bagaimanapun ketika data yang di replikasi telah di update. Maka data yang ter-update tersebut harus diduplikasi ke seluruh site, hal ini yang menyebabkan naiknya biaya komunikasi.






ALOKASI DATA

Ada empat strategis menurut penempatan data : sentralisasi, pembagian partisi, replikasi yang lengkap dan replikasi yang dipilih.

1. Sentralisasi

Strategi ini berisi satu basis data dan DBMS yang disimpan pada satu situs dengan pengguna yang didistribusikan pada jaringan (pemrosesan distribusi). Referensi lokal paling rendah di semua situs, kecuali situs pusat, harus menggunakan jaringan untuk pengaksesan semua data. Hal ini berarti juga biaya komunikasi tinggi.
Keandalan dan keberadaan rendah, kesalahan pada situs pusat akan mempengaruhi semua sistem basis data.

2. Partisi ( Fragmentasi )
Strategi ini mempartisi basis data yang dipisahkan ke dalam fragmen-fragmen, dimana setiap fragmen di alokasikan pada satu site. Jika data yang dilokasikan pada suatu site, dimana data tersebut sering digunakan maka referensi lokal akan meningkat. Namun tidak akan ada replikasi , dan biaya penyimpanan nya rendah, sehingga keandalan dan keberadaannya juga rendah, walaupun pemrosesan distribusi lebih baik dari pada sentralisasi. Ada satu kelebihan pada sentralisasi yaitu dalam hal kehilangan data, yang hilang hanya ada pada site yang bersangkutan dan aslinya masih ada pada basis data pusat. Kinerja harus bagus dan biaya komunikasi rendah jika distribusi di rancang dengan sedemikian rupa..


3. Replikasi yang lengkap
Strategi ini berisi pemeliharaan salinan yang lengkap dari suatu basis data di setiap site. Dimana referensi lokal, keberadaan dan keandalan dan kinerja adalah maksimal. Bagaimanapun biaya penyimpanan dan biaya komunikasi untuk mengupdate besar sekali biayanya. Untuk mengatasi masalah ini, biasanya digunakan snapshot . Snapshot digunakan untuk menyalin data pada waktu yang telah ditentukan. Data yang disalin adalah hasil update per periode , misalkan per minggu atau perjam, sehingga data salinan tersebut tidak selalu up to date. Snapshot juga digunakan untuk mengimplementasikan table view di dalam data terdistribusi untuk memperbaiki waktu yang digunakan untuk kinerja operasional dari suatu basis data.

4. Replikasi yang selektif
Strategi yang merupakan kombinasi antara partisi,replikasi dan sentralisasi. Beberapa item data di partisi untuk mendapatkan referensi lokal yang tinggi dan lainnya, yang digunakan di banyak lokasi dan tidak selalu di update adalah replikasi ;selain dari itu di lakukan sentralisasi. Obyektifitas dari strategi ini untuk mendapatkan semua keuntungan yang dimiliki oleh semua strategi dan bukan kelemahannya. Strategi ini biasa digunakan karena fleksibelitasnya.

FRAGMENTASI

Kenapa harus dilakukan fragmentasi ?
Ada empat alasan untuk fragmentasi :
1. Kebiasaan ; umumnya aplikasi bekerja dengan tabel views dibandingkan dengan semua hubungan data. Oleh karenanya untuk distribusi data , yang cocok digunakan adalah bekerja dengan subset dari sebuah relasi sebagai unit dari distribusi.

2. Efisien ; data disimpan dekat dengan yang menggunakan. Dengan tambahan data yang tidak sering digunakan tidak usah disimpan.

3. Paralel ; dengan fragmen-fragmen tersebut sebagai unit dari suatu distribusi , sebuah transaksi dapat di bagi kedalam beberapa sub queri yang dioperasikan pada fragmen tersebut. Hal ini meningkatkan konkurensi atau paralelisme dalam sistem, sehingga memeperbolehkan transaksi mengeksekusi secara aman dan paralel.

4. Keamanan ; data yang tidak dibutuhkan oleh aplikasi tidak disimpan dan konsukuen tidak boleh di ambil oleh pengguna yang tidak mempunyai otoritas.

Fragmentasi mempunyai dua kelemahan, seperti yang disebutkan sebelumnya :

1. Kinerja; cara kerja dari aplikasi yang membutuhkan data dari beberapa lokasi fragmen di beberapa situs akan berjalan dengan lambat.
2. Integritas; pengawasan inteegritas akan lebih sulit jika data dan fungsional ketergantungan di fragmentasi dan dilokasi pada beberapa situs yang berbeda.

Pembetulan dari fragmentasi

Fragmentasi tidak bisa di buat secara serampangan, ada tiga buah aturan yang harus dilakukan untuk pembuatan fragmentasi yaitu :
1. Kelengkapan ; jika relasi contoh R di dekomposisi ke dalam fragment R1 , R2 ,R3 , … Rn , masing-masing data yang dapat ditemukan pada relasi R harus muncul paling tidak di salah satu fragmen. Aturan ini di perlukan untuk meyakinkan bahwa tidak ada data yang hilang selama fragmentasi
2. Rekonstruksi; Jika memungkinkan untuk mendefinisikan operasional relasi yang akan dibentuk kembali relasi R dari fragmen-fragmen.
Aturan ini untuk meyakinkan bahwa fungsional ketergantungan di perbolehkan .
3. Penguraian; Jika item data di muncul pada fragment Ri , maka tidak boleh muncul di fragmen yang lain. Vertikal fragmentasi diperbolehkan untuk aturan yang satu ini, dimana kunci utama dari atribut harus diulanmg untuk melakukan rekonstruksi. Aturan ini untuk meminimalkan redudansi.

Tipe dari Fragmentasi

Ada dua tipe utama yang dimiliki oleh fragmentasi yaitu horisontal dan vertikal , tetapi ada juga dua tipe fragmentasi lainnya yaitu : mixed dan derived fragmentasi .





1. Horisontal fragmentasi ;

Fragmentasi ini merupakan relasi yang terdiri dari subset sebuah tuple . Sebuah horisontal fragmentasi di hasilkan dari menspesifikasikan predikat yang muncul dari sebuah batasan pada sebuah tuple didalam sebuah relasi. Hal ini di definisikan dengan menggunakan operasi SELECT dari aljabar relasional . Operasi SELECT mengumpulkan tuple yang memiliki kesamaan kepunyaan; sebagai contoh, tuple yang semua nya menggunakan aplikasi yang sama atau pada situs yang sama. Berikan relasi R sebuah horisontal fragmentasi yang didefinisikan :
P ( R )
dimana P adalah sebuah predikat yang berdasarkan atas satu atau lebih atribut didalam suatu relasi.
Contoh : Diasumsikan hanya mempunyai dua tipe properti yaitu tipe flat dan rumah, horisontal fragmentasi dari properti untuk di sewa dari tipe properti dapat di peroleh sebagai berikut :
P1 : tipe = 'Rumah'( properti sewa)
P2; tipe = 'Flat'(properti sewa)
Hasil dari operasi tersebut akan memiliki dua fragmentasi , yang satu terdiri dari tipe yang mempunyai nilai 'Rumah' dan yang satunya yang mempunyai nilai "Flat'.

Fragment P1
Pno Street Area City Pcode Type Rooms Rent Cno Sno Bno
PA14 16 Holl Dee Aber AB75S Rumah 6 650 CO46 SA9 B7
PG21 18 Dell Hynd Glas G12 Rumah 4 500 CO87 SG37 B3

Fragment P2
Pno Street Area City Pcode Type Rooms Rent Cno Sno Bno
PL94 6 Arg Dee Aber AB74S Flat 4 450 CO67 SL41 B5
PG4 8 Law Hynd Glas G50 Flat 4 400 CO70 SG14 B3
PG16 2 Man Part Glas G67 Flat 3 300 CO90 SG14 B3




Fragmentasi seperti ini mempunyai keuntungan jika terjadi transaksi pada beberapa aplikasi yang berbeda dengan Flat ataupun Rumah.

Fragmentasi skema memuaskan aturan pembetulan (Correctness rules) :
1. Kelengkapan ; setiap tuple pada relasi muncul pada fragment
P1 atau P2

2. Rekonstruksi ; relasi Properti sewa dapat di rekonstruksi dari fragmentasi menggunakan operasi Union , yakni :
P1 U P2 = Properti sewa
3. Penguraian ; fragmen di uraikan maka tidak ada tipe properti yang mempunyai tipe flat ataupun rumah.

Terkadang pemilihan dari strategi horisontal fragmentasi terlihat jelas. Bagaimanapun pada kasus yang lain, diperlukan penganalisaan secara detail pada aplikasi. Analisa tersebut termasuk dalam menguji predikat atau mencari kondisi yang digunakan oleh transaksi atau queri pada aplikasi. Predikat dapat berbentuk sederhana (atribut tunggal) ataupun kompleks (banyak atribut). Predikat setiap atribut mungkin mempunyai nilai tunggal ataupun nilai yang banyak. Untuk kasus selanjutnya nilai mungkin diskrit atau mempunyai range.
Fragmentasi mencari group predikat minimal yang dapat digunakan sebagai basis dari fragmentasi skema. Set dari predikat disebut lengkap jika dan hanya jika ada dua tuple pada fragmen yang sama bereferensi pada kemungkinan yang sama oleh beberapa aplikasi . Sebuah predikat dinyatakan relevan jika ada paling tidak satu aplikasi yang dapat mengakses hasil dari fragment yang berbeda.



2. Vertikal Fragmentasi

Adalah relasi yang terdiri dari subset pada atribut
Fragmentasi vertikal ini mengumpulkan atribut yang digunakan oleh beberapa aplikasi. Di definisikan menggunakan operasi PROJECT pada aljabar relasional. Relasi R sebuah vertikal fragmentasi di definisikan :

 a1,a2,…an (R)

dimana a1,a2,…an merupakan atribut dari relasi R
contoh :Aplikasi Payroll untuk PT. Dream Home membutuhkan nomor pokok daari Staff ( Sno) dan Posisi, Sex, DOB,Gaji dan NIN atribut setiap anggota dari staff tersebut; departemen kepegawaian membutuhkan ; Sno,Fname,Lname, Alamat,Tel_no dan Bno atribut, Vertikal fragmentasi dari
staff untuk contoh ini diperlukan sebagai berikut :
S1 =  Sno,posisi,sex,dob,gaji,nin(Staff)
S2 =  Sno,Fname,Lname,Alamat,Tel_no,Bno(Staff)
Akan menghasilkan dua buah fragmen , kedua buah fragmen tersebut berisi kunci utama ( Sno ) untuk memberi kesempatan yang aslinya untuk di rekonstruksi. Keuntungan dari vertikal fragmentasi ini yaitu fragmen-fragmen tersebut dapat disimpan pada situs yang memerlukannya. Sebagai tambahan kinerja yang di tingkatkan, seperti fragmen yang diperkecil di bandingkan dengan yang aslinya.

Fragmentasi ini sesuai dengan skema kepuasan pada aturan pembetulan (Correcness Rules):

1. Kelengkapan ; setiap atribut di dalam relasi staff muncul pada setiap fragmen S1 dan S2

2. Rekonstruksi ; relasi staff dapat di rekonstruksi dari fragmen menggunakan operasi natural join , yakni :
S1 S2 = Staff

3. Penguraian ; fragment akan diuraikan kecuali kunci utama, karena diperlukan untuk rekonstruksi .

Fragment S1
Sno Posisi Sex DOB Salary NIN
SL21 Manager M 1-oct-60 300000 WK44201B
SG37 Snr Ass F 10-nov-65 150000 WL43251C
SG14 Deputy M 24-mar-70 100000 WL22065B
SA9 Assistant F 20-jan-70 90000 WM53218D


Fragment S2
Sno Fname Lname Alamat Tel_no Bno
SL21 John White 19 Taylor London 0171-884-5112 B5
SG37 Ann Beech 81 George Glasgow 0141-848-3345 B3
SG14 David Ford 63 Ashby Glasgow 0141-339-2177 B3
SA9 Marie Howe 2 Elm Abeerdeen B7






3. Campuran Fragmentasi
Fragmentasi ini terdiri dari horisontal fragmentasi setelah itu vertikal fragmentasi, atau vertikal fragmentasi lalu horisontal fragmentasi.
Fragmentasi campuran ini di definisikan menggunakan operasi SELECT dan PROJECT pada aljabar relasional.
Relasi R adalah fragmentasi campuran yang didefinisikan sbb :
P ( a1,a2,…an (R)) atau  a1,a2,…an (P (R))
dimana p adalah predikat berdasarkan satu atau lebih atribut R dan a1,a2,…an adalah atribut dari R

contoh :

Vertikal fragmentasi staff dari aplikasi payroll dan departemen kepegawaian kedalam :
S1 =  Sno,posisi,sex,dob,gaji,nin(Staff)
S2 =  Sno,Fname,Lname,Alamat,Tel_no,Bno(Staff)
Lalu lakukan horisontal fragmentasi pada fragmen S2 menurut nomor cabang:
S21 =  Bno = B3(S2)
S22 =  Bno = B5(S2)
S23 =  Bno = B7(S2)

Fragment S1
Sno Posisi Sex DOB Salary NIN
SL21 Manager M 1-oct-60 300000 WK44201B
SG37 Snr Ass F 10-nov-65 150000 WL43251C
SG14 Deputy M 24-mar-70 100000 WL22065B
SA9 Assistant F 20-jan-70 90000 WM53218D

Fragment S21
Sno Fname Lname Alamat Tel_no Bno
SG37 Ann Beech 81 George Glasgow 0141-848-3345 B3
SG14 David Ford 63 Ashby Glasgow 0141-339-2177 B3

Fragment S22
Sno Fname Lname Alamat Tel_no Bno
SL21 John White 19 Taylor London 0171-884-5112 B5

Fragment S23
Sno Fname Lname Alamat Tel_no Bno
SA9 Marie Howe 2 Elm Abeerdeen B7







Dari fragmentasi tersebut akan menghasilkan tiga buah fragmen yang baru berdasarkan nomor cabang. Fragmentasi tersebut sesuai dengan aturan pembetulan.(Correction rules)

1. Kelengkapan ; Setiap atribut pada relasi staff muncul pada fragmentasi S1 dan S2 dimana setiap tupel akan mencul pada fragmen S1 dan juga fragmen S21 ,S22 dan S23 .

2. Rekonstruksi ; relasi staff dapat di rekonstruksi dari fragmen menggunakan operasi Union dan Natural Join , yakni: S1 (S21 U S22 U S23 ) = Staff

3. Penguraian ; penguraian fragmen ; tidak akan ada Sno yang akan muncul di lebih dari satu cabang dan S1 dan S2 adalah hasil penguraian kecuali untuk keperluan duplikasi kunci utama.


4. Derived Horisontal Fragmentation

Beberapa aplikasi melibatkan dua atau lebih relasi gabungan. Jika relasi disimpan ditempat yang berbeda, mungkin akan memiliki perbedaan yang siginifikan di dalam proses penggabungan tersebut. Di dalam fragmentasi ini akan lebih pasti keberadaan relasi atau fragmen dari relasi di tempat yang sama.
Derived fragmen : horisontal fragmen yang berdasarkan fragmen dari relasi yang utama
Istilah anak akan muncul kepada relasi yang mengandung foreign key dan parent pada relasi yang mengandung primari key. Derived fragmentasi di jabarkan dengan menggunakan operasi semijoin dari aljabar relasional.
Misalkan relasi anak adalah R dari relasi parent adalah S, maka fragmentasi derived digambarkan sebagai berikut :

RI = R Sf L  I  w

Dimana w adalah nomor dari fragmen horisontal yang telah digambarkan pada S dan f adalah atribut join

Contoh :

Suatu perusahan mempunyai aplikasi yang menggabungkan relasi staff dan PropertyForRent secara bersamaan. Untuk contoh ini di asumsikan staff telah terfragmentasi secara horisontal berdasarkan nomor cabang. Jadi data yang berhubungan dengan cabang disimpan di tempat :

S3 =  Bno = B3(Stsff)
S4 =  Bno = B5(Staff)
S5 =  Bno = B7(Staff)


Diasumsikan bahwa properti PG4 diatur oleh SG14. Ini seharusnya berguna untukmenyimpan data propetri yang menggunakan strategi fragmentasi sama. Ini di peroleh dengan menggunakan derived fragmentasi untuk menfragmentasi secara horisontal relasi PropertiForRent berdasarkan nomor cabang :

PI = PropertiForRent staffno Sf 3  I  5

Menghasilkan 3 fragmen ( P3,P4 dan P5) . satu terdiri dari proreprti yang diatur oleh staff dengan nomor cabang B3 (P3), yang satunya terdiri dari properti yang diatur oleh staf dengan nomor cabang B5 ( P5) dan yangterakhir terdiri dari properti yang diatur oleh staff dengna nomro cabang B7 (P7) . Akan mudah dilihat skema fragmentasi ini sesuai dengan peraturan fragmentasi.


Fragment P3
Pno Street City Pcode Type Rooms Rent Cno Sno
PG4 6Law Glas G11 Flat 3 350 CO40 SG149
PG36 2 Mann Glas G32 Flat 3 375 C093 SG37
PG21 18 Dell Glas G12 House 4 500 CO87 SG37
PG16 5 Nov Glas G12X Flat 4 450 C093 SG14

Fragment P4
Pno Street City Pcode Type Rooms Rent Cno Sno
PL94 6 Arg Lon NW1 Flat 4 400 CO87 SL41

Fragment P5
Pno Street City Pcode Type Rooms Rent Cno Sno
PA14 16Holl Aber AB74S House 6 650 CO46 SA9






5. Tidak Terdapat Fragmentasi
Strategi final adalah tidak memfragmentasikan relasi. Sebagai contoh, relasi cabang hanya mengandung sejumlah update secara berkala . Daripada mencoba untuk menfragmentasikan relasi secara horisontal, misalnya nomor cabang akal lebih masuk akal lagi untuk membiarkan relasi keseluruhan dan mereplikasi relasi cabang pada setiap sisinya.


http://jati.staff.unisbank.ac.id/2011/10/17/tugas-database-terdistribusi/
Reade more >>

Jumat, 14 Oktober 2011

Kriptografi dengan Chosen-Plaintext Attack

Beberapa waktu yang lalu saya menemukan sebuah website dengan vulnerability SQL injection. Sengaja nama website tersebut tidak saya publikasikan, karena artikel ini bukan tentang SQL injection melainkan bagaimana memecahkan enkripsi.

Berbeda dengan website lainnya, website tersebut menyimpan password dalam tabel user tidak dalam bentuk one-way hash (contohnya MD5 atau SHA1), melainkan dalam bentuk ter-enkripsi. Enkripsi yang dipakai juga unik karena tidak memakai algoritma enkripsi yang sudah dikenal luas.


Dalam kasus tersebut saya ingin melakukan privilege-escalation dari user dengan hak akses biasa menjadi user dengan hak akses penuh. Sebagai user biasa saya bisa melakukan SQLinjection untuk membaca username dan password dari tabel user. Dengan teknik tersebut saya mendapatkan encrypted password dari seorang user yang memiliki hak admin. Namun saya tidak bisa memakai password itu untuk menjadi admin sebelum saya mengerti pesan tersembunyi dalam chiphertext tersebut.

Analisa Ciphertext

Saya mencoba menggali informasi lebih dalam lagi tentang enkripsi unik di website tersebut. Saya mulai mengumpulkan banyak ciphertext dari user-user lainnya. Berikut beberapa ciphertext yang saya kumpulkan:

* 804881451156416021528145
* 9436353935332546555225378546953924846491
* 11763273927622732276427712808233523172328227

Ada beberapa poin penting yang saya dapatkan dari pengumpulan ciphertext tersebut:

* Panjang ciphertext bervariasi

Panjang ciphertext yangg bervariasi membuat saya yakin bahwa itu bukan fungsi hash, karena ciri khas fungsi hash adalah panjang hash yang selalu tetap. Panjang ciphertext yang bervariasi kemgungkinan besar tergantung dari panjang atau pendeknya password user tersebut. Nanti saya akan coba konfirmasi hipotesa ini dengan mengubah password user biasa yang saya pakai.

* Ciphertext hanya terdiri dari angka

Ciphertext yang semua berupa angka membuat saya curiga bahwa ini adalah kode, semacam kode ASCII namun sudah dikalkulasi dengan formula matematis tertentu.

Chosen-Plaintext Attack

Chosen-Plaintext attack adalah salah satu cara “code breaking” (cryptanalysis) dengan cara membandingkan dan menganalisa contoh plaintext dan ciphertextnya. Dalam chosen plaintext attack, code breaker memiliki kebebasan untuk menentukan plaintext yang diiginkannya.

Untuk mendapatkan contoh plaintext dan ciphertextnya, saya melakukan langkah berikut ini setelah login sebagai seorang user biasa:

1. Ubah Password
2. Lihat ciphertext dari tabel user dengan SQLinjection

Pertama saya ubah password menjadi ‘d’, kemudian saya lihat ciphertext untuk plaintext ‘d’. Saya ulangi langkah itu dengan contoh plaintext yang lain berkali-kali.

Apa saja plaintext yang saya pilih? Berikut chosen-plaintext dan ciphertextnya yang saya pilih:
Plaintext Ciphertext
d 92254325
dd 831214121412
ddd 6180128012807280
dddd 15013601660186017601
abcd1234 433034273428242944308379538023819382

Perhatikan bahwa panjang ciphertext tergantung dari panjang plaintext. Plaintext sepanjang 1 karakter, ciphertext panjangnya 8 digit. Setiap penambahan satu karakter plaintext, ciphertext bertambah 4 digit.

Saya sengaja memilih plaintext berurutan (d,dd,ddd,dddd) untuk melihat apa ada pola yang muncul. Perhatikan pada plaintext “dd”a, ciphertextnya adalah 831214121412, terlihat pola berulang pada angka 412 sebanyak 2x. Dalam ciphertext ini saya menyimpulkan bahwa 412 adalah kode untuk karakter ‘d’.

Untuk plaintext “ddd”, ciphertextnya adalah 6180128012807280, terlihat pola berulang pada angka 280 sebanyak 3 kali. Dalam ciphertext ini saya menyimpulkan bahwa 280 adalah kode untuk karakter ‘d’.

Begitu juga pada plaintext “dddd”, ciphertextnya adalah 15013601660186017601, dengan pola berulang pada angka 601 sebanyak 4 kali. Dalam ciphertext ini, saya menyimpulkan bahwa 601 adalah kode untuk karakter ‘d’.

Ingat bahwa untuk setiap penambahan satu karakter plaintext membuat ciphertext bertambah 4 digit. Ternyata 4 digit tersebut adalah satu digit apapun diikuti dengan 3 digit kode karakter. Chosen plaintext dalam contoh sebelumnya saya pecah-pecah menjadi kelompok 4 digit dipisahkan dengan karakter ‘#’ dan dari 4 digit tersebut saya pecah dua menjadi 1 digit dan 3 digit dengan karakter ‘-’.
Plaintext Ciphertext Kode
d 9-225#4-325 325 = ‘d’
dd 8-312#1-412#1-412 412 = ‘d’
ddd 6-180#1-280#1-280#7-280 280 = ‘d’
dddd 1-501#3-601#6-601#8-601#7-601 601 = ‘d’

Oke sampai disini saya sudah mendapatkan titik terang. Saya sudah mengetahui komposisi dan posisi tiap karakter pada plaintext ketika dipetakan pada ciphertext. Tapi masih ada yang belum fjelas, dalam contoh tersebut kode untuk krakter ‘d’ ternyata berbeda-beda, pada contoh pertama kodenya adalah 325, pada contoh lain kode untuk ‘d’ adalah 412, 280 dan 601.

Kini saya harus mengetahui bagasimana hubungan antara kode yang berurutan, untuk itu saya memilih plaintext “abcd1234″ dengan ciphertext 433034273428242944308379538023819382. Mari kita pecah ciphertext tersebut menjadi kelompok 4 digit seperti tabel di atas.

4-330#3-427#3-428#2-429#4-430#8-379#5-380#2-381#9-382

Dari pengelompokan tersebut kita bisa simpulkan bahwa:

427 = ‘a’, 428 = ‘b’, 429 = ‘c’, 430 = ‘d’, 379 = ’1′, 380 = ’2′, 381=’3′, 382=’4′

Perhatikan bahwa kode-kode tersebut sengaja saya pilih berurut ‘a’->’b'->’c'->’d’ dan ternyata ciphertextnya pun ikut berurut 427->428->429->430. Begitu juga untuk ’1′->’2′->’3′->’4′, ciphertextnya juga berurut 379->380->381->382. Saya mencurigai bahwa enkripsi ini memakai kode ASCII karena memang kode ASCII untuk ‘abcd’ dan ’1234′ berurutan.Kode ASCII untuk ‘a’=97, ‘b’=98,’c'=99,’d'=100,’1′=49,’2′=50,’3′=51,’4′=52.

Terlihat ada jarak yang cukup jauh antara kode ASCII dan kode pada ciphertext. Contohnya ‘a’ dengan ASCII 97, dalam ciphertext dikodekan dengan 427, selisihnya 427-97 adalah 330. Begitu juga dengan ’1′ dengan ASCII 49, dalam ciphertext dikodekan menjadi 379, dengan selisih 379-49 adalah 330. Ternyata kalau dilihat semua kode pada ciphertext juga bherjarak 330 dengan kode ASCII. Pertanyaannya, darimana angka 330 ini muncul?

Mari kita lihat sekali lagi ciphertext dari ‘abcd1234′ (setelah dikelompokkan 4 digit):

4-330#3-427#3-428#2-429#4-430#8-379#5-380#2-381#9-382

Adakah angka 330 dalam ciphertext tersebut? Aha, ternyata ada! Ingat bahwa plaintext satu karakter, ciphertextnya adalah 8 digit, padahal tiap karakter dikodekan dalam 4 digit, jadi ada kelebihan 4 digit. Ternyata pada kelompok 4 digit pertama mengandung offset dengan kode ASCII, yaitu pada digit ke-2 hingga ke-4.

Jadi sekarang misteri enkripsi ini terpecahkan. Mari kita coba dekrip contoh ciphertext yang saya kumpulkan di awal:

* 804881451156416021528145

Pertama kita kelompokkan menjadi kelompok 4 digit: 8-048#8-145#1-156#4-160#2-152#8-145. Kelompok 4 digit pertama 8048 menunjukkan offset yaitu 048. Kelompok 4 digit kedua, 8145 menunjukkan kode karakter pertama adalah 145, dikonversi ke kode ASCII menjadi 145-048=97. ASCII 97 ini adalah ‘a’. Jadi kita temukan karakter pertaama ‘a’. Berikutnya, 156-48=108, yaitu kode untuk ‘l’. Berikutnya, 160-48=112, yaitu kode untuk ‘p’. Berikutnya 152-48=104, yaitu kode untuk ‘h’. Berikutnya 145, sama dengan karakter pertama, ‘a’. Jadi hasil dekripsinya adalah ‘alpha’.

* 9436353935332546555225378546953924846491

Kita kelompokkan menjadi kelompok 4 digit: 9-436#3-539#3-533#2-546#5-552#2-537#8-546#9-539#2-484#6-491. Karakter pertama: 539-436=103=’g’. Karakter ke-2: 533-436=97=’a’. Karakter ke-3: 546-436=110=’n’. Karakter ke-4: 552-436=116=’t’. Karakter ke-5: 537-436=110=’e’. Karakter ke-6 sama dengan ke-3, ‘n’. Karakter ke-7 sama dengan karakter ke-1, ‘g’. Karakter ke-8: 484-436=48=’0′. Karakter ke-9: 491-436=55=’7′. Jadi hasil dekripsinya adalah ‘ganteng07′.

Pada akhirnya dengan mengetahui teknik enkripsi yang dipakai, saya berhasil mendapatkan password seseorang dengan hak administrator. Tidak lama kemudian GAME OVER, webshell uploaded :)

Kesimpulan

Pelajaran yang bisa diambil dari kasus tersebut adalah bahwa membuat algoritma kriptografi yang kuat tidaklah mudash, jangan pernah memakai enkripsi buatan sendiri, walaupun algoritmanya anda rahasiakan. Selalu gunakan algoritma enkripsi terbuka yang sudah teruji oleh para ahli.

Sedangkan untuk password, sebaiknya jangan gunakan enkripsi, tapi gunakan one-way hash function yang kuat seperti SHA1. Enkripsi tidak cocok dipakai untuk menyimpan password karena ketika terjadi compromised, maka semua password yang ada di tabel akan bisa diambil attacker dengan cara menjalankan rutin dekripsi yang pasti tersedia di salah satu file script seperti PHP pada web tersebut.

Walaupun algoritma dekripsinya anda rahasiakan, suatu saat ketika terjadi compromised, seorang attacker akan bisa melakukan dekripsi dengan membaca source code php untuk men-dekrip password. Biasanya rutin dekripsinya tidak jauh dari file php yang terkait dengan halaman login.
Reade more >>

Advertisement