Berhubung thread untuk delphi dan pascal msh digembok, semoga thread ini bisa memfasilitasi permasalahan seputar programming Delphi dan Pascal Family.
Next time, buat om moderator, bisa di merge ke existing thread.
Original Posted By spiderF►bikin program sinkronisasi di delphi gimana ya? databasenya pake mysql... jadi ada 2 database, pusat dan daerah .... jadi yg daerah mau di sinkronisasi ke pusat ....jadi data pusat akan selalu update ..tolongin dong ...terima kasih sebelumnya
kalo kayak gini gimana gan?
kalo menurut gua: cara 1: tanpa merombak aplikasi existing
Spoiler for cara.1:
cara1: tanpa merombak aplikasi existing
requirement minimum: MySQL versi >= 5.1.x
FLOW: A. setting db
seting/aktifkan fitur logging mysql utk log semua aktifitas(query2 yg terjadi di mysql tsb)
Code:
set sql_log_off=0;
set global general_log=ON;
set global log_output='TABLE';
*query diatas bisa dijalankan dg privileges user :super
\tgimana ada datanya kan?? nah data itu bisa digunakan utk proses sinkronisasi
\t B. aplikasi sinkronisasi(sync-db)/rules:
aplikasi sync-db dijalnakan saat tidak ada aktifitas lagi terkait dg database/sistem
saat aplikasi sync-db di jalankan... log db di stop
Code:
set sql_log_off=1;
set global general_log=OFF;
\t
*query diatas bisa dijalankan dg privileges user :super
filter data yg akan di sync (filter sesuai yg diinginkan)
misal: memastikan log hari ini, yg di sync perintah insert, user yg akses "uapl"
\t
Code:
select * from mysql.general_log where date(event_time)=curdate() and user_host like '%uapl%' and argument like '%insert%';
hasil query silahkan di execute... ke pusat
setelah yakin data yg harus di sync ke pusat udah OK semua..., hapus semua data mysql.general_log
\t
Code:
truncate table mysql.general_log;
kurang lebih gitu flownya...
kelebihan & kekurangan cara 1: A. kelebihan
tidak melakukan perubahan sama sekali terkait aplikasi existing (aplikasi utama)
proses mudah...
tidak memerlukan network dg speed tinggi
B. kekurangan
req min: MySQL >= 5.1x
( versi sebelumnya log tidak support ke table // bisa ny ke file...jadi kalo pake <=5.0x lebih ribet...)
kalo aplikasi existing(utama) cukup/sangat kompleks..
akan terjadi pembengkakan record mysql.general_log yg cukup signifikan..
(mungkin bisa mempengaruhi speed system)... silahkan dibayangkan dan dicoba
\t
cara 2: membuat log table sendiri ( query2 yg siap di sync ke pusat)
Spoiler for cara.2:
cara 2: membuat log table sendiri ( query2 yg siap di sync ke pusat) requirement minimum:
programmer aplikasi existing(utama) mau malakukan perubahan / penyesuaian sistem
bikin table baru, misal nama sync_data
FLOW: A. bikin table sync_data
paling gampang adalah bikin table tiruan dari mysql.general_log
\t
Code:
create table sync_data like mysql.general_log
B. penyesuaian aplikasi existing (utama)
setiap Query(perintah/intruksi) yg menyebabkan data berubah dan perlu di "sync ke pusat"
maka query tsb di insert juga ke table sync_data
C. aplikasi sinkronisasi(sync-db)/rules:
filter data yg akan di sync ( ato ga usah di filter... krn udah di filter duluan di point B)
\t\t\t
Code:
select * from sync_data
hasil query silahkan di execute... ke pusat
abis itu record yg berhasil di sync, silahkan di maintenance... ( mo dihapus... ato diflag...utk history...)
kurang lebih gitu flownya...
kelebihan & kekurangan cara 2: A. kelebihan
rules / proses in your hand ( internal system).. jadi mo diperlakukan kayak apa ya terserah..
proses mudah...
tidak memerlukan network dg speed tinggi
semua versi MySQL ..
B. kekurangan
adanya perubahan sistem utama...
(jadi masalah kagak).. jangan2 program utama beli...?? jadi ada biaya lagi neh..
\t
\t
Code:
INTINYA cara1 & cara2 sama... beda di proses log nya aja[B]
cara 1 --> log memanfaaatkan fitur MySQL 5.1x
cara 2 --> log hasil dari internal sistem..[/B]