menu

Thursday, September 15, 2011

Database Xampp, InnoDB, Heap dan MyIsam

XAMPP
XAMPP merupakan tool yang menyediakan paket perangkat lunak ke dalam satu buah paket. Dengan menginstall XAMPP maka tidak perlu lagi melakukan instalasi dan konfigurasi web server Apache, PHP dan MySQL secara manual. XAMPP akan menginstalasi dan mengkonfigurasikannya secara otomatis untuk anda atau auto konfigurasi.

Xampp sendiri singkatan dari :
X berarti cross platform
A berarti Apache HTTP Sever
M berarti MySQL
P berarti PHP
P berarti Perl


Mengenal bagian XAMPP yang biasa digunakan pada umumnya :
  • htdoc adalah folder tempat meletakkan berkas-berkas yang akan dijalankan, seperti berkas PHP, HTML dan script lain.
  • phpMyAdmin merupakan bagian untuk mengelola basis data MySQL yang ada dikomputer. Untuk membukanya, buka browser lalu ketikkan alamat http://localhost/phpMyAdmin, maka akan muncul halaman phpMyAdmin.
  • Kontrol Panel yang berfungsi untuk mengelola layanan (service) XAMPP. Seperti menghentikan (stop) layanan, ataupun memulai (start).

InnoDB
Innodb adalah jenis storage engine MYSQL yang di gunakan untuk menyimpan data yang sangat besar, lebih dari MYISAM. Tapi INNODB juga punya kekurangan yaitu membutuhkan Resource Hardware yang lebih tinggi.

Beberapa fasilitas yang bisa dilakukan oleh Innodb diantaranya :
Cascade On Delete : fasilitas untuk melakukan delete ketika nilai pada reference di hapus
Sedangkan Cascade on Update : fasilitas yang melakukan update otomatis pada table yang mengacu ke tabel tersebut

Tipe tabel InnoDB merupakan tipe tabel MySQL yang mendukung proses transaksi. Tipe ini memiliki beberapa keunggulan, antara lain:

a. Mendukung transaksi antar tabel.
b. Mendukung row-level-locking.
c. Mendukung Foreign-Key Constraints.
d. Crash recovery.

HEAP

Heap adalah sebuah binary tree dengan ketentuan sebagai berikut :
Tree harus complete binary tree
Semua level tree mempunyai simpul maksimum kecuali pada level terakhir.
Pada level terakhir, node tersusun dari kiri ke kanan tanpa ada yang dilewati.

Perbandingan nilai suatu node dengan nilai node child-nya mempunyai ketentuan berdasarkan jenis
heap, diantaranya :
Max Heap mempunyai ketentuan bahwa nilai suatu node lebih besar atau sama dengan ( >=
) dari nilai childnya.
Min Heap mempunyai ketentuan bahwa nilai suatu node lebih kecil atau sama dengan ( <= )
dari nilai childnya.

Contoh penggunaan heap adalah pada persoalan yang mempertahankan antrian prioritas (priority
queue). Dalam antrian prioritas, elemen yang dihapus adalah elemen yang mempunyai prioritas
terbesar (atau terkecil, tergantung keperluan), dan elemen inilah yang selalu terletak di akar (root).
Suatu heap dapat sewaktu-waktu berubah baik itu penambahan elemen (insert) dan penghapusan
elemen (delete).
Ada beberapa operasi yang dapat terjadi di sebuah heap, yaitu :
1. Reorganisasi Heap (mengatur ulang heap).
2. Membantuk Heap (mengatur binary tree agar menjadi heap)
3. Penyisipan Heap (menyisipkan node baru)
4. Penghapusan Heap (menghapus node root)
5. Pengurutan Heap (Heap sort)

1. Reorganisasi Heap
Algoritma heap semuanya bekerja dengan prinsip bahwa modifikasi nilai prioritas pada suatu
simpul dapat melanggar kondisi heap. Bila kondisi heap dilanggar, maka heap harus diorganisasi
kembali.
Sebagai contoh kita gunakan pada heap maksimum. Ketika nilai/prioritas suatu node merubah,
maka ada 2 kemungkinan yang terjadi yaitu :
Nilai prioritas node bertambah sehingga nilai prioritasnya lebih besar dari parentnya, maka
lakukan langkah berikut :
a. Tukarkan nilai prioritas node tersebut dengan nilai prioritas parent-nya.
b. Ulangi langkah a, sampai ditemukan posisi yang tepat (memenuhi kondisi heap)
Proses ini disebut dengan proses sift-up.
Nilai prioritas node berkurang sehingga menjadi lebih kecil dari prioritas di antara node
child-nya, maka yang harus dilakukan adalah :
a. Tukarkan nilai prioritas simpul yang berubah dengan nilai prioritas dari child yang
mempunyai prioritas terbesar.
b. Ulangi langkah a, sampai ditemukan posisi yang tepat (memenuhi kondisi heap)
Proses ini disebut dengan proses sift-down.

2. Pembentukan Heap
Pada mulanya jika suatu complete binary tree memiliki prioritas antrian secara acak, maka
langkah yang harus dilakukan agar binary tree tersebut dapat disebut sebagai heap adalah dengan
melakukan proses sift_down dari node bernomor tengah (banyaknode/2 atau N/2), menurun sampai
node pertama

3. Penyisipan Heap (Insert) Penyisipan heap dilakukan ketika ada sebuah elemen baru diinsertkan.
Algoritma untuk penyisipan data adalah :
Simpan elemen baru tersebut setelah data paling akhir (tree dengan level paling bawah dan
pada posisi sebelah kanan dari data terakhir atau jika level telah penuh, maka simpan data
baru tersebut dalam level baru).
Lakukan reorganisasi heap pada node baru tersebut. Proses yang biasanya dipakai adalah
proses sift up.
Banyak simpul ditambah 1
4. Penghapusan Heap (Delete) Proses penghapusan dilakukan ketika root suatu tree diambil.
Algoritma penghapusan heap adalah :
Ambil Nilai Heap
Ambil nilai prioritas pada node terakhir, dan dipakai sebagai prioritas root.
Lakukan proses reorganisasi heap pada root. Umumnya proses yang dilakukan adalah
proses sift down.
Banyak simpul dikurang 1
5. Pengurutan Heap (Heap Sort) Pengurutan heap dapat dilakukan dengan algoritma seperti di
bawah ini :
a. Buat Heap Maksimum
b. Jika N lebih besar dari 1 maka tukarkan Nilai/Prioritas root dengan prioritas simpul
terakhir (simpul ke-N) tetapi jika N sama dengan 1 maka ambil nilai yang ada di root.
c. Kemudian nilai banyak simpul (N) dikurangi 1.
d. Jika N > 1 maka lakukan reorganisasi heap yaitu proses sift down terhadap root.
e. Lakukan langkah b sampai d sampai simpul habis (N=0).

Tabel dengan tipe HEAP tidak menyimpan datanya di hardisk, tetapi menyimpan di
RAM (memori). Tipe tabel ini biasanya digunakan sebagai tabel sementara
(temporary). Tabel secara otomatis akan dihapus (hilang) dari MySQL saat koneksi
ke server diputus atau server MySQL dimatikan

MyISAM
Tipe tabel MyISAM merupakan tipe tabel yang sederhana, stabil dan mudah digunakan.
Jika kita akan menyimpan data sederhana yang tidak terlalu rumit, maka gunakanlah tipe tabel ini.
Kelebihan utama MyISAM adalah kecepatan dan kestabilannya. Jika kita memilih tipe tabel MyISAM, maka MySQL secara otomatis akan menentukan salah satu dari tiga jenis tabel MyISAM, yaitu :

a. MyISAM static. Jenis ini digunakan ketika semua kolom dalam tabel didefinisikan dengan ukuran yang pasti (fixed). Dengan kata lain, tidak ada kolom yang memiliki tipe seperti VARCHAR, TEXT dan BLOB. Karena sifatnya yang fixed, maka jenis ini akan lebih cepat, aman dan stabil.
b. MyISAM dymanic. Jenis ini digunakan ketika terdapat kolom dengan tipe yang dinamis, seperti tipe kolom VARCHAR. Keuntungan utama dari jenis ini adalah ukuran yang dinamis. Jadi sifatnya lebih efektif karena ukuran data (file) menyesuaikan isi dari masing- masing kolom (field).
c. MyISAM Compressed. Kedua jenis MyISAM, static dan dynamic dapatdikompresi menjadi satu jenis yaitu MyISAM Compressed dengan perintah myisamchk. Tentunya hasilnya lebih kecil dari segi ukuran. Tabel yang terkompres tidak dapat dikenakan operasi seperti INSERT, UPDATE dan DELETE.

MyISAM vs InnoDB
Dua jenis mesin utama penyimpanan tabel untuk database MySQL adalah InnoDB dan MyISAM. Berikut ringkasan perbedaan fitur dan kinerja:

1. InnoDB lebih baru sementara MyISAM lebih tua.
2. InnoDB lebih kompleks, sementara MyISAM lebih sederhana.
3. InnoDB semakin ketat dalam integritas data sementara MyISAM longgar.
4.InnoDB menerapkan tingkat baris kunci untuk memasukkan dan meng-update baris sementara MyISAM menerapkan tingkat kunci tabel.
5. InnoDB memiliki transaksi sementara MyISAM tidak.
6. InnoDB memiliki kunci asing dan hubungan contraints sementara MyISAM tidak.
7. InnoDB memiliki crash pemulihan lebih baik sementara MyISAM yang miskin memulihkan integritas data pada sistem crash.
8. MyISAM memiliki indeks pencarian teks penuh (full text search) sementara InnoDB tidak.

Mengingat perbedaan-perbedaan, InnoDB dan MyISAM memiliki kelebihan dan kekurangan
mereka yang unik terhadap satu sama lain. Mereka masing-masing lebih cocok dalam beberapa skenario dari yang lain.

Keuntungan dari InnoDB
1. InnoDB harus digunakan di mana integritas data lebih prioritas.
2. Lebih cepat dalam menulis-intensif (penyisipan, update) tabel karena menggunakan tingkat penguncian baris dan hanya tahan perubahan pada baris yang sama yang sedang dimasukkan atau diperbaharui.

Kekurangan dari InnoDB

1. Karena InnoDB harus menjaga hubungan yang berbeda antara tabel, database administrator
dan pencipta skema harus mengambil lebih banyak waktu dalam mendesain model data yang lebih kompleks daripada MyISAM.
2. Mengkonsumsi sumber daya sistem yang lebih seperti RAM. Direkomendasikan bahwa
mesin InnoDB dimatikan jika tidak perlu substansial untuk itu setelah instalasi MySQL.
3. Tidak-pengindeksan teks penuh.

Keuntungan MyISAM
1. Sederhana untuk merancang dan membuat, sehingga lebih baik untuk pemula. Jangan
khawatir tentang hubungan luar negeri antara tabel.
2. Lebih cepat dari InnoDB pada keseluruhan sebagai akibat dari struktur sederhana
sehingga jauh lebih sedikit biaya sumber daya server.
3. Pengindeksan teks lengkap.
4. Sangat baik untuk membaca-intensif (select) tabel.

Kekurangan dari MyISAM

1. Tidak ada integritas data (misalnya kendala hubungan), yang kemudian datang tanggung jawab dan overhead dari para administrator database dan pengembang aplikasi.
2. Tidak mendukung transaksi yang penting dalam aplikasi perbankan.
3. Lebih lambat dari InnoDB untuk tabel yang sering dimasukkan atau diperbaharui, karena seluruh tabel terkunci untuk memasukkan atau memperbarui.

Perbandingan tersebut cukup sederhana. InnoDB lebih cocok untuk data situasi kritis yang membutuhkan menyisipkan sering dan update.
MyISAM, di sisi lain, melakukan yang lebih baik dengan aplikasi yang tidak cukup bergantung
pada integritas data dan kebanyakan hanya memilih dan menampilkan data.

No comments:

Post a Comment

Entri Populer