Üdv, Python programozással kapcsolatban lenne kérdésem!?
Látatlanban nem tudom az adatbázisok felépítését. Ezért kezdem azokkal, meg mivel írtad hogy kezdő vagy. Gondolom az adatintegritás fontos a helyi és a távoli adatbázisnak olyannak kell lennie, hogy adatbázis szinten támogassa azt ha bárhol megszakad bármi miatt is a szkript vagy a kapcsolat akkor se legyen adatvesztés. A python szkirpt olvassa ki az aktuális felszinkonizálandó adatot a localhost-ból majd írja bele a távoli adatbázisba ez után könyvelje a localhost adatbázisban hogy sikeres felszinkorizálás azon adatokra. Ha akkor szakad meg amikor lekönyvelné a localhoston hogy sikeres akkor újraindításkor újra próbálná felszinkronizálni, ezt az adatbázisszerver utasítsa vissza vagy elsődleges kulccsal vagy unique index mezővel, majd kivételkezeléssel ezt is le kell kezelni python-nal, hogy az mégis sikeres és lekönyvelni a localhoston.
Amit kérdezel szálkezeléssel meg lehet oldani.
A PriorityQueue felhasználható erre. Ha van egy ilyen típusú priolitási sorod pl. q változóba akkor q.put(value) érték esetén az értéktől függ, hogy a q.get() sorrendje szerint mikor következik. A kisebb értékeket előrébb sorolja. Felszeleteled feltöltendő műveletekre a küldendő adatokat és tuple-val tudod szabályozni hogy az egyik magasabb prolitást élvezzen q.put((1,adat1)) q.put((1,adat2)) q.put((1,adat3)) q.put((0,adat3)) . A rendezési reláció miatt a (0,adat3) miatt előre veszi a q.get, mert a 0<1 és lexikografikus rendezés szerint rendeződik. Az adatokra pedig legyen értelmezve rendezési reláció, pl stringet int-el nem lehet összehasonlítani. Ha az azonos priolitással rendelkező adatokat is meg akarod határozni milyen sorrendbe töltse fel, nem a rendezési reláció szerint pl érkezéis sorrendben akkor ezt is lehet szabályozni tuple-el ugyanígy értelemszerűen.
Ez az elgondolás eleve hibás, hogy egyszer ide írunk, egyszer oda írunk, aztán még jól meg is kavarjuk köztük az adatokat. Egyetlen egy dolog menjen félre és mindkét adatbázis korrupt lesz. Azt utána már a jóisten sem hozza helyre vagy mondjuk úgy, hogy legalább 7 számjegyű összeg fog lemenni a bankszámláról érte.
Minden adatbázishoz vannak szinkronizáló toolok, ha a klasszikus master-slave felállás nem jó a feladatra. Tessék használni őket és programból csak egy adatbázissal dolgozni.
Teljesen jó az alapelgondolás.
Bohócokra ne hallgass.
Van két szervized.
Az egyik ír a távoli adatbázisba, ha nem sikerül, akkor a helyibe.
A másik pedig szinkronizál.
Nincs minek félremennie vagy csilliós korrupcióról beszélni, eke egyszerű az egész.
Szerintem a tervezés nem jó. Azok oldalát erősítem, akik újra terveznék ezt.
Alapvetően van rá mód, hogy ne kelljen foglalkozni ilyesmivel, hogy szinkronizálunk. Erre vannak a clasteres, több node-s adatbázisok amik önmagukat tudják szinkronizálni.
CAP-t is erről szól. Lehetőség közül válasz 2, a három közül.
Ha nagyon write-heavy és a network se megbízható, akkor kukáznám a MySQL-t és egy Cassandra-t vetnék be. Ha fontos a konzisztens adat, akkor MongoDB, igaz míg egy új master felál az pár másodperc. Addig pufferelsz és az új masterbe meküldesz mindent. Majd a DB lerendezi házon belül az adatszórást.
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!