{"id":26677980,"url":"https://github.com/csaba79-coder/database-replication","last_synced_at":"2025-08-11T13:15:13.105Z","repository":{"id":278897907,"uuid":"937111796","full_name":"Csaba79-coder/database-replication","owner":"Csaba79-coder","description":"Database replication using MySQL Server - Spring - JPA - Hibernate","archived":false,"fork":false,"pushed_at":"2025-03-03T10:34:07.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-03T11:34:57.493Z","etag":null,"topics":["database-replication"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Csaba79-coder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-22T11:13:12.000Z","updated_at":"2025-03-03T10:34:11.000Z","dependencies_parsed_at":"2025-02-22T12:20:56.849Z","dependency_job_id":"617f2821-cfdd-4e77-bc5e-054872030e5a","html_url":"https://github.com/Csaba79-coder/database-replication","commit_stats":null,"previous_names":["csaba79-coder/database-replication"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csaba79-coder%2Fdatabase-replication","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csaba79-coder%2Fdatabase-replication/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csaba79-coder%2Fdatabase-replication/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csaba79-coder%2Fdatabase-replication/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Csaba79-coder","download_url":"https://codeload.github.com/Csaba79-coder/database-replication/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245591577,"owners_count":20640692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database-replication"],"created_at":"2025-03-26T05:14:35.352Z","updated_at":"2025-03-26T05:14:35.851Z","avatar_url":"https://github.com/Csaba79-coder.png","language":"Java","readme":"![img.png](src/main/resources/static/banner.png)\n\n# Transactional Replication\n\n## Pénzügyi tranzakciós rendszer 💰\n\nTáblák: account, transaction, user, audit_log\n\nLehetőségek:\n- Felhasználók közötti pénzátutalások.\n- Egyenleg frissítése valós időben replikációval.\n- Audit log replikálása, hogy minden tranzakció rögzítve legyen.\n\n## Funkciók és tranzakciók 🔄\n\n- Pénzutalás tranzakció\n  - Egy tranzakcióval frissíti a küldő és fogadó számlák egyenlegét.\n  - Minden sikeres tranzakció után létrehoz egy bejegyzést az `audit_log` táblában.\n- Valós idejű replikáció\n  - Az összes tranzakció automatikusan tükröződik egy másodlagos adatbázisban.\n  - Az audit napló is azonnal szinkronizálódik.\n- Tranzakciós védelem\n  - Rollback hiba esetén.\n  - Adatvesztés vagy duplikáció elkerülése.\n\n### Lépések 🚀\n\n1. Adatbázis séma megírása (DDL).\n2. Spring Boot beállítása tranzakciókezeléssel és MySQL replikációval.\n3. Tranzakciós szolgáltatások implementálása.\n4. Tesztek írása, hogy minden működjön.\n\n### SQL Command Classification 🗂️\n\n![img.png](src/main/resources/static/sql-command-classification.png)\n\n### Funkciók ✅\n\n- Minden tranzakcióhoz automatikusan létrejön egy audit bejegyzés.\n- Nyomon követhető, hogy ki és mikor hajtott végre egy adott műveletet.\n- Segít a hibák felderítésében és a biztonsági incidensek elemzésében.\n\n# Adatbázis Replikációs Módszerek\n\nA **snapshot replikáció** és a **transactional replikáció** két különböző típusú adatbázis-replikációs módszer, amelyek mindkettő arra szolgálnak, hogy az adatokat átvigyék egyik adatbázisból a másikba, de más-más módon és más céllal.\n\n## 1. Snapshot Replikáció 📸\n\n**Mi történik?**  \nA snapshot replikáció minden egyes replikációs ciklus során az adatbázis teljes állapotát (snapshot) másolja át a replikált adatbázisra. Más szóval, amikor a replikáció történik, a cél adatbázis teljesen felülíródik a forrás adatbázis aktuális állapotával.\n\n**Használati esetek:**\n\n- Akkor hasznos, ha nem szükséges a replikáció folyamatos frissítése.\n- Ha a forrás és a cél adatbázis gyakran frissül, és nem szükséges minden apró tranzakciót átvinni.\n- Ideális statikus vagy ritkán változó adatok esetén.\n\n**Előnyök:**\n\n- Egyszerű beállítás és kezelés.\n- Nincs szükség tranzakciós logokra, egyszerűen az adatokat egyből átülteti.\n\n**Hátrányok:**\n\n- Nem valós idejű, az adatokat csak a ciklusokban másolja át.\n- Ha nagy adatbázisról van szó, időigényes lehet.\n\n---\n\n## 2. Transactional Replikáció 🔄\n\n**Mi történik?**  \nA transactional replikáció minden egyes tranzakciót másol át a forrás adatbázisból a cél adatbázisba. Tehát minden adatváltoztatás, mint INSERT, UPDATE, DELETE, valós időben tükröződik a replikált adatbázisban.\n\n**Használati esetek:**\n\n- Akkor hasznos, ha valós idejű adat szinkronizálásra van szükség.\n- Ha a forrás adatbázis gyakran frissül, és minden egyes módosításnak azonnal meg kell jelenni a replikában.\n\n**Előnyök:**\n\n- Valós idejű szinkronizálás.\n- Mivel a tranzakciók egyesével kerülnek replikálásra, a cél adatbázis mindig naprakész.\n- Jobban skálázható dinamikusan változó adatoknál.\n\n**Hátrányok:**\n\n- Bonyolultabb beállítás és karbantartás.\n- Magasabb erőforrás-igény a tranzakciók folyamatos figyelése és továbbítása miatt.\n\n---\n\n## Összehasonlítás\n\n| Jellemző               | Snapshot Replikáció                               | Transactional Replikáció                          |\n|------------------------|--------------------------------------------------|--------------------------------------------------|\n| **Módszer**            | Teljes adatbázis másolása egy adott időpontban.  | Csak a tranzakciók átvitele, folyamatos szinkronizálás. |\n| **Frissítés típusa**   | Ciklikus, időszakos teljes adatbázis másolása.  | Azonnali, minden egyes adatváltoztatás átvitele.   |\n| **Használat**          | Ritkán változó, statikus adatbázisoknál.        | Dinamikusan változó adatoknál, real-time szinkronizálás. |\n| **Kezelhetőség**       | Egyszerűbb, kevesebb beállítást igényel.        | Komplexebb beállítások, több erőforrást igényel.  |\n| **Előnyök**            | Egyszerűség, könnyű karbantartás.               | Valós idejű adat szinkronizálás, naprakész másolat. |\n| **Hátrányok**          | Nem valós idejű, időigényes, nem a leggyorsabb. | Erőforrás-igényes, bonyolultabb beállítás.       |\n\n![img.png](src/main/resources/static/pannon-logo.png)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsaba79-coder%2Fdatabase-replication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsaba79-coder%2Fdatabase-replication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsaba79-coder%2Fdatabase-replication/lists"}