List partition merupakan pembagian tabel yang berdasarkan list yang telah dideklarasikan terlebih dahulu.
Misal pada sebuah kasus, data mengenai kota asal pegawai yang dikelompokkan berdasarkan provinsi. Jawa Timur: Jember, Malang, Surabaya, Banyuwangi, dll. Jawa Barat: Cirebon, Tangerang, Bandung, dll. Jawa Tengah: Solo, Semarang, dll. Jadi list kota dideklarasikan terlebih dahulu, sehingga ketika data diinputkan, maka data pegawai akan dikelompokkan berdasarkan wilayah provinsinya.
IMPLEMENTASI LIST PARTITION
Konsep list partition hampir sama dengan range partition, hanya saja kalau list partition ini mendaftarkan terlebih dahulu apa yang akan dikelompokkan. Pada contoh kasus di atas, harus mendaftarkan terlebih dahulu nama-nama kota ditiap provinsi.
- Membuat tabel pegawai sebagai tabel utama:
create table pegawai (
nip integer not null primary key,
nama_pegawai varchar(50),
kota_asal_pegawai varchar(20),
jabatan_pegawai varchar(20)
) - Membuat list partition tabel untuk kota asal pegawai:
create table pegawai_jatim(
check (kota_asal_pegawai in ('jember', 'malang', 'surabaya', 'sidoarjo', 'bojonegoro', 'pasuruan'))
)inherits(pegawai);
create table pegawai_jateng(
check (kota_asal_pegawai in ('semarang', 'solo', 'salatiga', 'blora', 'pekalongan', 'magelang'))
)inherits(pegawai);
create table pegawai_jabar(
check (kota_asal_pegawai in ('bandung', 'cirebon', 'tangerang', 'bogor', 'depok', 'purwakarta'))
)inherits(pegawai); - Agar data yang disisipkan/diinputkan masuk pada partisi yang sesuai, maka perlu adanya aturan secara kompleks yang mengatur hal ini. Gunakan query seperti berikut:
create rule kota_asal_pegawai_jatim as
on insert to pegawai where
(kota_asal_pegawai in ('jember', 'malang', 'surabaya', 'sidoarjo', 'bojonegoro', 'pasuruan'))
do instead
insert into pegawai_jatim values (new.nip,
new.nama_pegawai,
new.kota_asal_pegawai,
new.jabatan_pegawai);
create rule kota_asal_pegawai_jateng as
on insert to pegawai where
(kota_asal_pegawai in ('semarang', 'solo', 'salatiga', 'blora', 'pekalongan', 'magelang'))
do instead
insert into pegawai_jateng values (new.nip,
new.nama_pegawai,
new.kota_asal_pegawai,
new.jabatan_pegawai);
create rule kota_asal_pegawai_jabar as
on insert to pegawai where
(kota_asal_pegawai in ('bandung', 'cirebon', 'tangerang', 'bogor', 'depok', 'purwakarta'))
do instead
insert into pegawai_jabar values (new.nip,
new.nama_pegawai,
new.kota_asal_pegawai,
new.jabatan_pegawai); - Insert data:
insert into pegawai values (1, 'Mudafiq Riyan', 'jember', 'direktur utama');
insert into pegawai values (2, 'Ivan Prasetya', 'surabaya', 'kepala bagian');
insert into pegawai values (3, 'Dhafiq Sagara', 'bandung', 'karyawan');
insert into pegawai values (4, 'Dwi Sari', 'magelang', 'karyawan'); - Pengecekan:
Tidak ada komentar:
Posting Komentar