22/257
\begin{frame}
  \frametitle{Scheduler}
  
  \begin{goal}{}
    The \emph{scheduler} decides the execution order of concurrent database access.
  \end{goal}
  \medskip
  
  \begin{center}
    \begin{tikzpicture}[nodes={rectangle,draw=black,fill=blue!10,outer sep=1mm}, node distance=20mm]
      \node (c1) {Client 1};
      \node (c2) [right of=c1] {Client 2};
      \node (c3) [right of=c2] {Client 3};
      \node (s) [below of=c2] {Scheduler};
      \node (a) [below of=s,node distance=32mm] {Access and Storage Layer};
      
      \begin{scope}[->,very thick,
        s1/.style={thick,fill=yellow!20,inner sep=.5mm},
        s2/.style={thick,fill=red!20,inner sep=.5mm},
        s3/.style={thick,fill=green!20,inner sep=.5mm}
        ]
      \draw (c1) -- 
        node [pos=.0,s1,below left] {3} 
        node [pos=.3,s1,below left] {2} 
        node [pos=.6,s1,below left] {1} 
        (s);
      \draw (c2) -- 
        node [pos=.3,s2,left] {2} 
        node [pos=.7,s2,left] {1} 
        (s);
      \draw (c3) -- 
        node [pos=.0,s3,below right] {3} 
        node [pos=.3,s3,below right] {2} 
        node [pos=.6,s3,below right] {1} 
        (s);
      \draw (s) -- 
        node [pos=.2,s2,left] {1} 
        node [pos=.4,s3,left] {2} 
        node [pos=.6,s3,left] {1} 
        node [pos=.8,s1,left] {1} 
        (a);
      \end{scope}
    \end{tikzpicture}
  \end{center}
\end{frame}