\documentclass[
% handout
aspectratio=169
]{beamer}

\usetheme{Rochester}
\hypersetup{colorlinks=false,urlcolor=red}

\usepackage[utf8]{inputenc}
%\DeclareUnicodeCharacter{263A}{\sad}
%\DeclareRobustCommand\sad{%
%  \unskip\nobreak\thinspace\textemdash\allowbreak\thinspace\ignorespaces}
\usepackage[spanish]{babel}

\usepackage{tikzsymbols}
\usepackage{listings}
\lstset{
  basicstyle={\fontsize{8}{7}\selectfont\ttfamily}
}
\input{macros}


\begin{document}
\title{Presentación}
\author{Luis Llana Díaz}
\institute{Departamento de Sistemas Informáticos y Computación\\Universidad Complutense de Madrid}
\maketitle

\def\acc#1{{\color{red}\uppercase{#1}}}



\begin{frame}{Contacto con el profesor}
  \begin{description}
  \item[Nombre] Luis Llana Díaz.
  \item[Despacho] 115 (1ª planta).
  \item[Email] \url{llana@ucm.es} (consultas personales, \textbf{NO} dudas).
  \item[Turorías] L,M,X 13:00-14:00 (previa petición).
  \end{description}
\end{frame}


\begin{frame}
  \frametitle{Recursos digitales}
  \begin{columns}<+->
    \begin{column}{0.7\hsize}
      \begin{block}{Campus Virtual}
        \textbf{NO} se usa el oficial UCM:\\
        \url{https://wild.ucm.es}
        \begin{itemize}
        \item Dudas y consultas.
        \item Anuncios
        \item Material
        \end{itemize}
      \end{block}
    \end{column}
    \begin{column}{0.3\hsize}
      \includegraphics[scale=0.4]{images/wild_qr}
    \end{column}
  \end{columns}

  \begin{columns}<+->
    \begin{column}{0.7\hsize}
      \begin{block}{Servidor con MongoDB}
        \url{https://isabelita.fdi.ucm.es/jupyter}
        \begin{itemize}
        \item Servidor MongoDB
        \item Ejercicios y material online
        \end{itemize}
      \end{block}
    \end{column}
    \begin{column}{0.3\hsize}
      \includegraphics[scale=0.4]{images/isabelita_qr}
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}
  \frametitle{Objetivos}
  \begin{itemize}[<+->]
  \item MongoDB.
    \begin{itemize}[<+->]
    \item Realizar consultas en mongoDB.
    \item Realizar programas que usen MongoDB.
    \item Instalación de mongoDB en local
    \item Uso de Atlas.
    \item Instalación de servidor con Replicación (ReplicaSet)
      y Fragmentación (Sharding).
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Evaluación}

  \begin{block}<+->{La evaluación continua}
    \begin{description}[<+->]
    \item[Participación.] 20\%
      \begin{itemize}
      \item Control de asistencia obligatoria.
      \item Cuestionarios.
      \end{itemize}
    \item[3 exámenes parciales] 80\%.
      \begin{itemize}[<+->]
      \item Pesos 1, 2, 3.
      \item Es necesario sacar un 4 en el 3er examen
        parcial.
      \end{itemize}
    \end{description}
  \end{block}


  \begin{block}<+->{Examen final}
    Se puede aprobar solamente con el examen final.
  \end{block}
\end{frame}


\begin{frame}
  \frametitle{¿Qué es Big Data? Magnitudes de memoria}
  \vspace{-2em}

  \begin{center}
    \includegraphics<2->[width=.15\hsize]{images/byte.png}
  \end{center}
  \begin{description}
  \item<3->[kilobyte] $2^{10}\approx 10^3$. \onslide<9->{El Quijote 850kb}
  \item<4->[megabyte] $2^{20}\approx 10^6$. \onslide<10->{Foto 3Mb (8Mpx). 1CD 800Mb}
  \item<5->[gigabyte] $2^{30}\approx 10^9$. \onslide<11->{4.7Gb DVD. 120Gb Wikipedia}
  \item<6->[terabyte] $2^{40}\approx 10^{12}$. \onslide<12->{+200 DVD. 750Tb/día Facebook}
  \item<7->[petabyte] $2^{50}\approx 10^{15}$. \onslide<13->{Netflix 3.14 Pb. Google Maps 20 Pb}
  \item<8->[exabyte] $2^{60} \approx 10^{18}$. \onslide<14->{Google 10 Eb on disk}
\item<15-> zettabytes (zb), yottabytes (yb)...
  \end{description}
  \begin{center}
    \onslide<16->{\url{http://www.bluebulbprojects.com/MeasureOfThings/}\\ \url{http://www.internetlivestats.com/}}
  \end{center}
\note{
Referencias
\begin{itemize}
\item \url{https://meta.wikimedia.org/wiki/Data_dumps/FAQ}
The XML file with current pages, including user and talk pages, was 127,884,910,101 bytes uncompressed.
\item Google Maps
\url{http://mashable.com/2012/08/22/google-maps-facts/}
\item (May, 2013 figures)
The uncompressed source copies of all the movies available for instant viewing on Netflix total 3.14 petabytes. A
\item Datos de google en \url{https://en.wikipedia.org/wiki/Exabyte}
\item https://storageservers.wordpress.com/2013/07/17/facts-and-stats-of-worlds-largest-data-centers/ datos para facebook (2013, es hace mucho tiempo...)
\end{itemize}
}
\end{frame}


\begin{frame}
   \frametitle{Tiempo. Complejidad Algorítmica}

   \onslide<1->{¿De qué depende el tiempo de ejecución de un programa?}

   \begin{itemize}[<+->]
   \item<2-> Máquina sobre la que se ejecuta
   \item<3-> Lenguaje de implementación
   \item<4-> Algoritmo
   \item<5-> Datos de entrada
   \end{itemize}
\end{frame}

\begin{frame}
   \frametitle{Tiempo. Complejidad Algorítmica}

   Comportamiento de un programa seg\'un crece el tama\~no de los
   datos.
   \begin{columns}
     \begin{column}[T]{0.5\hsize}
       \uncover<1->{Tamaño del problema $n$:}
       \begin{itemize}
       \item<2-> $\calO(1)$: tiempo constante.
     \item<3-> $\calO(\log(n))$: tiempo logaritmico.
     \item<4-> $\calO(n)$: tiempo lineal.
     \item<5-> $\calO(n\log(n))$.
     \item<6-> $\calO(n^{2})$.
     \item<7-> $\calO(n^{3})$.
     \end{itemize}
     \end{column}
     \begin{column}[T]{0.5\hsize}
       \scalebox{0.7}{
         \begin{tikzpicture}[
           domain=0:10, samples=200,
           xscale=1/2, yscale=1/10,
           range=0:50,
           show background rectangle,
           background rectangle/.style={fill=black!85, rounded corners=2pt}
           ]
           %\draw[very thin,color=gray] (-0.1,-0.5) grid (9.9,49.5);
           \draw[->, white] (-0.2,0) -- (10.2,0) node[below] {tamaño};
           \draw[->, white] (0,-0.5) -- (0,51) node[above] {tiempo};
           \onslide<2->\draw[color=yellow] plot function{1} node[right] {$\calO(1)$};
           \onslide<3->\draw[color=yellow!50!green] plot function{log(x)} node[right] {$\calO(\log(n))$};
           \onslide<4->\draw[color=green] plot function{x} node[right] {$\calO(n)$};
           \onslide<5->\draw[color=green!50!blue] plot function{x*log(x)} node[right] {$\calO(n\log(n))$};
           \onslide<6->\draw[color=blue!50!white] plot function{x*x} node[right] {$\calO(n^{2})$};
           \onslide<7->\draw[color=red] plot function{x*x*x}  node[right] {$\calO(n^{3})$};;
         \end{tikzpicture}
         % \begin{tikzpicture}
         %   \begin{axis}[
         %     xmin=0,xmax=10,
         %     ymin=0,ymax=50,
         %     samples=200,
         %     domain=0:9
         %     ]
         %     \onslide<3->\addplot[blue] {ln(x)};
         %     \onslide<4->\addplot[blue] {x};
         %     \onslide<5->\addplot[blue] {x*ln(x)};
         %   \end{axis}

         % \end{tikzpicture}
     }
     \end{column}
   \end{columns}
\end{frame}



\begin{frame}
   \frametitle{Si los datos crecen... ¿cómo reducir tiempos?}
   \begin{itemize}[<+->]
   \item<1->{¿Lenguajes más eficientes?} \onslide<3->{\hspace*{3em} Factor constante \dSadey[2][yellow]}
   \item<2->¿Mejorar Máquinas? \onslide<4->{\hspace*{5.80em} Factor constante \dSadey[2][yellow]}
   \item<5->¿Mejorar Algoritmos? \onslide<6->{\hspace*{5.4em} No es fácil \dSey[2][yellow]}
   \item[]<6->
     \begin{center}
       \includegraphics[width=.7\hsize]{images/map_maths.jpg}  \\
       {\tiny \url{http://dominicwalliman.com/}}
     \end{center}
   \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Si los datos crecen... ¿cómo reducir tiempos?}

  \begin{tabular}{cc}
    \onslide<2->{\includegraphics[height=.6\vsize]{images/pyramid.jpg}}
    &
    \onslide<3->{\includegraphics[height=.6\vsize]{images/cluster.jpg}}
  \end{tabular}
  \begin{center}
    \onslide<4->{\Large Muchas máquinas \olddWinkey[2] !!}
  \end{center}
\end{frame}


\begin{frame}
   \frametitle{¿Cuánto se puede ganar añadiendo más máquinas?}
   \begin{itemize}
   \item<2-> Ley de Amdahl:\\ \emph{La mejora está siempre limitada por la parte no paralelizable.} \url{https://es.wikipedia.org/wiki/Ley_de_Amdahl}
   \item<3-> Ley de Gustafson:\\  \emph{Más recursos permiten siempre resolver problemas más grandes.} \url{https://es.wikipedia.org/wiki/Ley_de_Gustafson}
   \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{¿Cuántos servidores tiene Google?}
  \begin{itemize}[<+->]
  \item 15 centros de datos reconocidos
  \item Entre 120000 y 200000 servidores en cada centro de datos
  \item Asumiendo que cada servidor tiene 2Tb de memoria
  \item Cada datacenter tendría entre 240 petabytes y 300 petabytes.
  \end{itemize}
  \onslide<5->{
    \begin{center}
      {\footnotesize \url{http://what-if.xkcd.com/63/}
      \url{https://www.google.com/about/datacenters}}\\[2em]

    \url{https://www.youtube.com/watch?v=XZmGGAbHqa0}
    \url{https://www.youtube.com/watch?v=zDAYZU4A3w0}
    \end{center}
  }
\end{frame}

\begin{frame}
  \frametitle{Retos del Big Data}
  \begin{itemize}[<+->]
  \item Sistema de archivos distribuido
  \item Fácilmente escalable
  \item Tolerante a fallos
  \item Programación distribuida
  \end{itemize}
\end{frame}

% \begin{frame}
%   \frametitle{Solución de Google 2003-2004}
%   \begin{tabular}{ccc}
%   \includegraphics[width=5cm]{images/gfs_paper} & &
%   \includegraphics[width=5cm]{images/map_reduce_paper} \\
%     ESOP 2003 & & OSDI 2004 \\
%     \tiny{Symposium on Operating Systems Principles} & &\tiny{Symposium on Operating System}\\
%                                                      & &\tiny{Design and Implementation}
% \end{tabular}
% \end{frame}

% \begin{frame}
%   \frametitle{10 años después... un estándar}
%   \begin{description}
%   \item[Sistema de Archivos Distribuidos]<1-> \ \\
%     \begin{itemize}
%     \item<2-> Apache Hadoop
%       \includegraphics[width=6cm]{images/hadoop.png}
%     \item<3-> Usado en amazon, yahoo, facebook...\\
%       {\footnotesize \url{https://wiki.apache.org/hadoop/PoweredBy}}
%     \end{itemize}
%   \item[Programación Paralela]<4-> \ \\
%     \begin{itemize}
%     \item<5-> MapReduce
%     \item<6-> Spark
%     \end{itemize}
%   \end{description}

% \end{frame}

\begin{frame}[fragile]
  \frametitle{MongoDB}
  \begin{center}
    \includegraphics[height=4em]{images/mongodb}
  \end{center}
  \begin{itemize}[<+->]
  \item Base de datos NoSQL.
  \item Almacena \emph{documentos JSON}, mas concretamente en BSON.
    \begin{lstlisting}
{
  'name': {'first name': 'Luis', 'last name': 'Llana'},
  'role': 'Teacher',
  'email': 'llana@ucm.es',
  'office': '450',
  'teaches': ['Big Data', 'Parallel Programming']
}
    \end{lstlisting}
  \item Admite replicación (replica sets).
  \item Admite distribución de datos (sharding).
  \item \emph{Casi} libre.
    \begin{itemize}
    \item Community version.
    \item Enterprise version.
    \end{itemize}
  \end{itemize}
\end{frame}




\begin{frame}
  \frametitle{Cluster en la Facultad}
  \begin{columns}
    \begin{column}{0.6\hsize}<+->
      \includegraphics[width=\hsize]{images/cluster.jpg}
    \end{column}
    \begin{column}{0.4\hsize}<+->
      \begin{itemize}[<+->]
      \item Clúster de raspberry de ordenadores antiguos.
      \item Sirve para acostumbrarse a clusteres reales.
      \item Acceso remoto con ssh.
      \end{itemize}
    \end{column}
  \end{columns}
\end{frame}


%
% Columnas
% \begin{frame}
%   \begin{columns}
%     \begin{column}{0.2\hsize}
%     \end{column}
%     \begin{column}{0.8\hsize}
%     \end{column}
%   \end{columns}
% \end{frame}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-command-extra-options: "-shell-escape"
%%% ispell-local-dictionary: "spanish"
%%% End:

%  LocalWords:  granularidad
