Moderne-Datenbanken/endpraesi/poster/Ringstats_Poster.tex

302 lines
12 KiB
TeX
Raw Normal View History

2026-07-07 17:01:53 +02:00
\documentclass[25pt, a0paper, landscape]{tikzposter}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage[sfdefault]{FiraSans}
\usepackage{FiraMono}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usetikzlibrary{shapes.geometric, shadows}
% Riesige Grundschrift, lesbar aus mehreren Metern
\makeatletter
\renewcommand\normalsize{\@setfontsize\normalsize{40}{54}}
\renewcommand\small{\@setfontsize\small{32}{42}}
\renewcommand\large{\@setfontsize\large{48}{60}}
\renewcommand\Large{\@setfontsize\Large{58}{70}}
\renewcommand\LARGE{\@setfontsize\LARGE{70}{84}}
\renewcommand\huge{\@setfontsize\huge{82}{96}}
\renewcommand\Huge{\@setfontsize\Huge{95}{110}}
\makeatother
\AtBeginDocument{\normalsize}
% Helles Design, kraeftige Akzente
\definecolor{bglight}{HTML}{FFFFFF}
\definecolor{card}{HTML}{FFFFFF}
\definecolor{cardline}{HTML}{E2E8F0}
\definecolor{strongline}{HTML}{CBD5E1}
\definecolor{rowbg}{HTML}{F1F5F9}
\definecolor{textdark}{HTML}{0F172A}
\definecolor{textmut}{HTML}{64748B}
\definecolor{textchart}{HTML}{334155}
\definecolor{accent}{HTML}{A855F7}
\definecolor{accentsoft}{HTML}{A855F7}
\definecolor{codekey}{HTML}{A855F7}
\definecolor{lilaa}{HTML}{A855F7}
\definecolor{liladeep}{HTML}{A855F7}
\definecolor{gruen}{HTML}{10B981}
\definecolor{rot}{HTML}{F43F5E}
\definecolor{gelb}{HTML}{F59E0B}
\definecolor{grau}{HTML}{64748B}
\definecolor{codebg}{HTML}{0F172A}
\definecolorstyle{RingStyle}{}{
\colorlet{backgroundcolor}{bglight}
\colorlet{framecolor}{bglight}
\colorlet{titlefgcolor}{textdark}
\colorlet{titlebgcolor}{bglight}
\colorlet{blocktitlebgcolor}{card}
\colorlet{blocktitlefgcolor}{textdark}
\colorlet{blockbodybgcolor}{card}
\colorlet{blockbodyfgcolor}{textdark}
\colorlet{innerblocktitlebgcolor}{card}
\colorlet{innerblocktitlefgcolor}{textdark}
\colorlet{innerblockbodybgcolor}{card}
\colorlet{innerblockbodyfgcolor}{textdark}
\colorlet{notefgcolor}{textdark}
\colorlet{notebgcolor}{card}
\colorlet{noteframecolor}{card}
}
\usecolorstyle{RingStyle}
% Ein Block ist eine weisse Karte mit weichem Schatten
\defineblockstyle{RingBlock}{
titlewidthscale=1, bodywidthscale=1, titleleft,
titleoffsetx=0pt, titleoffsety=0pt, bodyoffsetx=0pt, bodyoffsety=14mm,
bodyverticalshift=10mm, roundedcorners=26, linewidth=2pt,
titleinnersep=12mm, bodyinnersep=13mm
}{
\draw[color=cardline, line width=2pt, fill=blockbodybgcolor, rounded corners=26,
drop shadow={shadow xshift=0mm, shadow yshift=-2.5mm, opacity=0.10, fill=textdark}]
(blockbody.south west) rectangle (blocktitle.north east);
\ifBlockHasTitle
\fill[accentsoft, rounded corners=1] ([xshift=12mm, yshift=6mm]blocktitle.south west)
rectangle ([xshift=110mm, yshift=5mm]blocktitle.south west);
\fi
}
\useblockstyle{RingBlock}
% Unsichtbarer Block fuer das Fazit-Banner
\defineblockstyle{PlainBlock}{
titlewidthscale=1, bodywidthscale=1, titleleft,
titleoffsetx=0pt, titleoffsety=0pt, bodyoffsetx=0pt, bodyoffsety=0pt,
bodyverticalshift=0pt, roundedcorners=0, linewidth=0pt,
titleinnersep=0mm, bodyinnersep=0mm
}{}
% Weisser Hintergrund fuer den Druck
\definebackgroundstyle{RingBackground}{
\draw[color=bglight, fill=bglight] (bottomleft) rectangle (topright);
}
\usebackgroundstyle{RingBackground}
\usetitlestyle{Empty}
\tikzposterlatexaffectionproofoff
% Browserfenster um einen Screenshot
% #1 Breite in mm, #2 Hoehe des Bilds in mm, #3 Pfad
\newcommand{\browserframe}[3]{%
\begin{tikzpicture}[x=1mm, y=1mm]
\begin{scope}
\clip[rounded corners=16] (0,0) rectangle (#1, {#2+16});
\fill[codebg] (0, #2) rectangle (#1, {#2+16});
\node[anchor=south west, inner sep=0] at (0,0) {\includegraphics[width=#1 mm]{#3}};
\end{scope}
\fill[rot] (11, {#2+8}) circle (3.2);
\fill[gelb] (22, {#2+8}) circle (3.2);
\fill[gruen] (33, {#2+8}) circle (3.2);
\draw[strongline, line width=1.8pt, rounded corners=16] (0,0) rectangle (#1, {#2+16});
\end{tikzpicture}}
% Schmale Zeile fuer die Marktrecherche
% #1 Farbe, #2 Name, #3 Stichwort, #4 y-Position
\newcommand{\dbrow}[4]{%
\node[rounded corners=12, fill=rowbg, minimum width=352mm, minimum height=38mm, anchor=west] at (0, #4) {};
\begin{scope}
\clip[rounded corners=12] (0, #4-19) rectangle (352, #4+19);
\fill[#1] (0, #4-19) rectangle (8, #4+19);
\end{scope}
\node[anchor=west, font=\fontsize{36}{42}\selectfont\bfseries, text=#1] at (22, #4) {#2};
\node[anchor=east, font=\fontsize{26}{32}\selectfont, text=textmut] at (340, #4) {#3};
}
% Balken fuer das Ranking der Nutzwertanalyse
% #1 Farbe, #2 Name, #3 Punkte, #4 y-Position
\newcommand{\rankbar}[4]{%
\draw[fill=rowbg, draw=cardline, line width=1pt, rounded corners=8] (0, #4-15) rectangle (315, #4+15);
\draw[fill=#1, draw=none, rounded corners=8] (0, #4-15) rectangle ({55 + #3*7.0}, #4+15);
\node[anchor=west, text=white, font=\fontsize{31}{37}\selectfont\bfseries] at (8, #4) {#2};
\node[anchor=east, fill=white, text=#1, rounded corners=9, inner xsep=5mm, inner ysep=2mm,
font=\fontsize{29}{35}\selectfont\bfseries] at ({55 + #3*7.0 - 6}, #4) {#3};
}
\settitle{
\begin{minipage}[c]{0.63\linewidth}
{\color{textdark}\fontsize{108}{116}\selectfont\bfseries Ringstats}\par
\vspace{8mm}
{\color{accent}\fontsize{42}{52}\selectfont Live Spielerdaten aus dem Spiel, gespeichert in \textcolor{liladeep}{Key-Value-Datenbanken}}\par
\end{minipage}\hfill
\begin{minipage}[c]{0.35\linewidth}
\begin{flushright}
{\color{textmut}\fontsize{33}{44}\selectfont Justin Rost (7208260) \ \textcolor{strongline}{|}\ Michelle Reichelt (7216628) \ \textcolor{strongline}{|}\ Yasin Ergün (7215184)\par}
\vspace{4mm}
{\color{textmut}\fontsize{33}{44}\selectfont Moderne Datenbanken\par}
\end{flushright}
\end{minipage}
\vspace{6mm}
{\color{accentsoft}\rule{\linewidth}{3pt}\par}
}
\begin{document}
\maketitle[width=0.97\textwidth]
\begin{columns}
% ================= SPALTE 1 =================
\column{0.34}
\block{Was ist Ringstats?}{
\centering
\vspace{5mm}
\begin{tikzpicture}[x=1mm, y=1mm, line cap=round, line join=round]
% Boxen
\node[rounded corners=14, fill=rowbg, draw=cardline, line width=1.5pt, minimum width=74mm, minimum height=70mm] (a) at (0,0) {};
\node[rounded corners=14, fill=rowbg, draw=cardline, line width=1.5pt, minimum width=74mm, minimum height=70mm] (b) at (94,0) {};
\node[rounded corners=14, fill=liladeep, minimum width=74mm, minimum height=70mm] (c) at (188,0) {};
\node[rounded corners=14, fill=rowbg, draw=cardline, line width=1.5pt, minimum width=74mm, minimum height=70mm] (d) at (282,0) {};
\draw[-stealth, line width=4.5pt, accentsoft] (a) -- (b);
\draw[stealth-stealth, line width=4.5pt, accentsoft] (b) -- (c);
\draw[-stealth, line width=4.5pt, accentsoft] (c) -- (d);
% Icon Ring
\draw[accent, line width=5pt] (0, 15) circle (9);
% Icon Monitor
\draw[accent, line width=4pt, rounded corners=2] (83, 10) rectangle (105, 25);
\draw[accent, line width=4pt] (94, 10) -- (94, 6) (88, 6) -- (100, 6);
% Icon Datenbank (Zylinder)
\draw[white, line width=4pt] (179, 21) arc (180:360:9 and 3.2);
\draw[white, line width=4pt] (179, 21) -- (179, 9);
\draw[white, line width=4pt] (197, 21) -- (197, 9);
\draw[white, line width=4pt] (179, 9) arc (180:360:9 and 3.2);
\draw[white, line width=4pt] (188, 21) ellipse (9 and 3.2);
% Icon Globus
\draw[accent, line width=4pt] (282, 15) circle (9);
\draw[accent, line width=3pt] (282, 15) ellipse (4 and 9);
\draw[accent, line width=3pt] (273, 15) -- (291, 15);
% Beschriftung
\node[text=textdark, font=\fontsize{25}{31}\selectfont\bfseries, align=center] at (0, -16) {Elden\\Ring};
\node[text=textdark, font=\fontsize{25}{31}\selectfont\bfseries, align=center] at (94, -16) {Client\\Mod};
\node[text=white, font=\fontsize{25}{31}\selectfont\bfseries, align=center] at (188, -16) {Daten-\\bank};
\node[text=textdark, font=\fontsize{25}{31}\selectfont\bfseries, align=center] at (282, -16) {Website};
\end{tikzpicture}
\vspace{10mm}
{\large Spielerdaten \textcolor{accent}{\textbf{live}} erfassen und anzeigen.\par}
\vspace{9mm}
\begin{tikzpicture}
\node[rounded corners=14, fill=codebg, minimum width=0.95\linewidth, inner sep=9mm] at (0,0) {
\ttfamily\fontsize{29}{36}\selectfont\textcolor{codekey}{player:1} \textcolor{cardline}{\{ health, region\_id \}}
};
\end{tikzpicture}
\vspace{2mm}
{\small\color{textmut} Ein Schlüssel pro Entität, gleich in allen drei Datenbanken.\par}
}
\block{Marktrecherche}{
\centering
\begin{tikzpicture}[x=1mm, y=1mm]
\dbrow{rot}{Redis}{In-Memory, Hashes und Sets}{0}
\dbrow{gruen}{Memcached}{In-Memory, keine Persistenz}{-45}
\dbrow{liladeep}{ArangoDB}{multimodale Datenbank}{-90}
\dbrow{grau}{DynamoDB}{Cloud, kostet pro Anfrage}{-135}
\dbrow{grau}{etcd}{nur für Konfigurationen}{-180}
\dbrow{grau}{Riak KV}{kaum noch entwickelt}{-225}
\end{tikzpicture}
}
% ================= SPALTE 2 =================
\column{0.33}
\block{Live-Ansicht}{
\centering
\browserframe{338}{185}{assets/website-home-redis.png}
\vspace{8mm}
\browserframe{338}{185}{assets/website-search.png}
}
% ================= SPALTE 3 =================
\column{0.33}
\block{Nutzwertanalyse}{
\centering
\begin{tikzpicture}[x=1mm, y=1mm]
\rankbar{rot}{Redis}{37}{0}
\rankbar{gruen}{Memcached}{27}{-34}
\rankbar{lilaa}{ArangoDB}{22}{-68}
\rankbar{grau}{Riak KV}{22}{-102}
\rankbar{grau}{etcd}{21}{-136}
\rankbar{grau}{DynamoDB}{18}{-170}
\end{tikzpicture}
}
\block{Performancevergleich}{
\centering
\begin{tikzpicture}
\begin{axis}[
ybar,
bar width=12mm,
width=0.99\linewidth,
height=150mm,
ymin=0, ymax=2750,
symbolic x coords={Sync Schreiben, Sync Lesen, Region Lesen, Region Schreiben},
xtick=data,
axis line style={draw=none},
tick label style={color=textchart, font=\fontsize{23}{29}\selectfont},
ytick={0,1000,2000},
yticklabels={0, 1000, 2000},
x tick label style={color=textchart},
ymajorgrids=true,
grid style={cardline},
legend style={draw=none, fill=none, text=textdark, font=\fontsize{27}{34}\selectfont, at={(0.5,1.02)}, anchor=south, legend columns=3, column sep=10mm},
nodes near coords,
every node near coord/.append style={color=textmut, font=\fontsize{17}{21}\selectfont, /pgf/number format/1000 sep={}},
enlarge x limits=0.14,
]
\addplot[fill=rot, draw=rot] coordinates {(Sync Schreiben,2154) (Sync Lesen,2162) (Region Lesen,2153) (Region Schreiben,2299)};
\addplot[fill=gruen, draw=gruen] coordinates {(Sync Schreiben,2162) (Sync Lesen,2185) (Region Lesen,2153) (Region Schreiben,2075)};
\addplot[fill=lilaa, draw=lilaa] coordinates {(Sync Schreiben,1207) (Sync Lesen,1332) (Region Lesen,1321) (Region Schreiben,1217)};
\legend{Redis, Memcached, ArangoDB}
\end{axis}
\end{tikzpicture}
\vspace{8mm}
{\large\bfseries\color{textdark} Ops/s: \textcolor{liladeep}{ArangoDB} nur halb so schnell.\par}
}
\end{columns}
\useblockstyle{PlainBlock}
\block{}{
\centering
\begin{tikzpicture}[x=1mm, y=1mm]
\node[rounded corners=24, fill=liladeep, minimum width=0.99\linewidth, minimum height=104mm,
drop shadow={shadow xshift=0mm, shadow yshift=-3mm, opacity=0.15, fill=textdark}] (banner) at (0,0) {};
\node[text=white] at ([yshift=14mm]banner.center) {\Huge Unsere Wahl: \textbf{Redis}};
\node[rounded corners=22, fill=white, fill opacity=0.20, text opacity=1, text=white,
font=\fontsize{45}{55}\selectfont\bfseries, inner xsep=18mm, inner ysep=8mm] at ([xshift=-190mm, yshift=-26mm]banner.center) {schnell wie Memcached};
\node[rounded corners=22, fill=white, fill opacity=0.20, text opacity=1, text=white,
font=\fontsize{45}{55}\selectfont\bfseries, inner xsep=18mm, inner ysep=8mm] at ([yshift=-26mm]banner.center) {Hashes und Sets};
\node[rounded corners=22, fill=white, fill opacity=0.20, text opacity=1, text=white,
font=\fontsize{45}{55}\selectfont\bfseries, inner xsep=18mm, inner ysep=8mm] at ([xshift=142mm, yshift=-26mm]banner.center) {Persistenz};
\end{tikzpicture}
}
\end{document}