Files
GKNB_MSTM071/Backend_ppt/Database/replication.tex
T
2026-02-17 21:17:42 +01:00

136 lines
5.1 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\section{Adatbázis replikáció}
\begin{frame}{Mi az adatbázis replikáció?}
\begin{block}{Definíció}
Az adatok \textbf{több adatbázis példány között} vannak másolva annak érdekében,
hogy növekedjen a \textbf{rendelkezésre állás}, \textbf{skálázhatóság} és
\textbf{hibatűrés}.
\end{block}
\begin{itemize}
\item PrimaryReplica (masterslave) felépítés a leggyakoribb
\item A replikáció lehet \textbf{szinkron} vagy \textbf{aszinkron}
\item Read-heavy alkalmazásoknál különösen hasznos
\end{itemize}
\end{frame}
\begin{frame}{Miért jó a replikáció?}
\begin{block}{Főbb előnyök}
\begin{itemize}
\item \textbf{Nagyobb rendelkezésre állás}: hiba esetén átváltás (failover)
\item \textbf{Skálázás olvasásra}: több replica olvasási terhelést visz el
\item \textbf{Biztonsági másolat}: adatvesztés kockázatának csökkentése
\item \textbf{Földrajzi közelség}: alacsonyabb késleltetés regionális replikákkal
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Replikációs topológiák}
\begin{itemize}
\item \textbf{PrimaryReplica}: egy írható csomópont, több olvasó
\item \textbf{Multi-primary}: több írható csomópont (konfliktuskezelés szükséges)
\item \textbf{Chain/Cascade}: láncolt replikák nagy földrajzi területre
\end{itemize}
\begin{alertblock}{Gyakorlatban}
A legtöbb backend szolgáltatásnál a PrimaryReplica modell az alapértelmezett.
\end{alertblock}
\end{frame}
\begin{frame}{Szinkron replikáció}
\begin{block}{Hogyan működik?}
\begin{itemize}
\item Az írás \textbf{csak akkor sikeres}, ha a replika is visszaigazolta
\item Erős \textbf{konzisztencia} (nincs adatvesztés írás után)
\item A primary \textbf{vár} a replikákra → nagyobb latency
\end{itemize}
\end{block}
\begin{exampleblock}{Mikor jó?}
Pénzügyi, tranzakciós rendszerek, ahol az adatvesztés nem elfogadható.
\end{exampleblock}
\end{frame}
\begin{frame}{Szinkron replikáció előnyök / hátrányok}
\begin{columns}
\begin{column}{0.48\textwidth}
\begin{block}{Előnyök}
\begin{itemize}
\item Erős konzisztencia
\item Minimális adatvesztés
\item Egyszerűbb olvasási modell
\end{itemize}
\end{block}
\end{column}
\begin{column}{0.48\textwidth}
\begin{alertblock}{Hátrányok}
\begin{itemize}
\item Nagyobb válaszidő írásnál
\item Érzékenyebb hálózati késleltetésre
\item Replikák kiesése lassítja az írást
\end{itemize}
\end{alertblock}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Aszinkron replikáció}
\begin{block}{Hogyan működik?}
\begin{itemize}
\item Az írás \textbf{azonnal sikeres}, a replika később frissül
\item Jobb \textbf{teljesítmény} és alacsonyabb latency
\item \textbf{Időbeli eltérés} lehetséges (eventual consistency)
\end{itemize}
\end{block}
\begin{exampleblock}{Mikor jó?}
Nagy forgalmú rendszerek, ahol az olvasási skálázás fontosabb, mint a tökéletes
konzisztencia (pl. hírportál, analytics).
\end{exampleblock}
\end{frame}
\begin{frame}{Aszinkron replikáció előnyök / hátrányok}
\begin{columns}
\begin{column}{0.48\textwidth}
\begin{block}{Előnyök}
\begin{itemize}
\item Alacsonyabb írási késleltetés
\item Jobb skálázhatóság
\item Replikák nem lassítják az írást
\end{itemize}
\end{block}
\end{column}
\begin{column}{0.48\textwidth}
\begin{alertblock}{Hátrányok}
\begin{itemize}
\item Ideiglenes inkonzisztencia
\item Failover esetén adatvesztés kockázata
\item Komplexebb olvasási logika
\end{itemize}
\end{alertblock}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Szinkron vs. aszinkron döntési szempontok}
\begin{itemize}
\item \textbf{Konzisztencia igény}: kritikus adatok → szinkron
\item \textbf{Teljesítmény igény}: magas throughput → aszinkron
\item \textbf{Hálózat megbízhatósága}: nagy latency → aszinkron
\item \textbf{Üzleti kockázat}: adatvesztés megengedett? → aszinkron
\end{itemize}
\begin{alertblock}{Ökölszabály}
Ha az írások számítanak jobban, válaszd a szinkront. Ha az olvasási skálázás
és az alacsony latency fontos, válaszd az aszinkront.
\end{alertblock}
\end{frame}
\begin{frame}{Hogyan használjuk a gyakorlatban?}
\begin{block}{Tipikus architektúra}
\begin{itemize}
\item \textbf{Primary} kezeli az írásokat
\item \textbf{Replica} kiszolgálja az olvasásokat
\item \textbf{Load balancer} irányítja az olvasást a replikákhoz
\end{itemize}
\end{block}
\begin{exampleblock}{ORM/Prisma oldal}
A legtöbb ORM-ben (így Prismában is) külön connection stringet használsz az
író és az olvasó adatbázisokhoz, vagy read-replica routert konfigurálsz.
\end{exampleblock}
\end{frame}