A. Optimasi pada Perintah SQL
Index pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data.
Misal digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut nama, fakultas dan NIM dari tabel mahasiswa, sebagai berikut :
CREATE INDEX idx_nama_fakultas_nim ON mahasiswa(nama, fakultas, nim) TABLESPACE INDX;
Kemudian user melakukan query sebagai berikut :
SELECT * FROM mahasiswa WHERE fakultas=’teknik’;
Pada saat melakukan query ini, index tidak akan digunakan karena kolom pertama (nama) tidak digunakan dalam klausa WHERE. Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut fakultas.
SELECT * FROM mahasiswa WHERE nim BETWEEN 5302411050 AND 5302411105;
Query ini akan melakukan “scan” terhadap sedikit data block jika tabel mahasiswa diatas diurutkan berdasarkan kolom nim.
Alternatif yang lain, bisa digunakan perintah untuk membuat tabel lain yang memiliki urutan yang berbeda dari tabel asal, seperti perintah SQL berikut :
CREATE TABLE mahasiswa_urut AS SELECT * FROM mahasiswa ORDER BY nim;
Pada SQL diatas, tabel mahasiswa_urut berisi data yang sama dengan tabel mahasiswa hanya datanya terurut berdasarkan kolom nim.
B. Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data
1. Optimasi Aplikasi
Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien. Efisien dalam hal penggunaan obyek yang mendukung kecepatan akses, seperti index atau cluster. Kemudian juga bagaimana cara database didesain.
Apakah desain database sudah melakukan normalisasi data secara tepat. Kadangkala normalisasi sampai level yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang hubungannya one-toone dan sering diakses bersama lebih baik disatukan dalam satu tabel.
2. Cluster dan Index
Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dalam suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di-query. Penggunaan cluster secara tepat dilaksanakan setelah menganalisa tabel-tabel mana saja yang sering di-query secara bersamaan menggunaan perintah SQL join.
Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap.
Rabu, 26 Desember 2012
OPTIMASI QUERY
Diposting oleh Amal_lina di 19.17 0 komentar
QUERY LANJUTAN

SUBQUERY
Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL Statement yang lain. Untuk penulisan subquery pada SQL

Pada gambar diatas, subquery (inner query) dijalankan sekali sebelum main query. Kemudian hasil dari subquery digunakan oleh main query (outer query).
PENGGUNAAN QUERY
Subquery mengembalikan nilai ke main query. Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values). Berikut ini diberikan contoh penggunaan subquery.
SELECT last_name
FROM mahasiswa
WHERE salary > ( SELECT salary FROM MAHASISWA WHERE mahasiswa_id=60);
Query diatas akan menampilkan nama pegawai yang gajinya lebih dari pegawai dengan nomer pegawai 149. Sebelumnya, gaji dari pegawai dengan nomer pegawai 149 tidak diketahui, untuk itu kita tempatkan sebagai subquery agar nilai yang tidak diketahui tersebut dapat diketahui dan pada ilustrasi gambar diatas nilai gaji dari pegawai 149 adalah 10500.
SUBQUERY BANYAK KOLOM
Pada subquery dengan banyak kolom, tiap baris dari main query dibandingkan dengan nilai dari subquery multiple-row dan multiple-column. Berikut ini contoh pembandingan dengan banyak kolom dan baris :

PEMBANDINGAN KOLOM
Pembandingan kolom dalam subquery banyak kolom dapat berupa :
1. Pembandingan berpasangan (Pairwise Comparison SubQuery)
contoh pembandingan berpasangan untuk menampilkan detail dari data mahasiswa yang mengambil mata kuliah dan dosen yang sama dengan yang dimiliki oleh nomer mahasiswa 20.
SELECT mahasiswa_id, makul_id, dosen_id FROM mahasiswa WHERE (makul_id, dosen_id) IN
(SELECT makul_id, dosen_id FROM
mahasiswa WHERE mahasiswa_id IN (20,29))
AND mahasiswa_id NOT IN (20,29);
2. Pembandingan tidak berpasangan (NonPairwise Comparison SubQuery)
Berikut contoh pembandingan tidak berpasangan untuk menampilkan detail dari data mahasiswa yang mengambil mata kuliah dan dosen yang sama dengan mahasiswa dengan nomer mahasiswa 157 dan 168 dan dosen yang sama dengan mahasiswa yang memiliki nomer pegawai 157 atau 168.
FROM mahasiswa WHERE makul_id IN
(SELECT makul_id FROM mahasiswa
WHERE mahasiswa_id IN (157,168))
AND dosen_id IN
(SELECT dosen_id FROM mahasiswa
WHERE mahasiswa_id IN (157,168))
AND mahasiswa_id NOT IN(157,168);
PENGGUNAAN QUERY DALAM KLAUSA FROM
Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer. Query semacam ini dikenal juga dengan istilah inline view, karena tidak membentuk object database.
Berikut ini contoh penggunaan Query dalam klausa FROM.
SELECT nama_mhs, nilai_uas, nilai_uts,FROM mahasiswa WHERE nilai_uas > nilai_uts;
Query diatas menampilkan nama mahasiswa, nilai uas, dan nilai uts, yang nilai UASnya lebih besar dari nilai UTS
EKSPRESI SCALAR SUBQUERY
Ekspresi scalar subquery adalah subquery yang mengembalikan hanya satu nilai kolom dari satu baris.
contoh penggunaan scalar subquery dalam ekspresi CASE :
SELECT mahasiswa_id, nama_mhs,(CASE WHEN makul_id = THEN 'SBD' ELSE 'Statistika' END) location FROM mahasiswa;
contoh penggunaan scalar subquery dalam klausa ORDER BY :
SELECT mahasiswa_id, mana_mhs FROM mahasiswa ORDER BY SELECT nama_dosen FROM dosen WHERE mahasiswa_id=dosen_id;
KORELASI SUBQUERY
Korelasi SubQuery digunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query.
Prosesnya sebagai berikut :

proses korelasi dimulai dengan mengambil baris dari outer query, kemudian inner query dijalankan dengan menggunakan nilai baris kandidat, kemudian nilai dari inner query digunakan untuk melakukan kualifikasi atau mendiskualifikasi baris kandidat.
Berikut ini cara penulisan dari Korelasi SubQuery :
SELECT column1, column2, ... FROM table1 outer WHERE column1 operator (SELECT colum1, column2 FROM table2 WHERE expr1 = outer.expr2);
Korelasi Subquery juga dapat digunakan untuk meng-update baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan Korelasi Update.
Berikut cara penulisan Korelasi Update :
UPDATE table1 alias1 SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);
Korelasi Subquery juga dapat digunakan untuk menghapus baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan Korelasi Delete.
Berikut cara penulisan Korelasi Delete :
DELETE FROM table1 alias1 WHERE column operator (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);
PENGGUNAAN OPERATOR EXIST DAN NOT EXIST
Operator EXISTS dan NOT EXIST digunakan untuk menguji keberadaan dari baris dalam himpunan hasil dari subquery.
· Jika ditemukan, maka pencarian tidak dilanjutkan dalam inner query dan kondisi ditandai TRUE.
· Jika tidak ditemukan, maka : Kondisi ditandai FALSE dan kondisi pencarian dilanjutkan dalam inner query.
Berikut penggunaan operator EXISTS untuk mencari pegawai yang memiliki sedikitnya satu orang bawahan.
PENGGUNAAN KLAUSA WITH
Dengan menggunakan klausa WITH, kita dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query. Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablespace temporer kepunyaan user. Klausa WITH dapat meningkatkan performansi.
Diposting oleh Amal_lina di 19.15 0 komentar
STRUCTURED QUERY LANGUAGE (SQL)
A. Pengenalan SQL
Structured Query Languages (SQL) pertama kali diterapkan pada sistem R (sebuah proyek riset pada laboratorium riset San Jose, IBM). Kini SQL juga dijumpai pada berbagai platform, dari mikrokomputer hingga mainframe. SQL dapat digunakan baik secara berdiri sendiri maupun dilekatkan pada bahasa-bahasa lain seperti C dan Delphi. SQL juga telah menjadi bagian dari sejumlah DBMS, seperti Oracle, Sybase, MySQL dan Informix.
B. Element SQL
Elemen dasar SQL:
Pernyataan: perintah SQL yang meminta sesuatu tindakan kepada DBMS. SQL memiliki kira-kira 30 pernyataan diantaranya:
- ALTER : Mengubah struktur table- COMMIT : Mengakhiri sebuah eksekusi transaksi
- CREATE : Menciptakan table, indeks atau pandangan
- DELETE : Menghapus baris pada tabel
- DROP : Menghapus tabel, indeks atau pandangan
- GRAND : Menugaskan hak terhadap basis data kepada pengguna atau grup pengguna
- INSERT : Menambahkan sebuah baris pada tableREVOKE : Membatalkan hak terhadap basis data
- ROLLBACK : Mengembalikan ke keadaan semula sekiranya suatu transaksi gagal dilaksanakan
- SELECT : Memilih baris dan kolom pada tabel
- UPDATE : Mengubah nilai pada sebuah baris
Nama digunakan sebagai identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah tabel, kolom dan pengguna.
Tipe Data Setiap data memiliki tipe data. Berikut ini adalah tipe data dalam MySQL :
1. Tipe data untuk numerik : TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL(M,D)
2. Tipe data string : CHAR(n), VARCHAR(n), TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET SET.
3. Tipe data tanggal dan jam : DATE, TIME, DATETIME.
Ekspresi: segala sesuatu yang menghasilkan nilai. Ekspresi digunakan untuk menghitung nilai.
Aggregate Functions (Fungsi Agregat)
Fungsi adalah sebuah subprogram yang menghasilkan suatu nilai jika dipanggil. Fungsi agregat adalah fungsi standar di dalam SQL, suatu fungsi yang digunakan untuk melakukan summary, fungsi statistik standar yang dikenakan pada suatu tabel atau query.
- AVG(ekspresi) : untuk mencari rata-rata nilai dalam suatu kolom
- COUNT(x) : untuk menghitung jumlah record (baris) dari suatu kolom dari suatu tabel. X adalah nama kolom yang ingin dicari jumlah barisnya.
- MAX(ekspresi) : untuk mencari nilai terbesar dari suatu kolom dari suatu tabel.
- MIN(ekspresi) : untuk mencari nilai terkecil dari suatu kolom dari suatu table.
- SUM(ekspresi) : untuk mendapatkan nilai total dari suatu kolom pada suatu tabel.
C. PERNYATAAN SQL
1. DDL(Data Definition Language)
DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data, tabel, atribut(kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar tabel. Yang termasuk dalam kelompok DDL ini adalah CREATE, ALTER, dan DROP.
2. DML(Data Manipulation Language)
DML adalah kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan dan penghapusan data. Perintah yang termasuk dalah kategori DML adalah : INSERT, DELETE, UPDATE dan SELECT.
3. DCL
Diposting oleh Amal_lina di 19.13 0 komentar
Rabu, 12 Desember 2012
JAVA
SEJARAH PERKEMBANGAN JAVA
Bahasa pemrograman Java terlahir dari The Green Project, yang berjalan selama 18 bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek tersebut belum menggunakan versi yang dinamakan Oak. Proyek ini dimotori oleh Patrick Naughton, Mike Sheridan, James Gosling dan Zhulfikar Anugrah, beserta sembilan pemrogram lainnya dari Sun Microsystems. Salah satu hasil proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang.
Pertemuan proyek berlangsung di sebuah gedung perkantoran Sand Hill Road di Menlo Park. Sekitar musim panas 1992 proyek ini ditutup dengan menghasilkan sebuah program Java Oak pertama, yang ditujukan sebagai pengendali sebuah peralatan dengan teknologi layar sentuh (touch screen), seperti pada PDA sekarang ini. Teknologi baru ini dinamai "*7" (Star Seven).
Setelah era Star Seven selesai, sebuah anak perusahaan Tv kabel tertarik ditambah beberapa orang dari proyek The Green Project. Mereka memusatkan kegiatannya pada sebuah ruangan kantor di 100 Hamilton Avenue, Palo Alto.
Perusahaan baru ini bertambah maju: jumlah karyawan meningkat dalam waktu singkat dari 13 menjadi 70 orang. Pada rentang waktu ini juga ditetapkan pemakaian Internet sebagai medium yang menjembatani kerja dan ide di antara mereka. Pada awal tahun 1990-an, Internet masih merupakan rintisan, yang dipakai hanya di kalangan akademisi dan militer.
Mereka menjadikan perambah (browser) Mosaic sebagai landasan awal untuk membuat perambah Java pertama yang dinamai Web Runner, terinsipirasi dari film 1980-an, Blade Runner. Pada perkembangan rilis pertama, Web Runner berganti nama menjadi Hot Java.
Pada sekitar bulan Maret 1995, untuk pertama kali kode sumber Java versi 1.0a2 dibuka. Kesuksesan mereka diikuti dengan untuk pemberitaan pertama kali pada surat kabar San Jose Mercury News pada tanggal 23 Mei 1995.
Sayang terjadi perpecahan di antara mereka suatu hari pada pukul 04.00 di sebuah ruangan hotel Sheraton Palace. Tiga dari pimpinan utama proyek, Eric Schmidt dan George Paolini dari Sun Microsystems bersama Marc Andreessen, membentuk Netscape.
Nama Oak, diambil dari pohon oak yang tumbuh di depan jendela ruangan kerja "Bapak Java", James Gosling. Nama Oak ini tidak dipakai untuk versi release Java karena sebuah perangkat lunak lain sudah terdaftar dengan merek dagang tersebut, sehingga diambil nama penggantinya menjadi "Java". Nama ini diambil dari kopi murni yang digiling langsung dari biji (kopi tubruk) kesukaan Gosling. Konon kopi ini berasal dari Pulau Jawa. Jadi nama bahasa pemrograman Java tidak lain berasal dari kata Jawa (bahasa Inggris untuk Jawa adalah Java).
VERSI AWAL
Versi awal Java ditahun 1996 sudah merupakan versi release sehingga dinamakan Java Versi 1.0. Java versi ini menyertakan banyak paket standar awal yang terus dikembangkan pada versi selanjutnya:
- java.lang: Peruntukan kelas elemen-elemen dasar.
- java.io: Peruntukan kelas input dan output, termasuk penggunaan berkas.
- java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi dengan komputer lain menggunakan jaringan TCP/IP.
- java.awt: Kelas dasar untuk aplikasi antarmuka dengan pengguna (GUI)
- java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web.
KELEBIHAN
- Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut.
- OOP (Object Oriented Programming - Pemrogram Berorientasi Objek)
- Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.
- Bergaya C++, memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika Serikat juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.
- Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).
KEKURANGAN
- Tulis sekali, jalankan di mana saja - Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan platform lain. Untuk J2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac OS X.
- Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini dimungkinkan karena kode jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode, dan tipe data. Hal yang sama juga terjadi pada Microsoft .NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan dan mudah dibajak/direverse-engineer.
- Penggunaan memori yang banyak. Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.
Diposting oleh Amal_lina di 17.37 0 komentar
Langganan:
Postingan (Atom)

