Mudafiq Riyan Pratama

dokumen-dokumen yang mirip
Mudafiq Riyan Pratama

Mudafiq Riyan Pratama

Mudafiq Riyan Pratama Pendahuluan. Lisensi Dokumen:

I. Setting Yang Perlu Dilakukan: 1. Download terlebih dahulu installer Mahara di alamat website resmi mahara:

Mudafiq R. Pratama

Mudafiq R. Pratama

Yuafanda Kholfi Hartono

MySQL Full-Text Searching

Agus Pamujiono

STRUCTURE QUERY LANGUAGE DDL & DML

LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL

Pemrograman Web 1. Akademi Manajemen Informatika dan Komputer AMIK Royal Kisaran. Modul 2 Revisi 2. Tahun Akademik 2012/2013

PERTEMUAN 10 PEMBUATAN TABEL

Database. Danu Wira Pangestu 1. Mengenal Database. Lisensi Dokumen:

Menampilkan Data/Tabel MySQL di Ms.Access

Tutorial Web Server dengan Bitnami LappStack Copyright liyantanto.wordpress.com

Pertemuan DDL INDIKATOR. Modul Teori Database Aknela

Modul 3. Oleh : Mohammad Sholikin. 1

Mudafiq Riyan Pratama

perkembangan yang diraih, namun ada juga kegagalan dan ketidakstabilan pada masingmasing Database Engine. Database yang bekerja 24 jam dan yang memili

Farida Nur Cahyani Pendahuluan. Membuat Database. 1 Komunitas elearning IlmuKomputer.Com

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DDL. Copyright 2005 PENS-ITS

Perangkat Lunak Pengembangan Web

Untung Subagyo

MODUL II. Instalasi OracleXE Dan SQL

Djoni Darmawikarta

Tutorial Singkat MySQL

Konsep Dasar. Relatsional dan RDBMS User dan Schema Database Membuat Tabel dan Mendefinisikan Constraint Input Data ke dalam Tabel

Sistem Basis Data Danny Kriestanto, S.Kom., M.Eng

Rima Hidayati

ANALISA PERFORMANSI PERTITIONING TABEL PADA RELATIONAL DATABASE MANAGEMENT SYSTEM

Riyanto

Pertemuan 10. Bahasa Query Terapan

Computer Science, University of Brawijaya. Putra Pandu Adikara, S.Kom VIEW & TABLE. Basis Data 2

TABLE & INDEX PARTITIONING Juni 2010 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Ms SQL Server 2008

Pengenalan Structured Query Language

Membuat Application User pada Cisco Unified CM Administration

Septina Budi Kurniawati

STUPID LOGIC PROGRAMMING II

Pra Database. Muhammad Subhan Contoh pemakaian aplikasi database : File Based System.

MODUL 2 PENGENALAN DATA DEFINITION LANGUAGE (DDL) & DATA MANIPULATION LANGUAGE (DML)

BAB VIII FUNGSI, PL/PGSQL dan TRIGER

MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA

Pemrograman Web Lanjut 2017

Membuat Function, Stored Procedur dan View pada MySQL

Mudahnya Meng-Install Mikrotik 5.20 pada Vmware Player

Septina Budi Kurniawati

Sebelum melakukan instalasi Linux Ubuntu, kita lakukan instalasi VM VirtualBox dahulu. Berikut langkah langkahnya :

Budi Permana, S.Kom Pendahuluan. Lisensi Dokumen:

Ghandie Kurnia Widi Lisensi Dokumen: Copyright IlmuKomputer.

LAPORAN PRAKTIKUM BASIS DATA

OPTIMALISASI QUERY DALAM BASIS DATA MY SQL MENGGUNAKAN INDEX

Budi Satrio

Constraint dan Manajemen Data dalam Timezone Berbeda

PENGENALAN SINTAKS DASAR DALAM MySQL

Happy Chandraleka

Jobsheet SQL Dasar : Hari Zulianto, ST [Year]

Septina Budi Kurniawati

Seri 01 : Belajar Database MySQL

MENGENAL SYNTAX DML PADA SQL

TUGAS I PRAKTIKUM SISTEM BASIS DATA. Nama: Krisna Pandu Wibowo( )

Denny Yerianto

Penerapan Basis Data Terpartisi dalam Rancang Bangun Sistem Penggajian-Pengupahan dengan Model Jaringan Client-Server.

MODUL 1. Pembuatan tabel, pendefinisian constraint, export dan import PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Ika Nur Khana

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

Konsep Sistem Informasi B. BAB 2 - SQL Overview

Nama Penulis Pendahuluan. Isi. Lisensi Dokumen:

3 Cara Belajar HTML, PHP dan MySQL. Nama Penulis Lisensi Dokumen:

Septina Budi Kurniawati

fm_iqbal

Basis Data Spasial Modul 2

Arsyad Dwiyankuntoko Pendahuluan. Lisensi Dokumen:

SISTEM BASIS DATA 1. WAHYU PRATAMA, S.Kom., MMSI.

Bahasa Query dan 4GL. Leo kumoro sakti. Abstrak. Pendahuluan

Obyek pada Oracle. Manajemen Obyek Basis Data dan Dictionary View. Obyek pada Oracle adalah segala hal yang bisa dibuat di Oracle, seperti:

MySQL J A M K E T I G A

B a s i s D a t a C H A P T E R. SQL Operasi DDL. Arif Basofi PENS 2015

Sudarma Sopian Blog: Pendahuluan. Isi. Lisensi Dokumen:

Praktikum Basis Data (Database Server MySQL) Bekerja Dengan Tabel

Introduction to SQL. Database Programming. 2 nd Chapter

M. Choirul Amri

Data Manipulation Language (DML) & Data Control Language (DCL) pada Database

Sofiyan Arif Kurniawan

Moh Sulhan Apa itu Hosting? Lisensi Dokumen:

PENGENALAN IPHOST NETWORK MONITOR

Rekapitulasi Data Sederhana Dengan Microsoft Excel

MODUL II SQL A. TUJUAN

Rizqi Fitri Handayani

Tahap Instalasi PostgreSQL di Windows

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

Basis Data Relational

PERINTAH DASAR MySQL

SISTEM BASIS DATA 1. WAHYU PRATAMA, S.Kom., MMSI.

BAHASA QUERY KOMERSIAL

LAPORAN TUGAS BASIS DATA I

Instalasi CMS Joomla di Web Hosting

Rangga Praduwiratna

BAHASA QUERY KOMERSIAL

Cara Installasi Operating Sistem Mikrotik Pada PC

Transkripsi:

Partisi Tabel dan Partisi Index Pada Database Oracle Mudafiq Riyan Pratama mudafiq.riyan@yahoo.com http://dhafiq-san.blogspot.com/ Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com. Pendahuluan Oracle merupakan software database yang banyak dipakai di perusahaan besar di seluruh dunia saat ini. Software ini juga banyak diminati oleh para konsultas pembuat aplikasi yang berkaitan dengan database. Sistem keamanannya yang handal membuat para professional yang berkecimpung dalam dunia database lebih memilih oracle sebagai perangkat untuk menunjang kegiatan bisnis mereka. Disamping sistem security yang handal, Oracle merupakan software database yang bisa menampung serta mengelola data dengan kapasitas yang sangat besar serta dapat mengaksesnya dengan sangat cepat pula. Sintaks SQL nya yang hampir seluruhnya telah memenuhi standart ANSI-92 lebih memudahkan para programmer database dalam membangun aplikasi baik dari sisi back end maupun dari sisi front end. Demikian pula bagi administrator yang berkecimpung dalam menangani administrasi database serta bertanggung jawab terhadap keamanan database akan merasa diuntungkan serta dimudahkan dengan software Oracle yang lebih establish ini. Oracle telah menyediakan fitur untuk mempartisi tabel, yang berfungsi agar tabel dapat dibagi menjadi beberapa kriteria, contohnya kita mempunyai tabel suplier, tabel customer, dll, guna dari partitioned table ini agar dapat memanajemen database yang berukuran besar, sehingga menjadi database yang lebih terstruktur. Fitur lain yang 1

dimiliki oleh oracle adalah index. Secara umum, index digunakan untuk mempercepat perncarian data didalam tabel database relasional. Isi 1. Partition Tables Pada oracle 10g telah disediakan suatu method partisi yang memungkinkan seorang database administrator untuk melakukan pembagian terhadap tabel yang dimilikinya. Partisi dalam oracle 10g terdiri dari: a. Range Partition Range partition adalah pembagian suatu tabel ke dalam beberapa bagian yang didistribusikan kepada kelompok tertentu (berdasarkan kriteria tertentu). Berikut kita akan membuat suatu table yang sekalian akan dibuatkan partisi berdasarkan range-range tertentu. Pembuatan range dapat dilakukan dengan menggunakan script berikut. Check this out: 2

ANALISA: query diatas merupakan query pembuatan tabel suplier dengan beberapa atributnya, kemudian pembuatan partisi ini berdasarkan range dari kode_suplier yang mana terdapat beberapa partisi. Dalam hal ini, partisi yang dibuat adalah 4 range, yaitu suplier1, suplier2, suplier3, suplier4. Partisi dengan nama suplier1 memiliki range kode_suplier antara 1-99 (karena keterangannya disitu adalah less than yang berarti kurang dari), sehingga kode_suplier=100 itu masuk pada partition suplier2. Partisi dengan nama suplier2 memiliki range kode_suplier antara 100-199. Partisi dengan nama suplier3 memiliki range kode_suplier antara 200-299. Partisi dengan nama suplier4 memiliki range kode_suplier antara 300-399. 3

PEMBUKTIAN: Disini kami insert data dengan kode_suplier=50 menggunakan query: insert into suplier values (50, Mudafiq, Jember ) Maka masuk pada partition suplier1. Kita cek isi dari partition suplier1 dengan query: select * from suplier partition(suplier1). Kode_suplier=50 masuk pada range partisi suplier1. Kemudian kita cek untuk kode_suplier=100 menggunakan query: insert into suplier values (100, Abbi, Jember ) Maka masuk pada partition suplier2. Kita cek isi dari partition suplier2 dengan query: select * from suplier partition(suplier2). 4

Nah untuk kode_suplier=100 masuk pada range partition dengan nama suplier2. Bahwasanya kode_suplier=200 akan masuk pada partition suplier3, kode_suplier=300 masuk pada partition suplier4. 5

Yang jadi pertanyaan, bagaimana jika kode_suplier=400 dan selebihnya?? Mari kita insert-kan data dengan kode_suplier=400 menggunakan query: insert into suplier values (400, Ivan, Mojokerto ) Kita insert-kan data dengan kode_suplier=450 menggunakan query: insert into suplier values (450, Pipit, Balikpapan ) 6

Untuk kode_suplier=400 dan selebihnya tidak akan bisa di-insert-kan. Dari sini dapat kami simpulkan bahwasanya range partition ini akan membatasi ID berdasarkan range yang telah diset. Jadi pada percobaan diatas, kode_suplier tidak dapat di-insert-kan jika 400. Sehingga batasan ID berdasarkan settingan dari partisinya. Jika melebihi batas range yang telah didefinisikan, maka data tidak akan bisa tersimpan. b. List Partition Pembuatan list partition dapat dilakukan dengan menggunakan script berikut: Berikut kita akan membuat tabel penjualan yang kemudian dipartisi berdasarkan list dari jumlah_buku. 7

ANALISA: Tabel penjualan ini dipartisi berdasarkan list dari jumlah_buku. Sehingga jika jumlah_buku antara 1-5 termasuk pada partition sedikit, jumlah_buku antara 6-10 termasuk pada partition sedang, sedangkan untuk jumlah_buku > 10 akan masuk pada partition banyak (karena pada query di atas didefinisikan secara default, yaitu jumlah list jika tidak termasuk dalam partition-partition yang ada). PEMBUKTIAN: Kita coba insert-kan data dengan jumlah_buku=5 Dengan query: insert into penjualan values (1, '01-05-2010', 101, 5, 50000) 8

Kemudian kita lihat isi partition sedikit dengan query: select * from penjualan partition(sedikit) Data dengan jumlah_buku=5 akan masuk pada partition sedikit karena parition sedikit didefinisikan dengan list=1,2,3,4,5. Kita coba insert-kan data dengan jumlah_buku=9 Dengan query: insert into penjualan values (2, '01-05-2010', 102, 9, 900000) Kemudian kita lihat partition sedang dengan query: select * from penjualan partition(sedang). Begitu pula untuk partition sedang, jika list dari jumlah_buku=9 akan masuk pada partition sedang. Karena list untuk partition sedang adalah 6,7,8,9,10. 9

Jika jumlah_buku lebih dari jumlah yang telah didefinisikan di partition sedikit dan sedang, akan masuk pada partition berapa ya? Nah untuk mengetahui jawabannya, kita coba insert-kan data dengan jumlah_buku=50 Dengan query: insert into penjualan values (3, '01-05-2010', 103, 50, 1500000) Kemudian kita lihat partition banyak dengan query: select * from penjualan partition(banyak). Ternyata memang benar bahwasanya untuk jumlah_buku yang tidak didefinisikan pada partition yang lain, maka masuk pada partition yang sifatnya default. 10

2. Altering Partition Tables a. Menambah Range Partitions Mari kita coba menambahkan range partition yang ada pada tabel suplier yang mana partisinya hanya sampai suplier4 dengan range < 400. Berikut kita tambahkan partition suplier5 dengan range < 500 menggunakan query: alter table suplier add partition suplier5 values less than(500); < 500. Telah berhasil ditambahkan partition suplier5 pada tabel suplier dengan range 11

Mari kita lihat partisi yang ada dengan query: select * from user_tab_partitions Nah disitu (dilingkari merah) itu adalah partisi yang baru saja kita tambahkan. 12

b. Menambah List Partition Mari kita tambahkan partition by list pada tabel penjualan. Disini kita akan menambahkan partition banyak yang ada pada tabel penjualan, dikarenakan partition banyak telah ada, namun tipenya default dan belum didefinisikan berdasarkan list tertentu. Maka kita cek terlebih dahulu dengan query: select * from user_tab_partitions Pada tabel penjualan dengan partition banyak telah ada, tipe high_valuenya adalah default yang berarti bahwa tipe yang secara otomatis akan dimasuki data jika datanya memiliki list yang belum didefinisikan pada partisi yang lain. 13

Kemudian kita buat partition by list dengan nama partisi banyak dengan values antara 16, 17, 18, 19, 20 dengan query: alter table penjualan add partition banyak values (16,17,18,19,20). Apakah bisa kita menambahkan partisi yang telah ada? Ternyata kita tidak bisa menambahkan partisi yang sudah ada. Nah untuk mengatasi ini, kita hapus dulu partition dengan nama banyak yang ada pada tabel penjualan dengan query: alter table penjualan drop partition banyak 14

Nah setelah itu, kita tambahkan list partition banyak dengan values antara 16, 17, 18, 19, 20 dengan query: alter table penjualan add partition banyak values (16,17,18,19,20) Kita telah tambahkan partition banyak dengan values 16, 17, 18, 19, 20. 15

Mari kita cek partisi pada penjualan dengan query: select * from user_tab_paritions Partition banyak dengan values 16, 17, 18, 19, 20 telah berhasil ditambahkan. Lihat pada tanda merah. 16

c. Mengganti Nama Partition Mari kita coba untuk mengubah nama partisi. Berikut ini kita akan mencoba untuk mengubah nama partisi yang ada pada tabel suplier. Sebelumnya kita lihat dulu pada partisi suplier1 dengan query: select * from user_tab_paritions Partition_name suplier1 memiliki high_value=100. Mari kita ubah nama partisi suplier1 menjadi suplier6 dengan query: alter table suplier rename parition suplier1 to suplier6 17

user_tab_paritions. Partisi dengan nama suplier1 telah diubah menjadi suplier6. Mari kita cek keberadaan partition suplier6 dengan query: select * from 18

Partition_name suplier6 telah menggantikan suplier1 yang mana buktinya adalah high_value dari suplier6 sama dengan high_value dari suplier1 sebelumnya. 19

d. Modifying Partition Modifying partition adalah menambah isi dari suatu pertisi. Kita bisa memodifikasi isi dari suatu partisi. Mari kita coba untuk memodifikasi jumlah values yang ada pada partisi sedikit pada tabel penjualan dengan query: alter table penjualan modify partition sedikit add values (11,12,13,14,15); Values dari partisi sedikit yang semula hanya pada list 1,2,3,4,5 telah ditambahkan dengan 11,12,13,14,15. Mari kita cek informasi partisinya dengan query: select * from user_tab_paritions: 20

Jumlah high_value yang telah dimodifikasi dengan tambahan value 11,12,13,14,15. Maka untuk jumlah_buku diantara 1-5 dan 11-15 akan masuk pada partisi sedikit. e. Merging Partition Merging partition adalah menggabungkan dua partisi menjadi satu. Berikut kita akan menggabungkan partisi suplier3 dan suplier4 menjadi suplier34 dengan query: alter table suplier merge partitions suplier3, suplier4 into partition suplier34; 21

Partisi dengan nama suplier3 dan suplier4 digabungkan menjadi suplier34. Sehingga untuk nilai value dari suplier3 (<300) dan suplier4 (<400) akan menjadi suplier34 (<400). Kita cek partition dengan query: select * from user_tab_paritions Jadi, suplier34 memiliki range antara 200-399 (200 jumlah_buku < 400). 3. Drop Partition a. Menghapus Isi Suatu Partisi Kita akan mencoba untuk menghapus isi data yang masuk pada partisi sedikit. Sebelumnya kita lihat dulu apa isi dari partisi sedikit dengan query: select * from penjualan partition (sedikit) Itu isi data yang masuk pada partition sedikit. Kita hapus dengan query berikut: alter table penjualan truncate partition sedikit 22

Kemudian kita cek kembali isi dari partisi sedikit dengan query: select * from penjualan partition (sedikit) Ternyata tidak memunculkan data apa-apa. Terlihat pada keterangannya: no rows selected. 23

b. Menghapus Paritisi Suatu Tabel Kita akan mencoba untuk menghapus partisi suplier5 yang ada pada tabel suplier. Sebelumnya, kita lihat dulu apakah ada partisi dengan nama suplier5 dengan query: select * from user_tab_paritions Kemudian, kita hapus partisi suplier5 tersebut dengan query: alter table suplier drop partition suplier5 Setelah menghapus partition suplier5, kita cek parition lagi dengan query: select * from user_tab_paritions 24

Partisi dengan nama suplier5 tidak ditemukan, karena telah berhasil dihapus. 25

4. Melihat Informasi Partisi Untuk melihat berapa banyak table yang telah dipartisi, dapat menggunakan script berikut: select * from user_part_tables; Dari keterangan gambar di atas, table suplier memiliki 3 partition dengan tipe range partition, sedangkan tabel penjualan memiliki 3 partition list. Untuk melihat informasi level partisi, dapat menggunakan query berikut: select * from user_tab_partitions 26

Tabel suplier memiliki 3 partition list: suplier2, suplier34, dan suplier6. Sedangkan tabel penjualan memiliki 3 partition range: sedikit, sedang, dan banyak. 5. Partition Index a. General Index Berikut script untuk membuat general index: create index ind on penjualan (id_penjualan); Dari percobaan di atas, kita membuat index dengan nama ind untuk id_penjualan yang ada pada tabel penjualan. Query di atas merupakan query umum untuk pembuatan index pada tabel. 27

b. Function Based Indexes Untuk membuat function based indexes menggunakan query: create index upper on suplier (nama_suplier); Proses di atas adalah untuk membuat index secara penilaian uppercase (huruf besar) pada kolom nama_suplier pada tabel suplier. Dengan kata lain, index akan mendeteksi pencarian dalam huruf besar. 28

c. Global Partition By Range Untuk membuat global partition by range dapat menggunakan script seperti gambar dibawah ini: Dengan menggunakan global partition by range, memungkinkan untuk meng-index data berdasarkan kolom jumlah_buku pada tabel penjualan di tiap partisi. Jadi dipercobaan di atas telah ditentukan index data dari jumlah_buku. Untuk partisi j1: hanya 5 jumlah buku yang dapat terindex (karena memang telah ditentukan jumlah buku pada partisi pertama itu hanya 5 buku, untuk partisi j2 dapat di index 10 buku, dan selebihnya masuk pada partisi j3. 29

d. Global Partition By Hash Untuk membuat global partition by hash menggunakan query seperti dibawah ini: Proses di atas membuat index partition by hash. Jika kita ingin melakukan partisisi namun tidak cocok dengan RANGE ataupun LIST, maka kita bisa menggunakan HASH partition. Penentuan nilai mana di taruh di partisi mana itu diatur secara internal oleh Oracle (berdasarkan hash value). Kenapa kita memaksakan memakai partisi sementara tidak cocok dengan RANGE ataupun LIST? Lha, ya itu tadi, kita ingin mendapat manfaat dari filosofi PARTITIONING di mana data disebar ke segment-segment yang berbeda. 30

Secara otomatis Oracle akan membuat 4 partisi (sesuai dengan nilai dari parameter PARTITIONS). Dalam contoh di atas, definisi tablespace ditaruh di definisi tabel, yang berarti semua partisi (segment) di taruh di tablespace yang sama. 31

e. Drop Index Berikut untuk menghapus atau drop index pada general index dengan nama index ind, menggunakan query: drop index ind Dari percobaan di atas merupakan query untuk menghapus index dengan nama ind yang mana ind merupakan nama index untuk general index. 32

Berikutnya menghapus index upper untuk function based index. Langkah di atas merupakan proses untuk menghapus index dari function based index dengan nama upper. 33

Kesimpulan Pengguanaan database yang berukuran besar oleh sebuah perusahaan adalah sangat baik sekali, namun jika tanpa disertai penanganan untuk memanajemen database yang baik dan terstruktur, seperti penanganan tabel dalam sebuah database berukuran besar, maka semua itu akan sia-sia. Salah satu fitur yang ditawarkan oleh oracle dalam menangani masalah tersebut ialah fitur mempartisi tabel. Fitur ini diharapkan dapat memberikan solusi yang baik bagi sebuah perusahaan, dalam memanajemen databasenya yang berukuran besar, sehingga menjadi database yang terstruktur. =0=0=0=0=0=0=0=0= Selamat Mencoba =0=0=0=0=0=0=0=0= 34

Biografi Penulis Mudafiq Riyan Pratama. Lahir di Jember pada tanggal 9 Mei 1989. Kediaman di Jember. Memulai pendidikan TK dan SD di Jenggawah. Kemudian menempuh SMP di SMPN 6 Jember yang kemudian dilanjutkan ke SMAN 2 Jember. Dan saat ini sedang menempuh kuliah S1 jurusan Teknik Informatika di Universitas Muhammadiyah Malang angkatan 2007. Didunia maya, penulis lebih sering memakai nama Dhafiq Sagara. YM : mudafiq.riyan@yahoo.com FB : ray_dafier@yahoo.co.id Blog : http://dhafiq-san.blogspot.com 35