mapdb, injektor PDDIKTI Basit Adhi Prabowo oleh:
Tentang Penjelasan tentang penggunaan mapdb Tautan: https://pdsi.unisayogya.ac.id/tag/injector/ Sifat: Open Source Penulis Utama: Basit Adhi Prabowo, S.T. basit@unisayogya.ac.id
Bahasan Cek Tabel Ekstrak Sinkron Internal Filter Injek Injek Insert Update
Cek Tabel Apakah tabel sudah dipetakan Tabel Institusi kode nama field2 1 A X 2 B Y 3 C Z Tabel PDDIKTI kode nama 1 A 2 B 3 C 4 D pt_agama ok agama jurusan ak_programstudi belum dipetakan jabfung Sama? Cek Tabel Apakah tabel sudah dipetakan Apakah tabel referensi Institusi sudah sama dengan tabel referensi PDDIKTI (setidaknya nama dan kode-nya)
CEK TABEL 1 1 1 4 3 5 Membandingkan data tabel Institusi dengan data tabel PDDIKTI select guid, field2, field3, ... from A where <filterInstansi> order by `field1 (pk)` $this->GetRecordset(“P”) 1 2 3 4 5
Tabel Institusi kode GUID1 GUID2 Ekstrak d555e532-8dfa-490b-a30b-72ab03274475 944f5369-5183-4841-8543-c7610f1bebf4 1 Tabel PDDIKTI UUID1 UUID2 d555e532-8dfa-490b-a30b-72ab03274475 944f5369-5183-4841-8543-c7610f1bebf4 Ekstrak Memasukkan data dari tabel PDDIKTI ke tabel Institusi (tanpa update UUID/GUID)
EKSTRAK 5 4 5 4 6 7 3 1 2 Ambil data tabel PDDIKTI, kemudian dimasukkan ke tabel Institusi (jika belum ada) GetRecordset(“P”, <filtertahunakademik>) insert into A (guid, field2, field3, ...) select nilai[id], nilai[fieldb], nilai[fieldc], ... from A where not exists (select 1 from A where fieldInstitusi[0]=nilai[fieldPDDIKTI[0]] and ...) limit 0,1 1 2 3 4 5 3 3 6 7
Tabel Institusi nim namamahasiswa GUID 123456 Fulan 456789 John Doe Sinkron GUID d555e532-8dfa-490b-a30b-72ab03274475 944f5369-5183-4841-8543-c7610f1bebf4 Tabel PDDIKTI UUID nim namamahasiswa d555e532-8dfa-490b-a30b-72ab03274475 123456 Fulan 944f5369-5183-4841-8543-c7610f1bebf4 456789 John Doe Sinkron Proses menghubungkan 1 baris di tabel Institusi dengan 1 baris di tabel PDDIKTI melalui UUID/GUID primary key 1 baris data PDDIKTI tersebut
SINKRON 8 1 5 2 4 3 Langkah 1: check, ambil data tabel Institusi yang belum ada UUID/GUIDnya, kemudian dicari di tabel PDDIKTI select `field1 (pk)`,<fieldInstitusi>, <fieldtambahanInstitusi> from A a where `a.guid`="" or isnull(`a.guid`)) and <filterInstitusi> order by <fieldorderInstitusi> GetRecordset(“P”, <fieldPDDIKTI>=nilai[<fieldInstitusi>]) 1 2 3 4 5 5 6 7 8 9 2
SINKRON 4 3 2 1 Langkah 2: update guid, UUID/GUID yang didapat dari PDDIKTI disimpan ke Institusi update Aa set a.guid=nilai[`fielda (pk)`] where `field1 (pk)`=nilai[`field1 (pk)`] 1 2 3 4 4
Tabel Institusi nim namamahasiswa GUID 123456 Fulan Update GUID Injek d555e532-8dfa-490b-a30b-72ab03274475 Tabel PDDIKTI UUID nim namamahasiswa d555e532-8dfa-490b-a30b-72ab03274475 ID Baru 123456 Fulan Injek - Insert Proses memasukkan data dari tabel Institusi ke dalam tabel PDDIKTI, kemudian akan mendapatkan UUID/GUID primary key untuk setiap baris baru dan disimpan ke dalam tabel Institusi
INSERT INJEK 7 10 2 10 2 4 8 9 5 6 Tidak berlaku untuk internalfilter 3 1 Langkah 1: injek, ambil data tabel Institusi yang belum ada UUID/GUIDnya, kemudian dimasukkan ke tabel PDDIKTI select `field1 (pk)`, field2, field3, ..., <fieldtambahanInstitusi> from A a where a.<fieldtahunakademikInstitusi> = parameter["tahunakademik"] and isnull(guid) and <filterInstitusi> InsertRecord(“P”, array(“fieldb”=>nilai[field2], “fieldc”=>nilai[field3], ...)) 1 2 3 4 5 6 7 8 9 10 2 10 2
-: SAMA DENGAN LANGKAH 2 PROSES SINKRON :- INJEK INSERT 4 3 2 1 Langkah 2: update guid, UUID/GUID yang didapat dari PDDIKTI disimpan ke Institusi update Aa set a.guid=nilai[`fielda (pk)`] where `field1 (pk)`=nilai[`field1 (pk)`] 1 2 3 4 4 -: SAMA DENGAN LANGKAH 2 PROSES SINKRON :-
Tabel Institusi nim namamahasiswa GUID 123456 Joh Doe Update GUID Injek d555e532-8dfa-490b-a30b-72ab03274475 Tabel PDDIKTI UUID nim namamahasiswa d555e532-8dfa-490b-a30b-72ab03274475 123456 Fulan 123456 John Doe Berubah Injek - Update Proses memperbarui data dari tabel Institusi ke dalam tabel PDDIKTI, kemudian memasukkan ulang UUID/GUID primary key dari tabel PDDIKTI dalam tabel Institusi
UPDATE INJEK 8 11 11 5 9 10 6 7 3 Tidak berlaku untuk internalfilter 2 4 1 Langkah 1: injek, ambil data tabel Institusi yang belum ada UUID/GUIDnya, kemudian dimasukkan ke tabel PDDIKTI select `field1 (pk)`, <fieldwherePDDIKTI>, <fieldupdatePDDIKTI>, <fieldtambahanInstitusi> from A a where a.<fieldtahunakademikInstitusi> = parameter["tahunakademik"] and isnull(guid) and <filterInstitusi> UpdateRecord(“P”, array(“key”=>array(“fieldwherePDDIKTI[0]”=>nilai[field2], ...), “data”=>array(“fieldupdatePDDIKTI[0]”=>nilai[field2], ...)) 1 2 3 4 5 6 7 8 9 10 2 11 3 11
-: SAMA DENGAN LANGKAH 2 PROSES SINKRON :- INJEK UPDATE 4 3 2 1 Langkah 2: update guid, UUID/GUID yang didapat dari PDDIKTI disimpan ke Institusi update Aa set a.guid=nilai[`fielda (pk)`] where `field1 (pk)`=nilai[`field1 (pk)`] 1 2 3 4 4 -: SAMA DENGAN LANGKAH 2 PROSES SINKRON :-
select * from A a join B b on b.kd=a.kd where [internalfilter] select * from A a join B b on b.kd=a.kd where a.field1=0 a.field1=0 Internal Filter Membuat query sendiri dengan klausa where [internalfilter], tidak menggunakan mekanisme mapping
Terima Kasih