Kamis, 27 Januari 2011

Laporan Dedicated Router-Diagnosa WAN

Laporan Dedicated-Nur Annisa
Rabu, 26 Januari 2011

PRA KBM Admin Server-Proxy Squid


Proxy adalah aplikasi berbasis web yang bertujuan untuk bandwidth accelerator atau penghematan bandwidth, meningkatkan keamanan dan menambah kecepatan web service. Proxy server adalah sebuah komputer atau program komputer yang dapat bertindak sebagai komputer lainnya untuk melakukan request terhadap content dari luar. Untuk pengamanan, biasanya kebanyakan orang akan menggunakan proxy dengan aplikasi squid.


Proxy Server bertindak sebagai gateway terhadap dunia ini Internet untuk setiap komputer klien. Proxy server tidak terlihat oleh komputer klien: seorang pengguna yang berinteraksi dengan Internet melalui sebuah proxy server tidak akan mengetahui bahwa sebuah proxy server sedang menangani request yang dilakukannya. Web server yang menerima request dari proxy server akan menginterpretasikan request-request tersebut seolah-olah request itu datang secara langsung dari komputer klien, bukan dari proxy server.

Proxy server juga dapat digunakan untuk mengamankan jaringan pribadi yang dihubungkan ke sebuah jaringan publik (seperti halnya Internet). Proxy server memiliki lebih banyak fungsi daripada router yang memiliki fitur packet filtering karena memang proxy server beroperasi pada level yang lebih tinggi dan memiliki kontrol yang lebih menyeluruh terhadap akses jaringan. Proxy server yang berfungsi sebagai sebuah “agen keamanan” untuk sebuah jaringan pribadi, umumnya dikenal sebagai firewall.

Squid adalah aplikasi linux open source yang digunakan untuk proxy server. Squid memiliki banyak fungsi, mulai dari mempercepat server web dengan melakukan caching permintaan yang berulang-ulang, caching DNS, caching situs web, dan caching pencarian komputer di dalam jaringan untuk sekelompok komputer yang menggunakan sumber daya jaringan yang sama, pengontrolan jadwal koneksi, dan meningkatkan keamanan dengan tool acl (access control list).

Caching merupakan sebuah cara untuk menyimpan objek-objek Internet yang diminta (seperti halnya data halaman web) yang bisa diakses melalui HTTP, FTP dan Gopher di dalam sebuah sistem yang lebih dekat dengan situs yang memintanya.

Delay Pools

adalah opsi untuk menspesifikasi berapa jumlah pool yang digunakan untuk membatasi jumlah bandwidth dari ACL. Opsi ini akan dirangkaikan bersama opsi delay_class dan delay_parameters yang akan dibahas di bawah ini.

delay_class
Opsi ini menspesifikasikan kelompok dari masing-masing pool yang telah didefinisikan pada opsi delay-pools. Ada tiga class yang didukung Squid, antara lain:

class 1: Semua akses dibatasi dengan single bucket, artinya hanya bisa mendefinisikan overall bandwidth untuk suatu ACL saja, tidak bisa mendefinisikan bandwidth dengan lebih mendetail
• class 2: Semua akses dibatasi dengan single agregate dengan dua parameter bandwidth. Parameter pertama mendefinisikan berapa bandwidth maksimal yang didapatkan ACL, parameter kedua mendefinisikan berapa bandwidth overall untuk ACL yang spesifik yang ada pada network tersebut.
• class 3: Kelompok yang definisi bandwidth-nya paling mendetail. Parameter pertama mendefinisikan berapa bandwidth maksimal yang didapatkan ACL, parameter kedua mendefinisikan berapa bandwidth normal yang didapatkan ACL secara umum, dan parameter yang ketiga adalah mendefinisikan bandwidth yang didapatkan ACL jika mengakses ACL-ACL tertentu yang spesifik, misalnya file mp3.


delay_parameters

Opsi ini menspesifikasikan rumus bandwidth yang akan didapatkan oleh ACL yang akan memasuki delay_pool. Misalnya ada entry berikut ini pada delay_parameters:

delay_parameters 1 -1/-1 2100/4000

Angka 1 berarti rumus ini berlaku untuk pool 1. Angka -1/-1 berarti bandwidth maksimal yang diberikan Squid adalah tidak terbatas untuk pool ini.

Angka 2100/4000 berarti bandwidth yang didapatkan oleh ACL setelah masuk ke pool ini. Angka ini berada dalam kelipatan 8 b, sehingga untuk mendapatkan nilai bandwidth yang sebenarnya harus dikalikan delapan. Angka 2100 adalah bandwidth yang didapatkan ACL pada masa-masa normal. Jika dikalikan 8, maka bandwidth normal yang akan didapatkan ACL sekitar 18 Kbps. Angka 4000 adalah bandwidth maksimal yang didapatkan ACL pada masa-masa jalur sedang kosong. Jika dikalikan 8, maka bandwidth yang didapatkan sekitar 32 Kbps.

delay_access
Opsi ini mendefinisikan siapa-siapa ACL yang akan dimasukkan ke pool tertentu untuk mendapatkan “perlambatan” bandwidth. Bentuk umumnya adalah seperti ini:
delay_access 1 allow labprog
Opsi di atas berarti kita memasukkan ACL labprog ke dalam pool 1.

Di umpamakan kita mempunyai bandwidth dari ISP sebesar 512kb, dan kita membuat rule seperti berikut ini:
- Batas kecepatan koneksi overall adalah 256 Kbps. per-network adalah 64 kbps. Sedangkan per-user/host dibatasi 2 Kbps jika digunakan untuk download file bertipe exe, mp3, vqf, tar.gz, gz, rpm, zip, rar, avi, mpeg, mpe, mpg, qt, ram, rm, iso, raw, dan wav. Jika tidak, maka koneksi perhost HANYA mengikuti aturan per-Network saja.

ACL (Access Control List) adalah daftar kondisi yang digunakan untuk mengetes trafik jaringan yang mencoba melewati interface router. Daftar ini memberitahu router paket-paket mana yang akan diterima atau ditolak. Penerimaan dan penolakan berdasarkan kondisi tertentu. Untuk mem-filter trafik jaringa, ACL menentukan jika paket itu dilewatkan atau diblok pada interface router. Router ACL membuat keputusan berdasarkan alamat asal, alamat tujuan, protokol, dan nomor port.

ACL harus didefinisikan berdasarkan protokol, arah atau port. Untuk mengontrol aliran trafik pada interface, ACL harus didefinisikan setiap protokol pada interface. ACL kontrol trafik pada satu arah dalam interface. Dua ACL terpisah harus dibuat untuk mengontrol trafik inbound dan
outbound. Setiap interface boleh memiliki banyak protokol dan arah yang sudah didefinisikan. Jika router mempunyai dua interface diberi IP, AppleTalk dan IPX, maka dibutuhkan 12 ACL. Minimal harus ada satu ACL setiap interface.

Fungsi dari ACL:
- Membatasi trafik jaringan dan meningkatkan unjuk kerja jaringan.
Misalnya, ACL memblok trafik video, sehingga dapat menurunkan beban jaringan dan meningkatkan

unjuk kerja jaringan.
- Mengatur aliran trafik. ACL mampu memblok update routing. Jika update tidak dibutuhkan karena

kondisi jaringan, maka bandwidth dapat dihemat.
- Mampu membrikan dasar keamanan untuk akses ke jaringan.

Misalnya, host A tidak diijinkan akses ke jaringan HRD dan host B diizinkan.
- Memutuskan jenis trafik mana yang akan dilewatkan atau diblok melalui interface router.

Misalnya, trafik email dilayani, trafik telnet diblok.
- Mengontrol daerah-daerah dimana klien dapat mengakses jaringan.
- Memilih host-hots yang diijinkan atau diblok akses ke segmen jaringan.

Misal, ACL mengijinkan atau memblok FTP atau HTTP.

Contoh :

Edit file /etc/squid/squid.conf
#vi /etc/squid/squid.confLalu tambahkan contoh konfigurasi ini:
# Sebelum kita melakukan pembatasan, kita perlu mendefinisikan ACL network # # yang kita perlukan terlebih dahulu. ACL yang didefinisikan pada host bridge
# seperti di bawah ini:acl lokal src 192.168.1.0/24# Kemudian kita membatasi maksimum download dengan tag di bawah ini:
# Batas kecepatan koneksi overall adalah 256 Kbps. per-network adalah
# 64 kbps. Sedangkan per-user/host dibatasi 2 Kbps jika digunakan untuk
# download file bertipe exe, mp3, vqf, tar.gz, gz, rpm, zip, rar, avi,
# mpeg, mpe, mpg, qt, ram, rm, iso, raw, dan wav. Jika tidak, maka
# koneksi perhost HANYA mengikuti aturan per-Network saja.

acl filegede url_regex -i \.exe
acl filegede url_regex -i \.mp3
acl filegede url_regex -i \.vqf
acl filegede url_regex -i \.gz
acl filegede url_regex -i \.rpm
acl filegede url_regex -i \.zip
acl filegede url_regex -i \.rar
acl filegede url_regex -i \.avi
acl filegede url_regex -i \.mpeg
acl filegede url_regex -i \.mpe
acl filegede url_regex -i \.mpg
acl filegede url_regex -i \.qt
acl filegede url_regex -i \.ram
acl filegede url_regex -i \.rm
acl filegede url_regex -i \.iso
acl filegede url_regex -i \.raw
acl filegede url_regex -i \.wav

# Kita buat dulu ACL untuk mendefinisikan file-file di atas dengan menggunakan # regularexpression. Kemudian kita mendefinisikan 2 delay pool untuk
# menampung bandwidth.
# Satu pool masuk dalam kategori class 2 untuk mendefinisikan aturan overall
# 256 Kbps dan per-network 64 Kbps. Satu pool lainnya masuk kategori class 3
# untuk mendefinisikan aturan tambahan jika user mendownload file-file yang
#didefinisikan dalam ACL url_regex dengan bandwidth maksimal 2 Kbps.

delay_pools 2
delay_class 1 3
delay_parameters 1 32000/32000 8000/8000 250/250
delay_access 1 allow lokal filegede
delay_access 1 deny all
delay_class 2 2
delay_parameters 2 32000/32000 8000/8000
delay_access 2 allow lokal
delay_access 2 deny all

Jika sudah selesai, simpan hasil konfigurasi dan restart squid


ataupun konfigurasi seperti ini:

# apt-get install squid
Setelah instalasi selesai dan tidak terdapat kesalahan, langkah berikutnya adalah mengatur konfigurasi squid, bukalah file /etc/squid.conf dengan editor teks favorit anda (vi, pico, dll), file ini merupakan file konfigurasi squid.

Carilah baris yang berisi perintah berikut :

#http_port 3128
Perintah ini akan membuat proxy HTTP menggunakan port 3128 yang merupakan port default untuk squid. Aktifkan dengan menghilangkan tanda #. Anda dapat membuat nilai port HTTP proxy ini sesuai dengan selera anda, tetapi jangan arahkan ke port 80, terutama jika anda juga menjalankan Web Server, karena Web Server juga memakai port tersebut.

Langkah berikutnya, carilah baris perintah berikut :

#cache_mem 8 MB
Perintah tersebut digunakan untuk membatasi banyaknya memori komputer yang akan digunakan squid untuk menyimpan sementara obyek-obyek yang di cache. Batasan ini tidak ketat, suatu waktu jika squid membutuhkan memori lebih, dia dapat menggandakan memori yang dipakainya. Aktifkan baris ini dan ubahlah ukuran cache ini menjadi sebanyak yang anda inginkan, yang harus anda pertimbangkan adalah banyaknya memori yang dimiliki oleh komputer anda.

Berikutnya, carilah baris yang berisi perintah berikut :

# LOGFILE PATHNAMES & CACHE DIRECTORIES
# ————————————-
Setting berikut ini digunakan untuk mendefinisikan alokasi penyimpanan web cache kita. Setting yang pertama adalah :

#cache_dir /var/squid/cache 100 16 256
Nilai yang ada diatas adalah nilai default squid, jika anda ingin merubahnya maka aktifkan perintah ini.

Parameter pertama /var/squid/cache adalah nama direktori tempat kita akan menyimpan file-file cache. Anda dapat mengubah parameter ini ke direktori manapun, tetapi yang harus diperhatikan squid tidak akan menciptakan direktori baru, jadi bila parameter ini akan diubah, pastikan direktori tujuannya sudah ada dan squid mempunyai hak akses untukmenulis pada direktori tersebut.

Parameter selanjutnya, yang bernilai 100 adalah banyaknya ruang pada hard disk (dengan satuan Mega Byte) yang akan digunakan squid untuk menyimpan file-file cache nya. Ubahlah sesuai dengan kebutuhan anda.

Parameter selanjutnya, disebut dengan Level-1, adalah banyaknya direktori yang akan dibuat oleh squid dalam direktori cache nya. Sebaiknya penulis menyarankan untuk tidak mengubah parameter ini.

Parameter terakhir, yang disebut dengan Level-2, adalah banyaknya direktori level kedua, yaitu direktori yang dibuat di dalam tiap direktori level pertama diatas.

Langkah berikutnya, carilah perintah berikut :

# ACCESS CONTROLS
# ——————–
Sebetulnya ini adalah topik yang besar, dan sudah saya rencanakan untuk membahasnya secara terpisah. Tapi karena untuk tahap awal, kita harus mengijinkan akses dari LAN agar bisa menggunakan proxy, kita bahas sekilas saja.

Yang perlu Anda ketahui, konfigurasi squid dibaca dari atas ke bawah. Artinya, yang pertama kali cocok, itulah yang menang. Selalu ingat konsep dasar ini, karena akan sangat penting untuk memahami mengapa konfigurasi squid Anda tidak bekerja dengan seharusnya.

Ok, sekarang kita harus membuat acl baru untuk mengijinkan semua IP di LAN Anda bisa menggunakan squid proxy yang baru diinstal.

Misal, Anda memiliki dua LAN, 192.168.1.0/24 dan 192.168.2.0/24. Maka konfigurasinya,

acl jaringan_saya src 192.168.1.0/24 192.168.2.0/24
http_access allow jaringan_saya
Jika Anda menginginkan hanya IP tertentu saja, bukan satu network, Anda bisa juga menuliskannya seperti di bawah ini.

acl jaringan_saya src 192.168.1.0/24 192.168.2.0/24
http_access allow jaringan_saya
acl kantor_cabang src 192.168.5.5
http_access allow kantor_cabang
Sekarang IP 192.168.5.5 yang ada di kantor cabang, bisa juga menggunakan proxy yang baru Anda buat.
Baris perintah berikut ini digunakan untuk mendefinisikan daftar hak akses dalam jaringan anda, squid menyebutnya dengan Access Control Lists (ACL). Anda dapat mendefinisikan beberapa ACL disini. Dalam bagian access controls ini, carilah baris perintah berikut :

#Default configuration:
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR
# CLIENTS
#
http_access deny all
Yang perlu anda lakukan disini adalah mendefinisikan ACL kita sendiri, kita non aktifkan perintah terakhir dan tambahkan satu baris perintah berikut :

http_access allow all
Sehingga akan menjadi seperti ini :

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR
# CLIENTS
#
# http_access deny all
http_access allow all
sampai disini squid anda sudah selesai di setting, langkah berikutnya adalah untuk memastikan bahwa squid berjalan setiap kali kita jalankan Linux.

Jika anda menggunakan Red Hat Linux, anda harus login sebagai root, kemudian jalankan perintah setup. Dari situ masuklah ke menu System Service dan aktifkan pilihan squid.
Jika anda menggunakan SuSe, jalankan YaST dan masuklah menu System Administration kemudian pilih Change Config File dan carilah kata-kata START SQUID ubahlah nilainya dari NO ke YES.

Dengan demikian maka tiap kali anda masuk ke Linux, squid secara otomatis akan dijalankan.
Sebelum squid dapat berjalan, anda harus menciptakan direktori swap. Lakukanlah dengan menjalankan perintah :

#squid -z
Perintah ini hanya perlu dijalankan satu kali saja ketika squid pertama kali akan dijalankan pada komputer anda.

Untuk menjalankan squid tanpa merestart komputer, gunakan perintah :

# /etc/init.d/squid start
Untuk meminimalkan downtime squid, gunakan perintah berikut agar squid membaca ulang file konfigurasi dan menerapkannya.

# squid -k reconfigure
Sabtu, 15 Januari 2011

PRA KBM Data Base-XAMPP, InnoDB, dan Heap (Perbedaan Format Myisam, InnoDB, dan Heap)



Nama : Nur Annisa

PRA KBM XAMPP, INNODB, HEAP (Perbedaan Format Myisam, InnoDB, dan Heap)

Tanggal : 15 Januari 2011

Kelas : 3 TKJ A

Pemateri : Bpk. Yogas

Ibu Kingkin

No. Absen : 23

Data Base


  • XMAPP

XAMPP adalah perangkat lunak bebeas, yang mendukung banyak sistem operasi, merupakan kompilasi dari beberapa program. 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 merupakan gabungan perisian yang mengandungi pelayan web Apache (dengan modul PHP dan Perl) dan pangkalan data MySQL. Terdapat juga komponen-komponen lain seperti pelayan mail SMTP dan POP 3 serta contoh-contoh web aplikasi yang menggunakan teknologi PHP dan Perl. Tujuan utama perisian ini adalah untuk memudahkan pemasangan komponen-komponen tersebut. Walau bagaimanapun, pemasangan dan konfigurasi asal (default) bagi XAMPP ini mempunyai beberapa kelemahan yang terdedah kepada aktiviti pencerobohan.

Fungsinya adalah sebagai server yang berdiri sendiri (localhost), yang terdiri atas program Apache HTTP Server,MySQL database, dan penerjemah bahasa yang ditulis dengan bahasa pemrograman PHP dan Perl. Program ini tersedia dalam GNU General Public License dan bebas, merupakan web server yang mudah digunakan yang dapat melayani tampilan halaman web yang dinamis.

XAMPP dikembangkan dari sebuah tim proyek bernama Apache Friends, yang terdiri dari Tim Inti (Core Team), Tim Pengembang (Development Team) & Tim Dukungan (Support Team). XAMPP adalah singkatan yang masing-masing hurufnya adalah :

X :

Program ini dapat dijalankan dibanyak sistem operasi, seperti Windows, Linux, Mac OS, dan Solaris.

A :

Apache, merupakan aplikasi web server Tugas utama Apache adalah menghasilkan halaman web yang benar kepada user berdasarkan kode PHP yang dituliskan oleh pembuat halaman web. Jika diperlukan juga berdasarkan kode PHP yang dituliskan,maka dapat saja suatu database diakses terlebih dahulu (misalnya dalamMySQL) untuk mendukung halaman web yang dihasilkan.

M :

MySQL, merupakan aplikasi database server. Perkembangannya disebut SQL yang merupakan kepanjangan dari Structured Query Language. SQL merupakan bahasa terstruktur yang digunakan untuk mengolah database. MySQL dapat digunakan untuk membuat dan mengelola database beserta isinya. Kita dapat memanfaatkan MySQL untuk menambahkan, mengubah, dan menghapus data yang berada dalam database.

P :

PHP, bahasa pemrograman web. Bahasa pemrograman PHP merupakan bahasa pemrograman untuk membuat web yang bersifat server-side scripting. PHP memungkinkan kita untuk membuat halaman web yang bersifat dinamis. Sistem manajemen basis data yang sering digunakan bersama PHP adalah MySQl. namun PHP juga mendukung sistem manajement database Oracle, Microsoft Access, Interbase, d-base, PostgreSQL, dan sebagainya.

P :

Perl, bahasa pemrograman.


Mengenal bagian XAMPP yang biasa digunakan pada umumnya :

  • htdoc adalah folder tempat meletakkan berkas-berkas yang akan dijalankan, seperti berkas PHP, HTML dan skrip 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).

  • INOODB

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

InnoDB adalah penyimpanan yang aman (ASAM mesin transaksi untuk MySQL yang telah melakukan, rollback, dan-pemulihan kemampuan crash untuk melindungi data pengguna. InnoDB row-level locking (tanpa eskalasi untuk kasar kunci granularity) dan gaya yang konsisten nonlocking-Oracle reads meningkatkan concurrency multi-user dan kinerja. InnoDB data pengguna toko di indeks dikelompokkan untuk mengurangi I / O untuk pencarian yang umum berdasarkan kunci primer. Untuk menjaga integritas data,InnoDB juga mendukung FOREIGN KEY -kendala integritas referensial. Anda bebas dapat mencampur InnoDB tabel dengan tabel dari MySQL storage engine lainnya, bahkan dalam pernyataan yang sama. Untuk menentukan apakah server Anda mendukung InnoDB menggunakan SHOW ENGINES pernyataan.

InnoDB telah dirancang untuk kinerja maksimum saat pengolahan data volume besar. efisiensi CPU adalah mungkin tidak cocok dengan setiap mesin berbasis disk database lain relasional. InnoDB Hot Backup memungkinkan Anda untuk membuat cadangan database MySQL berjalan, termasuk InnoDB dan MyISAM tabel, dengan gangguan minimal terhadap operasi saat menghasilkan snapshot yang konsisten dari database. Ketika InnoDB Hot Backup adalah menyalin InnoDB tabel, membaca dan menulis baik InnoDB dan MyISAM tabel dapat melanjutkan.Selama menyalin MyISAM tabel, membaca (tetapi tidak menulis) untuk meja-meja yang diizinkan.Selain itu, InnoDB Hot mendukung Backup menciptakan file terkompresi backup, dan backup performing himpunan bagian dari InnoDB tabel. Dalam hubungannya dengan biner log's MySQL, pengguna dapat melakukan-dalam-waktu pemulihan titik. InnoDB Hot Backup secara komersial dilisensi oleh Innobase Oy.

Salah satu hal yang dapat dilakukan oleh InnoDB adalah fasilitas triger cascade on Delete ma cascade on Update. Cascade On Delete adalah fasilitas untuk melakukan delete ketika nilai pada reference di hapus, misal ada dua table yaitu table mahasiswa sama tabel nilai_mahasiswa. Table nilai_mahasiswa mengacu ke table mahasiswa dengan relasi one to many, jadi satu mahasiswa punya banyak nilai dari masing2 matakuliah yang di ambilnya. Ketika salahsatu mahasiswa keluar maka semua nilai mahasiswa tersebut akan di hapus. Dengan cascade on delete maka kita cukup menghapus mahasiswa yang bersangkutan dari tabel mahasiswa. Sedangkan Cascade on Update adalah fasilitas yang melakukan update otomatis pada table yang mengacu ke tabel tersebut. mirip seperti cascade on delete hanya yang di otomatisasi adalah perubahan bukan pengapusan.

Jika di Mysql belum muncul storage engine INNODB itu artinya fasilitas INNODB pada MYSQL anda belum di aktifkan. Cara mengaktifkannya adalah :
1. buka my.ini atau my.cfg
2. cari tulisan
#default-storage-engine=INNODB
3. ganti Jadi
default-storage-engine=INNODB
#untuk menjadikan Innodb sebagai type database default
4. cari tulisan skip-innodb
5. ubah menjadi
#skip-innodb

  • HEAP

Heap adalah sebuah binary tree dengan ketentuan sebagai berikut :

1. Tree harus complete binary tree

2. Semua level tree mempunyai simpul maksimum kecuali pada level terakhir.

3. Pada level terakhir, node tersusun dari kiri ke kanan tanpa ada yang dilewati.

4. 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 :

1. Buat Heap Maksimum

2. 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.

3. Kemudian nilai banyak simpul (N) dikurangi 1.

4. Jika N > 1 maka lakukan reorganisasi heap yaitu proses sift down terhadap root.

5. Lakukan langkah b sampai d sampai simpul habis (N=0).


HEAP

  • Data tidak disimpan dalam urutan tertentu
  • Khusus data tidak dapat diambil dengan cepat, kecuali ada juga non-cluster indeks
  • halaman Data tidak terkait, sehingga akses sekuensial perlu mengacu kembali ke indeks alokasi peta (IAM) halaman
  • Karena tidak ada clustered index, waktu tambahan tidak diperlukan untuk menjaga indeks
  • Karena tidak ada clustered index, tidak ada kebutuhan akan ruang tambahan untuk menyimpan pohon clustered index
  • Tabel ini memiliki nilai index_id dari 0 dalam tampilan katalog sys.indexes



  • Format Tabel MySQL
MySQL menyediakan beberapa jenis format tabel yang penggunaannya tergantung dari tujuan pembuatan tabel tersebut. Jenis format tabel tersebut diantaranya adalah:

1.Format Tabel MyISAM
2.Format Tabel Innodb

3.Format Table HEAP

Bila ditinjau dari kemampuan tabel, maka kedua tabel tersebut dapat dikategorikan sebagai tabel dengan kemampuan bertransaksi (transaction-safe tables /TST) dan tabel tanpa kemampuan bertransaksi (not transaction-safe tables /NTST), sehingga daftar tabel di atas dapat kita bagi lagi menjadi:
  1. Transaction-Safe Tables (TST) Format Tabel Innodb
  2. Not Transaction-Safe Tables (NTST) Format Tabel MyISAM
Keunggulan transaction-safe tables (TST) dibandingkan dengan not transaction-safe tables (NTST) adalah:
  1. Lebih aman. Seperti pada contoh kasus di atas.
  2. Cukup menggunakan satu perintah COMMIT saja untuk mengupdate beberapa perintah di atasnya.
  3. Dapat menjalankan perintah ROLLBACK yang mengabaikan perubahan -perubahan yang
  4. terjadi pada transaksi yang dibatalkan.

Sedangkan keunggulan dari not transaction-safe tables (NTST) dibandingkan dengan transaction-safe tables (TST) adalah:

  1. Proses lebih cepat karena tidak adanya beban transaksi (no transaction overhead ).
  2. Penggunaan ruang dalam hard disk yang lebih hemat karena tidak adanya beban transaksi.
  3. Penggunaan memori yang lebih hemat, juga karena tidak adanya beban transaksi.

Dari gambaran di atas, Anda bisa menentukan format tabel apa saja yang akan Anda pilih sesuai dengan kebutuhan. Tentu harus ada pertimbangan yang matang dalam hal pemilihan format tabel ini. Pada MySQL sendiri, format tabel MyISAM merupakan format default yang digunakan.

· Format Tabel 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 :

1. 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.

2. 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).

3. MyISAM Compressed. Kedua jenis MyISAM, static dan dynamic dapat dikompresi menjadi satu jenis yaitu MyISAM Compressed dengan perintah myisamchk. Tentunya hasilnya lebih kecil dari segi ukuran. Tabel yang terkompresi tidak dapat dikenakan operasi seperti INSERT, UPDATE dan DELETE.

Format tabel MyISAM merupakan pengembangan dan penyempurnaan dari format tabel ISAM, dan merupakan format tabel default pada MySQL. Pada MyISAM file indeks disimpan dengan nama akhiran .MYI dan file data disimpan dengan nama akhiran .MYD. Adapun penyempurnaan yang dilakukan pada MyISAM antara lain:

  1. Adanya suatu kode pembeda yang akan memberi tanda bila suatu tabel tidak ditutup dengan semestinya setelah dibuka. Bila Anda menjalankan program MySQL Server, mysqld, dengan pilihan –myisam-recover, maka secara otomatis tabel yang telah ditandai tersebut akan dipulihkan (bila rusak) atau ditutup dengan semestinya (bila belum ditutup). Hal ini sangat membantu untuk menjaga keutuhan dan validitas tabel.
  2. Kemampuan kolom AUTO_INCREMENT lebih handal dibandingkan dengan format tabel ISAM.
  3. Mendukung file ukuran besar (63-bit) pada sistem operasi tertentu yang juga mendukung
  4. pembuatan dan pembacaan file-file data ukuran besar.
  5. Pada kolom BLOB dan TEXT bisa dilakukan pengindeksan.
  6. NULL diperkenankan pada kolom yang diindeks (tetapi sebaiknya dihindari saja).
  7. Jumlah maksimum file indeks adalah 32 buah per tabelnya, dan masih dapat dikembangkan hingga mencapai 64 buah per tabel dengan kondisi tertentu tanpa harus mengkompilasi ulang program myisamchk.
  8. Program bantu myisampack dapat memadatkan kolom BLOB dan VARCHAR.

Walaupun format tabel MyISAM dapat dikategorikan sangat handal, tetapi pada suatu saat bisa saja terjadi kerusakan yang diakibatkan oleh:

  1. Server mati secara mendadak akibat aliran listrik padam.
  2. Kerusakan pada perangkat keras.
  3. Penghentian proses oleh perintah KILL pada saat proses sedang dalam kondisi menulis.
  4. Kesalahan pada program MySQL atau ISAM.
Melakukan suatu proses dengan program bantu lain (seperti MyISAM) pada saat tabel sedang sibuk diakses.

Ciri-ciri tabel MyISAM yang mengalami kerusakan antara lain:

  1. Munculnya pesan kesalahan ‘ Incorrect key file for table: ‘…’
  2. Query tidak menghasilkan data yang lengkap.

Bila hal tersebut terjadi, yang dapat Anda lakukan adalah segera memperbaiki kerusakan tabel tersebut dengan menggunakan perintah CHECK TABLE atau REPAIR TABLE.

mysql> CHECK TABLE nama_tabel pilihan_pemeriksaan ;
mysql> REPAIR TABLE nama_tabel pilihan_perbaikan ;

Bila Anda ingin mengubah format tabel ke MyISAM, lakukan dengan cara:

mysql> ALTER TABLE nama_tabel TYPE=MYISAM ;

Pada saat pertama kali kita membuat tabel ini dengan perintah CREA TE TABLE, bisa dinyatakan dengan perintah sebagai berikut:
mysql> CREATE TABLE ujian
-> (NoSiswa INT NOT NULL AUTO_INCREMENT,
-> Nilai INT NOT NULL,
-> PRIMARY KEY (NoSiswa))
-> TYPE=MyISAM ;

Atau bisa juga dengan perintah di bawah ini, dengan menghilangkan perintah TYPE=MYISAM, karena format tabel MyISAM adalah format tabel default yang digunakan oleh MySQL.
mysql> CREATE TABLE ujian
-> (NoSiswa INT NOT NULL AUTO_INCREMENT,
-> Nilai INT NOT NULL,
-> PRIMARY KEY (NoSiswa))
-> ;

· Format Tabel InnoDB

Format Tabel InnoDB mendukung proses transaksi dengan adanya fasilitas rollback dan commit, dan juga kemampuan untuk memulihkan tabel bila terjadi kerusakan pada tabel tersebut. Mampu melakukan penguncian (locking) pada tingkatan record dan juga mampu membaca pada perintah SELECT yang tidak dikunci (mirip dengan kemampuan Oracle). Kemampuan-kemampuan tersebut meningkatkan kecepatan dan kinerja penggunaan multi user. Ada banyak sekali fitur yang disediakan oleh Tabel InnoDb ini. Anda bisa mendapatkan informasi lebih rinci langsung di situs www.innodb.com. Anda bisa juga mendapatkan versi komersial dari InnoDB yang bisa didownload pada situs tersebut.
InnoDb telah digunakan untuk database yang membutuhkan kinerja sangat tinggi dan berukuran sangat besar. Misal, Mytrix Inc, sebuah perusahaan yang bergerak di bidang riset statistik di Internet , menggunakan InnoDb untuk mengelola data lebih dari 1 Terabyte (1012 byte), dengan jumlah tabel lebih dari 100.000. Secara keseluruhan jumlah recordnya mencapai lebih dari 20 milyar record. Sebuah bursa saham Paris di Perancis menggunakan InnoDB sebagai solusi databasenya. Pada saat beban kerja sedang sepi, jumlah query yang dilayani mencapai

rata-rata 800 proses insert/update per detiknya. Sedangkan pada saat ramai, jumlah query yang dilayani mencapai rata -rata 2.000 proses insert/update per detiknya.

Kelebihan format tabel InnoDB antara lain:

  1. Format Tabel InnoDB mendukung transaksi dengan menyediakan fasilitas rollback dan commit.
  2. InnoDB merupakan satu-satunya format tabel di dalam MySQL yang mendukung Foreign Key Constraint .
  3. Kecepatan InnoDB pada beberapa kasus bahkan melebihi kecepatan format tabel MyISAM. Informasi mengenai kecepatan ini dapat dilihat di halaman benchmark dengan alamat http://www.innodb.com/bench.html.
  4. InnoDB memiliki kemampuan melakukan penguncian pada tingkatan record ( row level locking). Bandingkan dengan MyISAM yang hanya memiliki kemampuan penguncian pada tingkatan tabel (table level locking). Hal ini sangat berpengaruh dalam meningkatkan kinerja akses multiuser.InnoDB memiliki fasilitas backup secara langsung, yaitu dapat melakukan backup pada database yang sedang berjalan tanpa harus melakukan proses locking dulu dan tidak akan mengganggu operasional database.
  5. InnoDB memiliki kemampuan memulihkan tabel secara otomatis pada tabel-tabel yang rusak.
  6. Ukuran database InnoDB dapat melebihi 2 Gigabyte, walaupun sistem operasi yang digunakan saat itu tidak mendukung penggunaan database melebihi 2 Gigabyte.

· Format Tabel HEAP

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. 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.


About Me

Foto Saya
Nur Annisa
Cimahi, Jawa Barat, Indonesia
Computer & Networking A '06 SMKN 1 Cimahi '08, D1 ITB STEI-TKJ '11               y!m : nuy.nurannisa                                    twitter : @nuynaynuy                                                            Let's join and share :)
Lihat profil lengkapku

Blog Archive

Popular Posts

Visit My Facebook

Follower

Diberdayakan oleh Blogger.