\documentclass[conference,compsoc]{IEEEtran}
% *** MISC UTILITY PACKAGES ***
%
%\usepackage[latin1]{inputenc} %Codificacion iso-8889-1
% \usepackage[table,xcdraw]{xcolor}
% If you use beamer only pass "xcolor=table" option, i.e. \documentclass[xcolor=table]{beamer}
%\usepackage{ifpdf}
% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
% compilation based on whether the output is pdf or dvi.
% usage:
% \ifpdf
% % pdf code
% \else
% % dvi code
% \fi
% The latest version of ifpdf.sty can be obtained from:
% http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/
% Also, note that IEEEtran.cls V1.7 and later provides a builtin
% \ifCLASSINFOpdf conditional that works the same way.
% When switching from latex to pdflatex and vice-versa, the compiler may
% have to be run twice to clear warning/error messages.
% *** CITATION PACKAGES ***
%
\ifCLASSOPTIONcompsoc
% IEEE Computer Society needs nocompress option
% requires cite.sty v4.0 or later (November 2003)
\usepackage[nocompress]{cite}
\else
% normal IEEE
\usepackage{cite}
\fi
% *** GRAPHICS RELATED PACKAGES ***
%
\ifCLASSINFOpdf
\usepackage[pdftex]{graphicx}
% declare the path(s) where your graphic files are
\graphicspath{{images/}}
% and their extensions so you won't have to specify these with
% every instance of \includegraphics
%\DeclareGraphicsExtensions{.pdf,.jpeg,.png}
\else
% or other class option (dvipsone, dvipdf, if not using dvips). graphicx
% will default to the driver specified in the system graphics.cfg if no
% driver is specified.
\usepackage[dvips]{graphicx}
% declare the path(s) where your graphic files are
\graphicspath{{images/}}
% and their extensions so you won't have to specify these with
% every instance of \includegraphics
% \DeclareGraphicsExtensions{.eps}
\fi
% graphicx was written by David Carlisle and Sebastian Rahtz. It is
% required if you want graphics, photos, etc. graphicx.sty is already
% installed on most LaTeX systems. The latest version and documentation
% can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/required/graphics/
% Another good source of documentation is "Using Imported Graphics in
% LaTeX2e" by Keith Reckdahl which can be found at:
% http://www.ctan.org/tex-archive/info/epslatex/
%
% latex, and pdflatex in dvi mode, support graphics in encapsulated
% postscript (.eps) format. pdflatex in pdf mode supports graphics
% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats
% which can result in "jaggedy"/blurry rendering of lines and letters as
% well as large increases in file sizes.
%
% You can find documentation about the pdfTeX application at:
% http://www.tug.org/applications/pdftex
% *** MATH PACKAGES ***
%
\usepackage[cmex10]{amsmath}
\usepackage{listings}
\usepackage{color}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
\lstset{style=mystyle}
% A popular package from the American Mathematical Society that provides
% many useful and powerful commands for dealing with mathematics. If using
% it, be sure to load this package with the cmex10 option to ensure that
% only type 1 fonts will utilized at all point sizes. Without this option,
% it is possible that some math symbols, particularly those within
% footnotes, will be rendered in bitmap form which will result in a
% document that can not be IEEE Xplore compliant!
%
% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000
% thus preventing page breaks from occurring within multiline equations. Use:
%\interdisplaylinepenalty=2500
% after loading amsmath to restore such page breaks as IEEEtran.cls normally
% does. amsmath.sty is already installed on most LaTeX systems. The latest
% version and documentation can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/
% *** SPECIALIZED LIST PACKAGES ***
%
%\usepackage{algorithmic}
% algorithmic.sty was written by Peter Williams and Rogerio Brito.
% This package provides an algorithmic environment fo describing algorithms.
% You can use the algorithmic environment in-text or within a figure
% environment to provide for a floating algorithm. Do NOT use the algorithm
% floating environment provided by algorithm.sty (by the same authors) or
% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated
% algorithm float types and packages that provide these will not provide
% correct IEEE style captions. The latest version and documentation of
% algorithmic.sty can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/
% There is also a support site at:
% http://algorithms.berlios.de/index.html
% Also of interest may be the (relatively newer and more customizable)
% algorithmicx.sty package by Szasz Janos:
% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/
% *** ALIGNMENT PACKAGES ***
%
%\usepackage{array}
% Frank Mittelbach's and David Carlisle's array.sty patches and improves
% the standard LaTeX2e array and tabular environments to provide better
% appearance and additional user controls. As the default LaTeX2e table
% generation code is lacking to the point of almost being broken with
% respect to the quality of the end results, all users are strongly
% advised to use an enhanced (at the very least that provided by array.sty)
% set of table tools. array.sty is already installed on most systems. The
% latest version and documentation can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/required/tools/
% IEEEtran contains the IEEEeqnarray family of commands that can be used to
% generate multiline equations as well as matrices, tables, etc., of high
% quality.
% *** SUBFIGURE PACKAGES ***
%\ifCLASSOPTIONcompsoc
% \usepackage[caption=false,font=footnotesize,labelfont=sf,textfont=sf]{subfig}
%\else
% \usepackage[caption=false,font=footnotesize]{subfig}
%\fi
% subfig.sty, written by Steven Douglas Cochran, is the modern replacement
% for subfigure.sty, the latter of which is no longer maintained and is
% incompatible with some LaTeX packages including fixltx2e. However,
% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty
% which will override IEEEtran.cls' handling of captions and this will result
% in non-IEEE style figure/table captions. To prevent this problem, be sure
% and invoke subfig.sty's "caption=false" package option (available since
% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls
% handling of captions.
% Note that the Computer Society format requires a sans serif font rather
% than the serif font used in traditional IEEE formatting and thus the need
% to invoke different subfig.sty package options depending on whether
% compsoc mode has been enabled.
%
% The latest version and documentation of subfig.sty can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/
% *** FLOAT PACKAGES ***
%
%\usepackage{fixltx2e}
% fixltx2e, the successor to the earlier fix2col.sty, was written by
% Frank Mittelbach and David Carlisle. This package corrects a few problems
% in the LaTeX2e kernel, the most notable of which is that in current
% LaTeX2e releases, the ordering of single and double column floats is not
% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
% single column figure to be placed prior to an earlier double column
% figure. The latest version and documentation can be found at:
% http://www.ctan.org/tex-archive/macros/latex/base/
%\usepackage{stfloats}
% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
% the ability to do double column floats at the bottom of the page as well
% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
% LaTeX2e). It also provides a command:
%\fnbelowfloat
% to enable the placement of footnotes below bottom floats (the standard
% LaTeX2e kernel puts them above bottom floats). This is an invasive package
% which rewrites many portions of the LaTeX2e float routines. It may not work
% with other packages that modify the LaTeX2e float routines. The latest
% version and documentation can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/
% Do not use the stfloats baselinefloat ability as IEEE does not allow
% \baselineskip to stretch. Authors submitting work to the IEEE should note
% that IEEE rarely uses double column equations and that authors should try
% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty
% packages (also by Sigitas Tolusis) as IEEE does not format its papers in
% such ways.
% Do not attempt to use stfloats with fixltx2e as they are incompatible.
% Instead, use Morten Hogholm'a dblfloatfix which combines the features
% of both fixltx2e and stfloats:
%
% \usepackage{dblfloatfix}
% The latest version can be found at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/dblfloatfix/
% *** PDF, URL AND HYPERLINK PACKAGES ***
%
%\usepackage{url}
% url.sty was written by Donald Arseneau. It provides better support for
% handling and breaking URLs. url.sty is already installed on most LaTeX
% systems. The latest version and documentation can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/url/
% Basically, \url{my_url_here}.
% *** Do not adjust lengths that control margins, column widths, etc. ***
% *** Do not use packages that alter fonts (such as pslatex). ***
% There should be no need to do such things with IEEEtran.cls V1.6 and later.
% (Unless specifically asked to do so by the journal or conference you plan
% to submit to, of course. )
% correct bad hyphenation here
\hyphenation{op-tical net-works semi-conduc-tor}
\begin{document}
%
% paper title
% Titles are generally capitalized except for words such as a, an, and, as,
% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually
% not capitalized unless they are the first or last word of the title.
% Linebreaks \\ can be used within to get better formatting as desired.
% Do not put math or special symbols in the title.
\title{Base de datos NoSQL\\ Caso de estudio: \\Postgres como soluci\'on NoSQL}
% author names and affiliations
% use a multiple column layout for up to three different
% affiliations
\author{
\IEEEauthorblockN{Rosmeli Quintero}
\IEEEauthorblockA{Escuela de Computaci\'on\\Licenciatura en Computaci\'on\\
Universidad Central de Venezuela\\
Caracas, Venezuela\\
Email: qrosmeli@gmail.com}
\and
\IEEEauthorblockN{Jean Carlos Gomes}
\IEEEauthorblockA{Escuela de Computaci\'on\\Licenciatura en Computaci\'on\\
Universidad Central de Venezuela\\
Caracas, Venezuela\\
Email: jean.gomes@ucv.ve}
}
% make the title area
\maketitle
% As a general rule, do not put math, special symbols or citations
% in the abstract
\begin{abstract}
Las bases de datos relacionales han sido las herramientas por excelencia para el
almacenamiento de la informaci\'on en los sistemas inform\'aticos. No obstante, las bases de
datos NoSQL, como tendencia, han venido ganando espacio especialmente por la escalabilidad
y velocidad en sus tiempos de respuestas. PostgreSQL ha incorporado algunas caracter\'isticas
de tipo NoSQL, como el almacenamiento ef\'imero y el manejo de datos JSON; caracter\'isticas
que pueden aprovecharse para realizar acciones desde el gestor d\'andole mayor potencia. El
objetivo de este artículo es evaluar, mediante toda la documentaci\'on encontrada, el comportamiento de las
características NoSQL de PostgreSQL frente a un gestor NoSQL, comparandola con MongoDB, respecto a los tiempos de respuestas y dar a conocer las ventajas de uno con respecto al otro. \\
Palabras Claves: Caracter\'isticas NoSQL en PostgreSQL, MongoDB, PostgreSQL
\end{abstract}
%no keywords
% For peer review papers, you can put extra information on the cover
% page as needed:
% \ifCLASSOPTIONpeerreview
% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
% \fi
%
% For peerreview papers, this IEEEtran command inserts a page break and
% creates the second title. It will be ignored for other modes.
\IEEEpeerreviewmaketitle
\section{Introducci\'on}
% no \IEEEPARstart
Las bases de datos relacionales han sido las herramientas por excelencia para el almacenamiento de la informaci\'on en los sistemas inform\'aticos desde su surgimiento en las d\'ecadas del 70 y el 80. No obstante, las bases de datos NoSQL, como tendencia, han venido ganando espacio especialmente por la escalabilidad y velocidad en sus tiempos de respuestas, superiores a los de los sistemas relacionales. Este tipo de bases de datos no garantizan las propiedades ACID (Atomicidad, Consistencia,aIslamiento y Durabilidad) en ar\'eas de potenciar el rendimiento y la
escalabilidad, bas\'andose en el teorema CAP (Consistencia, Disponibildad y la tolerancia a particiones), que plantea que un sistema no puede contar con m\'as de dos de estas tres propiedades a la vez. \\
El movimiento NoSQL no es nuevo, se inici\'o a finales de los 90 cuando las bases de
datos XML comenzaron a ganar espacio con excelentes propuestas, sobre todo
ofreciendo la posibilidad de consultas sobre datos XML. Caracter\'istica que posteriormente las bases de datos relacionales incorporaron.
Las bases de datos NoSQL y las relacionales no se solapan, m\'as bien cada una garantiza las caracter\'isticas para las cuales fueron desarrolladas. De ah\'i que muchas
empresas las utilicen juntas para diferentes actividades tales como Facebook, Google y otras empresas. \\
PostgreSQL ha incorporado algunas caracter\'isticas de tipo NoSQL, como el
almacenamiento ef\'imero y el manejo de datos en formato Notaci\'on de Objetos
JavaScript (JSON); caracter\'isticas que pueden aprovecharse para realizar acciones
desde el gestor d\'andole mayor potencia. El objetivo de este art\'iculo es evaluar el
comportamiento de las caracter\'isticas NoSQL de PostgreSQL frente a un gestor de bases de datos NoSQL como MongoDB, comparando, los tiempos de respuestas, el almacenamientos y dar a conocer las ventajas de uno con respecto al otro.
\\
\section{?`Qu\'e es Postgres NoSQL?}
La nueva versi\'on de la base de datos de c\'odigo abierto PostgreSQL, se ha ido evolucionando y adopt\'andose al ampliamente usado formato de intercambio de datos JSON, esto apunta al creciente mercado NoSQL de almacenes de datos no relacionales, Postgres NoSQL es la poderosa combinaci\'on de tecnolog\'ias de bases de datos no estructurados y relacionales en un solo sistema de gesti\'on de bases de dato. Postgres NoSQL proporciona la libertad, la flexibilidad y el rendimiento de la manipulaci\'on de datos no estructurados y semi-estructurados, conservando su viabilidad a largo plazo.
\\
Postgres posee todas las caracter\'isticas de una base de datos relacional con la capacidad de manejar bases de datos del tipo documento y de clave/valor proporcionan las ventajas de las nuevas tecnolog\'ias NoSQL adem\'as de la posibilidad de integrarlos en las infraestructuras tradicionales de datos corporativos sin silos de datos, la complejidad operativa, la p\'erdida de la integridad de los datos, y el riesgo.
\\
\section{?`ACID o BASE?}
PosgreSQL es una bace de datos 100\% ACID, posee control de concurrencia multiversi\'ones con un sistema sostificado que previene a los lectores de bloquear a los escritores y viceversa como es el MVCC (Control de Concurrencia Multi-Versiones), posee un WAL (Write-ahead logging) conocido tambien como log, tiene soporte completo para claves foráneas, uniones, vistas, disparadores y procedimientos almacenados, soporte de tipos de datos documentos.
\begin{figure}[!h]
\centering
\includegraphics[width=0.5\textwidth]{nosql_acid_base2}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\caption{Capacidades de Postgres para cargas de trabajo NoSQL\cite{howPopular}.}
\label{fig_sim}
\end{figure}
\section{Clave/valor - HStore}
El m\'odulo HStore, que permite almacenar pares clave / valor dentro de una
sola columna, permite a los usuarios crear un almac\'en de claves/valor sin esquema.
Pero a diferencia de las soluciones NoSQL puros, un almac\'en de claves-valor creado en
Postgres es compatible con ACID.
\\
\\
HStore es una herramienta particularmente \'util para los desarrolladores web o
alguien que construye una aplicaci\'on que requiere la propiedad ACID, Hstore anterior a muchos avances NoSQL. Fue introducido en v8.2 de Postgres en el a\~no 2006, antes de muchos avances de otros gestores NoSQL. Su popularidad aument\'o en los \'ultimos a\~nos con nuevas demandas para trabajar con datos semi-estructurados.
\\
Hstore no es jer\'arquica, pero el tipo de datos HStore ofrece avanzada
soporte de indexaci\'on, lo que hace que sea la soluci\'on de elecci\'on para muchos
aplicaciones. Es particularmente \'util para los datos con baja densidad por ejemplo, esto es muy \'util para el almacenamiento de productos con m\'ultiples
descripciones en una sola tabla, donde cada producto, comparte algunas
atributos, como el nombre, precio y peso, pero tienen muchos diferentes
atributos basados en el tipo de producto, tales como el tama\~no, la presentacion, entre otros.
\\
\\
HSTORE provee la funcionalidad de indexar en varios tipos
\begin{tabular}{| l | c | r |}
\hline
Operadores & GIN & GIST \\
\hline
Creaci\'on & Lento & R\'apido \\
\hline
Consultas & R\'apido & Lento \\
\hline
Actualizaci\'on & Lento & R\'apido \\
\hline
Memoria & 2x m\'as & Poca \\
\hline
\end{tabular}
\\
\\
Otros tipos de indices son:
\begin{itemize}
\item BTREE
\item HASH
\end{itemize}
Ejemplo del m\'odulo HStore en PostgreSQL:
\\
Primer Paso:
Antes de trabajar con el tipo de datos hstore, necesita habilitar la extensión hstore, que carga el módulo para habilitar la extensi\'on hstore PostgreSQL
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{hstore001}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\label{fig_sim}
\end{figure}
Segundo paso: crear una tabla con una columna del tipo de dato HStore.
Para este ejemplo, Creamos una tabla llamada libros que tiene tres columnas:
\begin{itemize}
\item id es la clave principal que identifica el libro.
\item título es el título de las tiendas de productos
\item attr atributos del libro como el ISBN, el peso, el papel de devolución, etc. El tipo de datos de la columna de attr es hstore.
\end{itemize}
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{hstore002}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\label{fig_sim}
\end{figure}
Tercer paso: Insertar datos, Nosotros usamos la instrucción INSERT para insertar datos en la columna de la hstore de la siguiente manera, pero usted puede usar otro comando:
NOTA: Los datos que insertamos en la columna de la hstore es una lista separadas por comas usando los pares de claves => valor. Tanto las claves y los valores están expresados usando comillas (").
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{hstore003}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\label{fig_sim}
\end{figure}
Cuarto Paso: Realizar una consulta
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{hstore004}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\label{fig_sim}
\end{figure}
\section{Base de datos Orientada a Documentos- JSON/JSONB}
La capacidades de base de datos orientada a documentos en Postgres avanzaron significativamente
cuando se introdujo soporte para el tipo de datos JSON en la version 9.0. JSONB,
un formato de almacenamiento binario que proporciona un mejor rendimiento fue
introducido en la version 9.4 de Postgres.
\\
\\
JSON (notaci\'on de objetos JavaScript) es una de la mayor\'ia de los formatos de datos intercambiados populares en la web. Es apoyado por
pr\'acticamente cualquier lenguaje de programaci\'on en uso hoy en d\'ia, y sigue
aumentando la atracci\'on por el uso de JSON por la la introducci\'on de nuevas tecnolog\'ias de apoyo
tales como el motor JavaScript V8, tambi\'en apoyado en Postgres a trav\'es de PL /
V8, Node.js y algunos sistemas NoSQL, como MongoDB y CouchDB.
\\
\\
Postgres ofrece soporte robusto para JSON. Postgres tiene un conjunto de datos de tipo JSON, lo que valida y almacena el texto JSON y proporciona funciones para
extraer elementos de los valores de JSON y ofrece la posibilidad de
codificar f\'acilmente conjuntos de resultados de la consultas que se pueden utilizarse. Esta \'ultima pieza de
funcionalidad es particularmente importante, ya que significa que las aplicaciones que
prefieren trabajar de forma nativa con JSON puede obtener f\'acilmente sus datos de
Postgres en JSON.
Adem\'as del tipo de datos nativo JSON, Postgres v9.3 a\~nade un JSON
analizador y una variedad de funciones JSON. Esto significa aplicaci\'on web,
los desarrolladores no necesitan capas de traducci\'on en el c\'odigo entre las
base de datos y el marco web que utiliza JSON, los datos pueden ser enviados directamente a la base de datos PostgreSQL, donde no s\'olo
almacenar los datos, pero adecuadamente validarlo tambi\'en. Con funciones JSON,
Postgres pueden leer datos relacionales de una tabla y devolverlo a la
aplicaci\'on como v\'alidos cadenas de formato JSON. Y, los datos relacionales
pueden ser devueltos como JSON, ya sea para un \'unico valor o un registro completo.
\\
\\
Las bases de datos de tipo documento más populares son
CouchDB y MongoDB según el sitio db-engines, el cual se dedica a mostrar un ranking
de las bases de datos más utilizadas en el mundo.
Según un estudio realizado, MongoDB brinda mejores tiempos de respuesta en la
inserción de información. Por tanto, para este trabajo, se elige para realizar la
comparación de los tiempos de respuestas de las características NoSQL de
PostgreSQL.
% \usepackage[table,xcdraw]{xcolor}
\begin{table}[]
\centering
\label{my-label}
\begin{tabular}{|c|c|}
\hline
\textbf{JSON} & \textbf{JSONB} \\ \hline
\begin{tabular}[c]{@{}c@{}}Re-interpretaci\'on de\\ diccionario\end{tabular} & No necesita re-interpretar \\ \hline
\begin{tabular}[c]{@{}c@{}}Operaciones toman más\\ tiempo\end{tabular} & M\'as espacio en disco \\ \hline
Preserva el orden & No preserva el orden \\ \hline
Sin \'indices & Soporta \'indices \\ \hline
\end{tabular}
\end{table}
Primer Paso: Crear una tabla con el tipo de dato JSON o JSONB, seg\'un preferiera, en este ejemplo se usara json. para este ejemplo se creo la tabla de pedidos (orders) que posee dos columnas:
La columna id es la columna de clave principal que identifica la orden.
La columna de información almacena los datos en formato de JSON.
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{js001}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\label{fig_sim}
\end{figure}
Segundo Paso: Insetar datos JSON.
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{js002}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\label{fig_sim}
\end{figure}
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{js003}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\label{fig_sim}
\end{figure}
Tercer paso: Realizar una consulta
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{js004}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\label{fig_sim}
\end{figure}
\section{Postgres vs MongoDB - Pruebas de desempe\~no}
Antes de entrar en detalle sobre la prueba de desempe\~no es importante conocer las caracteristicas de ambas bases de datos.
La tabla en la figura 2, compara las caracteristicas mas importante de una base de datos NoSQL Orientada a Documento (como MongoDB) contra las características de una base de datos relacional (como Postgres):
\begin{figure}[!h]
\centering
\includegraphics[width=0.5\textwidth]{tab1}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\includegraphics[width=0.5\textwidth]{tab2}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\caption{Tabla comparativa de las caracteristicas de MongoDB y Postgres}
\label{fig_sim}
\end{figure}
% You must have at least 2 lines in the paragraph with the drop letter
% (should never be an issue)
\subsection{Caracter\'isticas del experimento}
Las pruebas de comparaci\'on o benchmarking son experimentos que eval\'uan una o
m\'as herramientas para comparar su comportamiento. Para realizar las pruebas se
deben definir m\'etricas, que en el marco de este estudio ser\'an el tiempo de carga de datos, el tiempo de insercion o de escritura, el tiempo de consulta y el espacio en disco que ocupara PostgreSQL y MongoDB, cabe acotar que los tiempos seran medidos en segundos, y espacio en disco sera medido en Gigabyte.
EnterpriseDB (EDB) empez\'o a correr evaluaciones comparativas para ayudar a los usuarios a evaluar correctamente las capacidades de NoSQL Postgres.El conjunto inicial de pruebas en comparaci\'on MongoDB v2.6 contra Postgres v9.4 beta, esta prueba de rendimiento se realizo en los casos de una m\'aquina individual. Ambos sistemas fueron instalados usando los servicios de Amazon Web Services M3.2XLARGE con 32 GB de memoria.
\subsection{?`Por que escogimos este estudio y no otro?}
Hay muchas pruebas encontradas en internet de Postgres vs Mongo, pero la raz\'on por la cual se escogi\'o esta fue:
\begin{itemize}
\item EnterpriseDB es una empresa privada estadounidense que proporciona soporte y herramientas para PostgreSQL. Esta empresa la consideramos como una fuente confiable, con muy buenos articulos que publican constantemente y con gran prestigio en cuanto al soporte que brinda para PostgreSQL.
\item Tienen disponible en GibHub un scrip para que uno pueda realizar esta prueba en cualquier maquina.
\item Al estar el c\'odigo publicado, podemos ver a detalle si realmenete hubo manipulaci\'on de estos datos y asi confiar en esta prueba de desempe\~no.
\end{itemize}
\pagebreak
\subsection{Resultado del experimento}
\begin{figure}[!h]
\centering
\includegraphics[width=0.5\textwidth]{chart1}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\caption{Grafico de los resultados obtenidos}
\label{fig_sim}
\end{figure}
\begin{itemize}
\item La carga de de grandes vol\'umenes de datos fue de aproximadamente 2,1 veces m\'as r\'apido en Postgres MongoDB
\\
\item Las inserciones en la base de datos, tomaron aproximadamente 2,5 veces m\'as larga en tiempo en MongoDB que en Postgres
\item Las consultas en MongoDB tard\'o casi 3 veces m\'as en tiempo con respecto a Postgres.
\item MongoDB consumen 33\% más en el almacenamiento de los datos en disco.
\end{itemize}
\begin{figure}[!h]
\centering
\includegraphics[width=0.4\textwidth]{chart2}
% where an .eps filename suffix will be assumed under latex,
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
\caption{Valores obtenidos en el estudio.}
\label{fig_sim}
\end{figure}
\subsection{?`Seg\'un este resultado es PostgreSQL mejor que MondoDB?}
Comparando este resultado con la versiones actuales, PosgreSQL sigue siendo mas rapido que MondoDB, la unica difrencia es en el almacenamiento ya que mongoDB en su version actual es mas eficiente, MongoDB usa un formato de almacenamiento propio de ellos, llamado BSON, que es mas eficiente, ya que es mas comprimido. Ahora bien, respondiendo a la pregunta, de cual es mejor, la respuesta es MongoDB, EnterPriceDB realizo este estudio en una sola maquina, el problema viene cuando tenemos un sistemas distribuidos con muchos usuarios. MongoDB posee replicaset, son muy sencillos de crear y de modificar, en cambio PostgreSQL posee "artificios" para optenerlos, PostgreSQL utiliza las primitivas de particinamiento para simular esto.
\\
Otra diferencia es en la escalabilidad.
Postgres maneja grandes cantidades de datos para un gran n\'umero de usuarios concurrentes aun así Postgres posee escalabilidad vertical, a diferencia de la mayor\'ias de las bases de datos NoSQL que poseen escalabilidad Horizontal como MongoDB, esta trae como problema en cuanto a mayor n\'umeros de usuarios accediendo a ella, el nivel de concurrencia se ve afectado. Aunque postgreSQL puede manejar la escalabidad horizontal, esta es muy complicada, aunque en la versiones que esta por venir de PostgreSQL v9.6 se reseña en el articula una mejora muy importante en cuanto a la escalabidad Horizontal.
\subsection{Conclusi\'on del experimento}
El gestor de bases de datos PostgreSQL ha ido incorporando paulatinamente
caracter\'isticas NoSQL, destacando los tipos de datos de documentos JSON y el
almacenamiento ef\'imero. Dichas caracter\'isticas fueron evaluadas con respecto a
MongoDB, el gestor NoSQL de mejores tiempos de respuestas. El estudio realizado
muestra que PostgreSQL ha mejorado considerablemente los tiempos de respuestas
con la incorporaci\'on de estas particularidades que tiene las bases de datos NoSQL. Si bien a\'un no est\'a al nivel de los
tiempos de respuesta de MongoDB, por el factor visto de base de datos distribuidos y el nivel de concurrencia que conlleva este, s\'i constituye un paso de avance en la
incorporaci\'on de estas caracter\'isticas, que les permitir\'an a los usuarios hacer uso de
ellas sin tener que migrar a un nuevo gestor de bases de datos.
\section{Conclusi\'on}
SQL y NoSQL han sido grandes inventos en el tiempo en el \'area de gesti\'on de datos y se han utilizado para mantener el almacenamiento y recuperaci\'on optimizado de datos. Es todav\'ia dif\'icil de criticar, y hay que saber cuando nos conviene mejor SQL con respecto a NoSQL o cuando usar ambas. No se tiene que ver como una pelea entre SQL y NoSQL. Ambas tecnolog\'ias son los mejores en lo que hacen y es hasta que un desarrollador decide probrar para poner en uso dependiendo de las situaciones y necesidades empresariales, esta articulo trato de invitar al lector a probrar nuevas tecnologias, y no solo escoger una base de datos porque esta de moda, o por que maneja datos semi-estructurados, ya que se menciono que las bases de datos SQL tambien manejan documentos, si una base de datos no tiene un buen rendimiento es necesario enfrentarse y probar con otra base de datos, aunque las bases de datos NoSQL se est\'an convirtiendo en una parte importante, sin embargo, las empresas deben actuar con precauci\'on y ser consciente de las limitaciones asociados a estas bases de datos.
\bibliographystyle{IEEEtran}
% argument is your BibTeX string definitions and bibliography database(s)
\bibliography{references}
AUN FALTA REVISAR LA ORTOGRAFIA, COLOCAR LAS REFERENCIAS DE DONDE SACAMOS TODOS ESTOS PUNTOS, Y COMPLETAR UNA INFORMACION EN EL PUNTO 5 Y 6
%
% <OR> manually copy in the resultant .bbl file
% set second argument of \begin to the number of references
% (used to reserve space for the reference number labels box)
%\begin{thebibliography}{1}
%\bibitem{IEEEhowto:kopka}
%H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
% 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
%\end{thebibliography}
% that's all folks
\end{document}