Szinkronizálás
Sziasztok!
Pár hónapja használom a PHP-t. Azt kellene megoldanom, hogy a helyi hálózaton használt adatbázisból (PostgeSql) adatokat tudjak frissíteni a MySql adatbázisba, ami persze webszerveren van. Az a kérdés, ezt hogyan lehetnem automatikusan megoldani, mert semmi kedvem akár naponta többször is scripteket készíteni, és kézzel frissíteni az adatbázisomat.
■ Pár hónapja használom a PHP-t. Azt kellene megoldanom, hogy a helyi hálózaton használt adatbázisból (PostgeSql) adatokat tudjak frissíteni a MySql adatbázisba, ami persze webszerveren van. Az a kérdés, ezt hogyan lehetnem automatikusan megoldani, mert semmi kedvem akár naponta többször is scripteket készíteni, és kézzel frissíteni az adatbázisomat.
kapcsolódás
Mit nem értek?
Hogy gondoltad az adatbázisok közti szinkronizációt, parancssori eszközökkel?
A bash-awk-... vonulattal csak olyat tudok elképzelni, hogy textbe ki, onnan valami mysql utility-vel adatbázisba be.
Ez meg nem tűnik optimális eljárásnak.
Én úgy képzelném a megoldást, hogy valami köztes programnyelvből (akát PHP-ből, ha nincs más), ami be tud konnektálni mindkét adatbázisba, szépen átpakolni egyikből a másikba a szükséges adatokat, lehetőleg tempolrális file-ok létrehozása nélkül...
Miért?
Persze én nem vagyok nagy parancssori mágus, de szerintem a fenti kivitelezhető.
Jó, végülis pipe-on keresztül
Hogy gondoltad az adatbázisok
Parancssort automatikusan?
(A történet egyébként annyi, hogy az ügyfelek beiktatott megrendeléseiről szeretném infót megadni a weben az ügyfeleknek, hogy nyomon követhessék a megrendelés állapotát.) Máshol hogyan oldják ezt meg?
Ütemezés
X = feladat és körülményfüggő, hogy mennyire gyors reakcióra van szükség.
1 perc, 5 perc, 10 perc, fél óra, egy óra, fél nap, ahogy jól esik.
Crontab
Máshol hogyan oldják ezt
Persze az, hogy neked MySQL-be kell átnyomni az adatokat lényegesen szűkíti a lehetőségeket.
Ha azonnali és optimális replikálás kell, én írnék hozzá egy célszerszámot:
Megjegyzés, hogy a psql parancssoros kliens illetve egy csomó rutinkönyvtár hiányosan vagy egyáltalán nem kezeli a listen/notify jelzéseket. Konkrétan csak a QtSql-t tudom, hogy tökéletesen kezeli.
log
És eszméletlenül lassít,
szerk: bár lehet, hogy már megint keverem a szezont a fazonnal és eredendően auditálási céllal lettek kitalálva ezek a dolgok...
---
De már eleve nem értem a kérdezőt: nincs itt valami nagyon elszúrva a tervezésnél? Miért kell kétféle adatbázisba írni? Ráadásul mi lesz a tranzakciókkal? Mi van, ha rollbackelni kell? Azt hogy oldja meg?
Elsőre úgy értettem, hogy egy x időközönként lefutó eljárást akar, ami egyezteti a lokális és a távoli adatbázis tartalmát. De most úgy tűnik, párhuzamosan írná a két adatbázist úgy, hogy ne kelljen a saját, egy adatbázissal dolgozó programját módosítani(???).
Két adatbázis
Nem ragaszkodom két adatbázishoz, de ha nem így, akkor hogyan? A cél, hogy az ügyfél megrendeléseit nyomon követhesse a weben.
Elsőre arra gondoltam, készítek egy ugyan olyan szerkezetű táblát MySql-ben, mint ami PostgreSql-ben van.(Hozzáteszem az adatbázisban nem olyan egyszerüen vannak az adatok, hogy ezt egy táblából kiolvasva teljes mértékben át lehessen tenni MySql-be, ehhez készítek egy táblát (triggerel), melybe beírom az ügyfél adatait, megrendelésének statuszát, és ezt szeretném közzétenni a weben. Ennek a táblának a szerkezete megfelelne a MySql adatbázis tábla szerkezetével. Így tranzakciós problémákkal sem lesz gond.) Ezt a két táblát szeretném, hogy szinkronban legyenek egymással, de ha ez nem jó megoldás, akkor várom a lehetséges ötleteket.
Miért MySQL?
De ha már marad Postgre-ben,
View
A kulcsszó a már említett