\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}