Proyecto Mongo Db

  • Upload
    almx18

  • View
    42

  • Download
    0

Embed Size (px)

Citation preview

  • Ao del Centenario de Machu Picchu para el Mundo

    Carrera profesional de Computacin e Informtica

    TRABAJO TERICO PRCTICO

    Presentado por:

    Aguirre Paucar, Miguel Oscar

    Bolaos Victoria, Ivn Arturo

    De La Cruz Vilcahuaman, Teresa Yaneth

    Para Optar el ttulo profesional de:

    TCNICO EN COMPUTACIN E INFORMTICA

    Huancayo Per

    2011

    Proyecto de Implementacin de Servidores Web con Uso de Tecnologas Tornado y

    MongoDB

  • ASESOR:

    Ing. Jess Alberto Zea Salas

  • A: Nuestros padres con amor y cario por

    su apoyo incondicional que cada da nos

    brindan.

  • NDICE

    Portada i

    Asesora ii

    Dedicatoria iii

    ndice iv

    Introduccin vii

    Captulo I

    MARCO METODOLGICO

    1.1. El problema de investigacin 6

    1.1.1. El problema 6

    1.1.2. Los Objetivos 7

    1.1.3. La Justificacin 8

    1.2. Metodologa 10

    1.2.1. Marco Metodolgico 10

    1.2.2. Tcnicas 11

    1.2.3. Instrumentos 11

  • Captulo II

    MARCO TERICO

    2.1. Antecedentes de Proyecto 12

    2.2. Descripcin del tema del Proyecto 12

    2.3. Terminologa Bsica 13

    Captulo III

    DESARROLLO DEL PROYECTO

    3.1. Descripcin operativa del proyecto 22

    3.1.1. Estructura y funcionamiento de un servidor Web 22

    3.1.2. Estructura y funcionamiento de un gestor de base de datos 23

    3.1.3. Estructura y funcionamiento de un Framework 29

    3.1.4. Tecnologas para implementar Servidores Web 33

    3.1.4.1 Modelado de la aplicacin del ejemplo 34

    3.1.4.2 Implementacin en LAMP 36

    3.1.4.3 Implementacin con tecnologas Microsoft 38

    3.1.4.4 Implementacin con Tornado y MongoDB 41

    3.1.4.5 Comparativa entre las soluciones propuestas 43

    3.2. Resultados Obtenidos 54

    3.2.1. Anlisis y evaluacin final

    54

    CONCLUSIONES 57

    SUGERENCIAS 59

  • BIBLIOGRAFIA 60

    ANEXOS 61

  • INTRODUCCIN

    El presente trabajo trata de enfocar los nuevos problemas que van surgiendo

    debido al alto incremento de usuarios en los sistemas y aplicaciones basadas en

    web.

    Los portales de mayor relevancia tienen problemas para atender a un nmero

    elevado de usuarios ya que sus servicios no estn preparados para esta tarea,

    haciendo que se tenga que crecer a nivel de hardware ocasionando altos gastos

    hacia la empresa o entidad.

    Por lo tanto el objetivo del proyecto es tener los lineamientos para implementar

    servicios web que sean capaces de mantenerse en ejecucin con un rendimiento

    aceptable ante el incremento de la carga de trabajo sin necesidad de tener que

    incrementar nuestros costos de hardware usando las tecnologas Tornado y

    MongoDB.

    Para desarrollar el trabajo se ha realizado una investigacin en base a diversas

    fuentes bibliogrficas analizando los conceptos de servicios web, lenguajes de

    programacin, framework y bases de datos aplicables. Posteriormente se

    consideran las caractersticas en funcionamiento de diversas metodologas de

    trabajo con diversas tecnologas presentes en el mercado actual. Finalmente se

    realiza la implementacin del servicio en funcin al servidor web/framework

    Tornado y al gestor de bases de datos MongoDB.

  • 6

    Captulo I

    MARCO METODOLGICO

    1.1. El problema de investigacin

    1.1.1. El problema

    Actualmente las Empresas y personas buscan tener un espacio

    en Internet donde puedan publicitar sus productos o expresar sus

    ideas, muchas veces estas pginas estn diseadas para soportar

    un pequeo nmero de usuarios, y muchas veces no consideran

    que en el futuro su nmero de usuarios podra incrementarse

    considerablemente.

    Algunas pginas se han desarrollado pensado en un cierto

    nmero de usuario, con el pasar del tiempo han recibido un

    incremento considerable de sus usuarios lo que ocasiona que el

    servicio no est en la capacidad de responder a todas las

    peticiones al mismo tiempo haciendo que sus sitios web no estn

    disponibles temporalmente y en ocasiones que los servidores

    sufran un colapso.

    Podemos mencionar el caso del sitio web del Diario El Comercio

    el cual estuvo fuera de servicio en las elecciones PERU - 2011 a

    causa del alto nmero de personas que consultaban los resultados

    electorales.

    Debido al auge de Internet en la actualidad los sitios web se

    volvieron de gran importancia en el mundo, por ello el inters por

    abordar el problema de mantener la disponibilidad al momento en el

  • 7

    cual la carga de trabajo del servidor se incremente

    considerablemente.

    Por esto se busca plantear los lineamientos para poder

    implementar un servidor web que sea capaz de soportar un

    incremento de su carga de trabajo usando la tecnologa del servidor

    web escalable, no bloqueante Tornado Web y la base de datos

    escalable de alto rendimiento MongoDB.

    1.1.2. Los Objetivos

    Objetivo General

    Demostrar que la implementacin de un servicio web usando las

    tecnologas tornado y MongoDB nos permite manejar un alto

    nmero de usuario concurrentes sin perder redimiendo y velocidad

    en nuestra aplicacin.

    Objetivos Especficos

    Comprender como trabaja un servicio web.

    Estudiar y conocer cules son las ventajas y desventajas de

    trabajar con una base de datos MongoDB en comparacin a

    MS SQL Server y MySQL.

    Estudiar y conocer cules son las ventajas y desventajas de

    trabajar con un Framework web.

    Llevar a cabo una breve comparativa del rendimiento de los

    conjuntos de soluciones LAMP (Linux, Apache, MySQL y PHP),

    IIS (Internet Informacin Server) con .Net y Tornado con

    MongoDB.

    Modelar un Sitio Web y sus interfaces, en base a las tecnologas

    Tornado y MongoDB.

  • 8

    Implementar un sitio web MongoDB con Tornado.

    1.1.3. La Justificacin

    Las empresas crecen ms cada da y su presencia en internet

    resulta de gran importancia para incrementar su presencia en el

    mercado cada vez mas fragmentado, ya que en la actualidad la

    mayora de las personas cuentan con una conexin a internet en

    sus casas.

    Al crecer el nmero de usuarios de un servicio web determinado

    se hace ms difcil manejar la gran cantidad de trfico en sus

    servicios y la cantidad de datos que deben almacenar en sus

    bases de datos, lo que termina ocasionando costos en cuestin de

    incremento de caractersticas de los servidores para poder atender

    este incremento.

    Por lo tanto se plantea el uso de tecnologas actuales que estn

    preparadas para los problemas de la ltima dcada y que estn en

    constante avance, como son el caso de Tornado un servidor web y

    framework desarrollado en el lenguaje de programacin Python en

    cual nos ofrece ser capaz de atender a ms de diez mil usuarios

    concurrentes con una estructura escalable y dinmica, adems de

    traer consigo un framework de desarrollo web para el mismo

    lenguaje lo cual lo hace una de las herramientas ms importante al

    momento de buscar servicios web escalables capaces de atender

    un gran incremento de usuario sin agregar recursos adicionales y

    capaz de mantenerse en el tiempo.

    Adems se plantea el uso del gestor de base de datos no-SQL

    (que no usa sentencias tipo SQL para la insercin, actualizacin y

    seleccin de datos) como es MongoDB el cual es un gestor de base

    de datos gil, escalable, de alto rendimiento y orientado a objetos

    que al ser open source cuenta con una gran comunidad de

    desarrollo. Este Gestor de base de datos nos brinda la ventaja de

  • 9

    atender un mayor nmero de consultas concurrentes y de manejar

    una mayor cantidad de datos, es tambin capaz de mantener su

    rendimiento en el caso de un alto incremento de sus usuarios y

    datos por lo cual se hace ideal al momento de elegirlo pensando en

    el futuro de los servicios web.

    Por lo tanto el uso de estas dos tecnologas, generan beneficios

    expresados en la optimizacin de los procesos y la mejora del

    rendimiento de los servicios web adems de la capacidad de

    atender un gran incremento de usuarios y datos sin perder

    rendimiento, a fin de mejorar la calidad beneficiando tanto a los

    usuarios como a los empresarios que apuesten por estas

    tecnologas.

    Desde el punto de vista prctico, se plantearan los lineamientos

    y caractersticas que hay que tener en cuenta para implementar una

    solucin con estas tecnologas y se realizara una comparacin con

    otros modelos ms conocidos en el mercado.

    Desde el punto de vista terico, esta investigacin generar

    reflexin y discusin tanto sobre el conocimiento existente del rea

    investigada, como dentro del mbito de la tecnologa web, ya que

    de alguna manera u otra, se confrontan teoras (en nuestro caso se

    analizara desde las mejoras que traen consigo las nuevas

    tecnologas y se buscara que la opcin de tornado y mongodb se

    plantee como una opcin a tomar en cuenta en el momento de

    planear un proyecto web ), lo cual necesariamente conlleva hacer

    epistemologa del conocimiento existente.

    Desde el punto de vista metodolgico, esta investigacin est

    generando la aplicacin de un nuevo mtodo para obtener

    conocimiento vlido y confiable dentro del rea de la Tecnologas

    de la informacin de las organizaciones.

  • 10

    Por otra parte, en cuanto a su alcance, esta investigacin abrir

    nuevos caminos para empresas que presenten situaciones

    similares a la que se plantea, sirviendo como marco referencial a

    estas.

    Por ltimo, profesionalmente pondr en manifiesto los

    conocimientos adquiridos durante la carrera y permitir sentar las

    bases para otros estudios que surjan partiendo de la problemtica

    especificada.

    1.2. Metodologa

    1.2.1. Marco Metodolgico

    Mtodos, tcnicas e instrumentos utilizados

    Los mtodos que se emplearon para la ejecucin de las prcticas

    fueron:

    Mtodo Descriptivo:

    Se utiliz cuando el emisor se propone a transmitir al receptor las

    imgenes y sirven tanto para el modo narrativo como el modo

    expositivo por su naturaleza descriptiva.

    Mtodo dialctico:

    Busca una explicacin de las contradicciones y conflictos en la

    sociedad, formulando de esta manera una relacin dialctica

    respecto al objeto.

    Mtodo Lgico Deductivo:

    Mediante el cual se aplican los principios descubiertos a casos

    particulares, a partir de una enlace de juicios.

    Mtodo Comparativo:

    Porque nos permiti establecer diferencias entre las diversas

    tecnologas usadas para montar sitios web.

  • 11

    Mtodo Inductivo:

    Es el razonamiento que, partiendo de casos particulares se eleva a

    conocimientos generales, Este mtodo permite la formacin de

    hiptesis, investigacin de leyes cientficas, y las demostraciones.

    Mtodo sinttico:

    Consiste en la reunin racional de varios elementos dispersos en

    una nueva totalidad, este se presenta ms en el planteamiento de

    la hiptesis.

    1.2.2. Tcnicas

    Las tcnicas que se emplearon para la ejecucin de las prcticas

    fueron:

    Tcnicas de evaluacin: (estrategia que utilizamos y lo que

    estamos proponiendo)

    Son las que sirven para evaluar y tomar decisiones sobre el

    desarrollo de un proceso grupal.

    Se pueden usar tambin para modificar estrategias.

    Tcnica de entrevistas:

    Es la tcnica ms usual y da muchos resultados exitosos.

    1.2.3. Instrumentos

    Los instrumentos que se emplearon fueron:

    Gua de observacin:

    Las observaciones se efectan para comprobar o refutar alguna

    teora, y slo se registran las observaciones cuando se consideran

    relevantes para alcanzar tal fin.

    Lluvia de Ideas:

    Desarrollar y ejercitar la imaginacin creadora; crear un clima

    informal, libre de tensiones; desarrollar actitudes espontneas;

    Actuar con autonoma, originalidad. Se deja que las personas

    acten en un clima totalmente informal, con absoluta libertad para

    expresarse y pensar, con el fin de obtener ideas originales y

    soluciones nuevas.

  • 12

    Captulo II

    MARCO TERICO

    2.1. Antecedentes de Proyecto

    Actualmente en el Per se utiliza estructuras de servidores web con

    LAMP o ASP.NET, SQL Server con IIS y cuando tiene alta concurrencia

    (caso el Comercio en eventos importantes como las elecciones) tienden a

    bloquearse, sin embargo hay soluciones que obtienen una mejor

    performance como es el caso de Tornado con MongoDB, por ello

    implementamos esta herramienta para que as las pginas web que tengan

    alto nmero de usuario puedan guiarse de este trabajo para obtener

    menores tiempos de respuesta.

    2.2. Descripcin del tema del Proyecto

    Este proyecto pretende mostrar las diferentes tecnologas que se usan

    para la implementacin de sitios web y hacer nfasis en tecnologas

    actuales que sean capaces de manejar un gran flujo de trabajo y que sean

    capaces de responder ante un gran nmero de usuarios concurrentes.

    Para el desarrollo del proyecto nos enfocaramos en tecnologas Open

    Source de ltima generacin que son Tornado Web, un framework y

    servidor web escalable no bloqueante y MongoDB un gestor de base de

    datos no SQL no relacional

  • 13

    2.3. Terminologa Bsica

    Internet.- es un conjunto descentralizado de redes de comunicacin

    interconectadas que utilizan la familia de protocolos TCP/IP, garantizando

    que las redes fsicas heterogneas que la componen funcionen como una

    red lgica nica, de alcance mundial. Uno de los servicios que ms xito

    ha tenido en Internet ha sido la World Wide Web (WWW, o "la Web"), hasta

    tal punto que es habitual la confusin entre ambos trminos.

    La World Wide Web.- Es un sistema de distribucin de informacin

    basado en hipertexto o hipermedios enlazados y accesibles a travs de

    Internet. Con un navegador web, un usuario visualiza sitios web

    compuestos de pginas web que pueden contener texto, imgenes, videos

    u otros contenidos multimedia, y navega a travs de ellas usando

    hiperenlaces.

    Navegador o navegador web.- ( web browser) Es una aplicacin que

    opera a travs de Internet, interpretando la informacin de archivos y sitios

    web para que podamos leerla, (ya se encuentre sta alojada en un servidor

    dentro de la World Wide Web o en un servidor local). El navegador

    interpreta el cdigo, HTML generalmente, en el que est escrita la pgina

    web y lo presenta en pantalla permitiendo al usuario interactuar con su

    contenido y navegar hacia otros lugares de la red mediante enlaces o

    hipervnculos.

    Servidores Web.- Un servidor web es un programa que se ejecuta

    continuamente en un computador, mantenindose a la espera de

    peticiones de ejecucin que le har un cliente o un usuario de Internet. El

    servidor web se encarga de contestar a estas peticiones de forma

    adecuada, entregando como resultado una pgina web o informacin de

    todo tipo de acuerdo a los comandos solicitados.

  • 14

    Aplicaciones Web.- En la ingeniera de software se denomina aplicacin

    web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a

    un servidor web a travs de Internet o de una intranet mediante un

    navegador. En otras palabras, es una aplicacin software que se codifica

    en un lenguaje soportado por los navegadores web en la que se confa la

    ejecucin al navegador.

    Cliente-servidor.- La arquitectura cliente-servidor es un modelo de

    aplicacin distribuida en el que las tareas se reparten entre los

    proveedores de recursos o servicios, llamados servidores, y los

    demandantes, llamados clientes. Un cliente realiza peticiones a otro

    programa, el servidor, que le da respuesta. Esta idea tambin se puede

    aplicar a programas que se ejecutan sobre una sola computadora, aunque

    es ms ventajosa en un sistema operativo multiusuario distribuido a travs

    de una red de computadoras.

    Modelo TCP/IP.- Es un modelo de descripcin de protocolos de red creado

    en la dcada de 1970 por DARPA, una agencia del Departamento de

    Defensa de los Estados Unidos. El modelo TCP/IP, describe un conjunto

    de guas generales de diseo e implementacin de protocolos de red

    especficos para permitir que una computadora pueda comunicarse en una

    red. TCP/IP provee conectividad de extremo a extremo especificando

    como los datos deberan ser formateados, direccionados, transmitidos,

    enrutados y recibidos por el destinatario. Existen protocolos para los

    diferentes tipos de servicios de comunicacin entre computadoras.

    HTML.- HTML, siglas de HyperText Marckup Language (Lenguaje de

    Marcado de Hipertexto), es el lenguaje de marcado predominante para la

    elaboracin de pginas web. Es usado para describir la estructura y el

    contenido en forma de texto, as como para complementar el texto con

    objetos tales como imgenes. HTML se escribe en forma de etiquetas,

    rodeadas por corchetes angulares (). HTML tambin puede describir,

    hasta un cierto punto, la apariencia de un documento, y puede incluir un

  • 15

    script (por ejemplo JavaScript), el cual puede afectar el comportamiento de

    navegadores web y otros procesadores de HTML.

    HTTP.- Hypertext Transfer Protocol o HTTP (en espaol protocolo de

    transferencia de hipertexto) es el protocolo usado en cada transaccin de

    la World Wide Web. Es un protocolo orientado a transacciones y sigue el

    esquema peticin-respuesta entre un cliente y un servidor. Al cliente que

    efecta la peticin (un navegador web o un spider) se lo conoce como

    "user agent" (agente del usuario). A la informacin transmitida se la llama

    recurso y se la identifica mediante un localizador uniforme de recursos

    (URL).

    Base de datos SQL.- El lenguaje de consulta estructurado o SQL, es

    un lenguaje declarativo de acceso a bases de datos relacionales que

    permite especificar diversos tipos de operaciones en stas. Una de sus

    caractersticas es el manejo del lgebra y el clculo relacional permitiendo

    efectuar consultas con el fin de recuperar -de una forma sencilla-

    informacin de inters de una base de datos, as como tambin hacer

    cambios sobre ella.

    Base de datos no SQL.- No SQL es un trmino usado en informtica para

    agrupar una serie de almacenes de datos no relacionales que no

    proporcionan garantas ACID. Normalmente no tienen esquemas fijos de

    tablas ni sentencias "join".

    El trmino ACID hace referencia a un conjunto de caractersticas

    necesarias para que una serie de instrucciones puedan ser consideradas

    como una transaccin.

    Estos sistemas responden a las necesidades de escalabilidad horizontal

    que tienen cada vez ms empresas.

    Microsoft SQL Server.- Es un sistema para la gestin de bases de datos

    producido por Microsoft basado en el modelo relacional. Sus lenguajes

    para consultas son T-SQL y ANSI SQL. Microsoft SQL Server constituye

  • 16

    la alternativa de Microsoft a otros potentes sistemas gestores de bases de

    datos como son Oracle o Postgre SQL o MySQL.

    MySQL.- Es un sistema de gestin de bases de datos relacional, multi-hilo

    y multiusuario con ms de seis millones de instalaciones. MySQL AB

    desde enero de 2008 una subsidiaria de Sun Microsystems y sta a su vez

    de Oracle Corporation desde abril de 2009 desarrolla MySQL como

    software libre en un esquema de licenciamiento dual.

    MongoDB.- Es un sistema de base de datos multiplataforma orientado a

    documentos, de esquema libre. Las caractersticas que ms destacara

    de MongoDB son su velocidad y su rico pero sencillo sistema de

    consulta de los contenidos de la base de datos. Se podra decir que

    alcanza un balance perfecto entre rendimiento y funcionalidad,

    incorporando muchos de los tipos de consulta que utilizaramos en nuestro

    sistema relacional preferido, pero sin sacrificar en rendimiento.

    LAMP.- El acrnimo 'LAMP' se refiere a un conjunto de subsistemas de

    software necesarios para alcanzar una solucin global, en este caso

    configurar sitios web o servidores dinmicos con un esfuerzo reducido.

    En las tecnologas LAMP esto se consigue mediante la unin de las

    siguientes tecnologas:

    Linux, el sistema operativo; En algunos casos tambin se refiere a

    LDAP.

    Apache, el servidor web;

    MySQL, el gestor de bases de datos;

    Perl, PHP, o Python, los lenguajes de programacin.

    Frameworks de desarrollo.- En el desarrollo de software, un framework

    es una estructura conceptual y tecnolgica de soporte definida,

    normalmente con artefactos o mdulos de software concretos, con base en

    la cual otro proyecto de software puede ser organizado y desarrollado.

    Tpicamente, puede incluir soporte de programas, bibliotecas y un lenguaje

  • 17

    interpretado entre otros programas para ayudar a desarrollar y unir los

    diferentes componentes de un proyecto.

    IIS.- Internet Information Services o IIS es un servidor web y un conjunto

    de servicios para el sistema operativo Microsoft Windows. Originalmente

    era parte del Option Pack para Windows NT. Luego fue integrado en otros

    sistemas operativos de Microsoft destinados a ofrecer servicios, como

    Windows 2000 o Windows Server 2003. Windows XP Profesional incluye

    una versin limitada de IIS. Los servicios que ofrece son: FTP, SMTP,

    NNTP y HTTP/HTTPS.

    Este servicio convierte a una PC en un servidor web para Internet o una

    intranet, es decir que en las computadoras que tienen este servicio

    instalado se pueden publicar pginas web tanto local como remotamente.

    ASP.Net y IIS.- Las aplicaciones ASP.NET se suelen ejecutar con IIS

    (Servicios de Internet Information Server) como servidor Web.

    Tornado.- Es un servidor web escalable no-bloqueante. A la vez es un

    framework similar a Google WebApps pero con herramientas adicionales

    que sacan ventaja de la infraestructura no-bloqueante.

    Microsoft .NET.- Es un framework de Microsoft que hace un nfasis en la

    transparencia de redes, con independencia de plataforma de hardware y

    que permita un rpido desarrollo de aplicaciones. Basado en ella, la

    empresa intenta desarrollar una estrategia horizontal que integre todos sus

    productos, desde el sistema operativo hasta las herramientas de mercado.

    Visual Basic.- Es un lenguaje de programacin dirigido por eventos,

    desarrollado por el alemn Alan Cooper para Microsoft. Este lenguaje de

    programacin es un dialecto de BASIC, con importantes agregados. Su

    primera versin fue presentada en 1991, con la intencin de simplificar la

    programacin utilizando un ambiente de desarrollo completamente grfico

    que facilitara la creacin de interfaces grficas y, en cierta medida, tambin

    la programacin misma.

  • 18

    C Sharp.- C# (pronunciado si sharp en ingls) es un lenguaje de

    programacin orientado a objetos desarrollado y estandarizado por

    Microsoft como parte de su plataforma .NET, que despus fue aprobado

    como un estndar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es

    uno de los lenguajes de programacin diseados para la infraestructura de

    lenguaje comn.

    Su sintaxis bsica deriva de C/C++ y utiliza el modelo de objetos de la

    plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de

    otros lenguajes.

    Python.- Es un lenguaje de programacin de alto nivel cuya filosofa hace

    hincapi en una sintaxis muy limpia y que favorezca un cdigo legible.

    Se trata de un lenguaje de programacin multiparadigma ya que soporta

    orientacin a objetos, programacin imperativa y, en menor medida,

    programacin funcional. Es un lenguaje interpretado, usa tipado dinmico,

    es fuertemente tipado y multiplataforma.

    JSON.- JSON, acrnimo de JavaScript Object Notation, es un formato

    ligero para el intercambio de datos. JSON es un subconjunto de la notacin

    literal de objetos de JavaScript que no requiere el uso de XML.

    La simplicidad de JSON ha dado lugar a la generalizacin de su uso,

    especialmente como alternativa a XML en AJAX. Una de las supuestas

    ventajas de JSON sobre XML como formato de intercambio de datos en

    este contexto es que es mucho ms sencillo escribir un analizador

    semntico de JSON.

    JavaScript.- JavaScript es un lenguaje de programacin utilizado para

    crear pequeos programitas encargados de realizar acciones dentro del

    mbito de una pgina web. Con JavaScript podemos crear efectos

    especiales en las pginas y definir interactividades con el usuario. El

    navegador del cliente es el encargado de interpretar las instrucciones

    JavaScript y ejecutarlas para realizar estos efectos e interactividades, de

    modo que el mayor recurso, y tal vez el nico, con que cuenta este

    lenguaje es el propio navegador.

  • 19

    CSS.- CSS son las siglas de Cascading Style Sheets - Hojas de Estilo en

    Cascada - que es un lenguaje que describe la presentacin de los

    documentos estructurados en hojas de estilo para diferentes mtodos de

    interpretacin, es decir, describe cmo se va a mostrar un documento en

    pantalla, por impresora, por voz (cuando la informacin es pronunciada a

    travs de un dispositivo de lectura) o en dispositivos tctiles basados en

    Braille.

    PHP.- PHP Hypertext Pre-processor (PHP) es una de las tecnologas Web

    ms extendida en la actualidad, muy sencillo de aprender, realizado

    inicialmente para trabajar sobre Linux con servidor Apache, pero hoy en

    da puede alojarse en cualquier servidor. El cdigo fuente est abierto, por

    los que los problemas que se presentan son rpidamente controlados, y

    solucionados; excelente biblioteca de funciones que permite realizar

    cualquier. Su sintaxis es muy similar a la C y Perl. Se comunica con bases

    de datos sin necesidad de usar ODBC, una de las caractersticas ms

    relevante que tiene.

    ASP.- Active Server Pages (ASP) es la tecnologa pionera en las

    aplicaciones Web que se ejecutan en el servidor, Desarrollado por

    Microsoft y optimizado para su ejecucin en servidores Windows con

    tecnologa NT bajo IIS. Al ser una tecnologa propietaria, no tiene la gran

    cantidad de mdulos que PHP, aunque mediante los objetos COM, trabaja

    fcilmente con archivos dll. Es un tanto desorganizado, utiliza lenguajes

    de scripting no tipados como VBScript o JScript. No hay una distincin

    formal entre el contenido de una pgina y su comportamiento, se pone

    contenido y esperamos a ver qu ocurre.

    ASP.NET.- Es un conjunto de tecnologas de desarrollo de aplicaciones

    web comercializado por Microsoft. Rompe totalmente con el pensamiento

    script que se tena hasta el momento; el cambio en la arquitectura es

    radical. Dado que la Web no se lee secuencial, sino que se compila, lo

    primero que llama la atencin es el enorme incremento de velocidad de

    respuesta del servidor; adems el incremento en seguridad y fortaleza es

  • 20

    muy grande. ASP.NET introduce el concepto del code-behind, por el que

    una misma pgina se compone de dos ficheros: el de la interfaz de usuario

    y el de cdigo.

    Ajax.- viene de: Asynchronous JavaScript and XML, y describe una

    tcnica desarrollada para crear aplicaciones web interactivas. La finalidad

    es lograr una sensacin de interactividad total al realizar intercambios de

    informacin con el servidor sin la necesidad de recargar toda la pgina

    web. sta tcnica usa una combinacin de varios elementos, como lo son:

    XHTML o HTML y CSS para desplegar y estilizar la informacin.

    El DOM accesado por medio de lenguajes de script del lado del cliente,

    como son JavaScript y JScript.

    El objeto XMLHttpRequest para intercambiar los datos con el servidor

    web.

    XML que es comnmente el formato usado para realizar los

    intercambios de informacin, aunque cualquier formato puede ser

    usado.

    Finalmente el propsito es brindarle al usuario una manera ms sencilla de

    realizar la navegacin, pues con AJAX puedes realizar cambios sin la

    necesidad de cargar toda la pgina web nuevamente.

    Servidor HTTP Apache.- Es un servidor web HTTP de cdigo abierto para

    plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y

    otras, que implementa el protocolo HTTP/1.1 y la nocin de sitio virtual.

    Apache presenta entre otras caractersticas altamente configurables, bases

    de datos de autenticacin y negociado de contenido, pero fue criticado por

    la falta de una interfaz grfica que ayude en su configuracin.

    Sistema de gestin de base de datos.- son un tipo de software muy

    especfico, dedicado a servir de interfaz entre la base de datos, el usuario y

    las aplicaciones que la utilizan. El propsito general de los sistemas de

    gestin de bases de datos es el de manejar de manera clara, sencilla y

  • 21

    ordenada un conjunto de datos que posteriormente se convertirn en

    informacin relevante para una organizacin.

    Tecnologas.- es el conjunto de conocimientos tcnicos, ordenados

    cientficamente, que permiten disear y crear bienes y servicios que

    facilitan la adaptacin al medio ambiente y satisfacer tanto las necesidades

    esenciales como los deseos de las personas.

    OpenSource.- Cdigo abierto es el trmino con el que se conoce al

    software distribuido y desarrollado libremente. El cdigo abierto tiene un

    punto de vista ms orientado a los beneficios prcticos de compartir el

    cdigo que a las cuestiones morales y/o filosficas las cuales destacan en

    el llamado software libre.

    Implementacin.- Es la realizacin de una especificacin tcnica o

    algoritmos como un programa, componente software, u otro sistema de

    cmputo. Muchas implementaciones son dadas segn a una especificacin

    o un estndar. Por ejemplo, un navegador web respeta (o debe respetar)

    en su implementacin, las especificaciones recomendadas segn el World

    Wide Web Consortium, y las herramientas de desarrollo del software

    contienen implementaciones de lenguajes de programacin.

    Concurrencia de usuarios.- Se llama concurrencia cuando varios

    usuarios intentan acceder a determinada aplicacin al mismo tiempo

  • 22

    Captulo III

    DESARROLLO DEL PROYECTO

    3.1. Descripcin operativa del proyecto

    3.1.1. Estructura y funcionamiento de Un servidor Web

    Un servidor web o servidor HTTP es un programa que procesa

    cualquier aplicacin del lado del servidor realizando conexiones

    bidireccionales y/o unidireccionales y sncronas o asncronas con el

    cliente generando o cediendo una respuesta en cualquier lenguaje

    o Aplicacin del lado del cliente. El cdigo recibido por el cliente

    suele ser compilado y ejecutado por un navegador web. Para la

    transmisin de todos estos datos suele utilizarse algn protocolo.

    Generalmente se utiliza el protocolo HTTP para estas

    comunicaciones, perteneciente a la capa de aplicacin del modelo

    OSI. El trmino tambin se emplea para referirse al ordenador que

    ejecuta el programa.

    GRFICO N 01

    ESTRUCTURA Y FUNCIONAMIENTO DE UN SERVIDOR WEB

  • 23

    Funcionamiento

    El Servidor web se ejecuta en un ordenador mantenindose a la

    espera de peticiones por parte de un cliente (un navegador web) y

    que responde a estas peticiones adecuadamente, mediante una

    pgina web que se exhibir en el navegador o mostrando el

    respectivo mensaje si se detect algn error. A modo de ejemplo, al

    teclear www.wikipedia.org en nuestro navegador, ste realiza una

    peticin HTTP al servidor de dicha direccin. El servidor responde

    al cliente enviando el cdigo HTML de la pgina; el cliente, una vez

    recibido el cdigo, lo interpreta y lo exhibe en pantalla. Como

    vemos con este ejemplo, el cliente es el encargado de interpretar el

    cdigo HTML, es decir, de mostrar las fuentes, los colores y la

    disposicin de los textos y objetos de la pgina; el servidor tan slo

    se limita a transferir el cdigo de la pgina sin llevar a cabo ninguna

    interpretacin de la misma.

    GRFICO N 02

    3.1.2. Estructura y funcionamiento de un Gestor de base de datos

    Una base de datos o banco de datos (en ocasiones abreviada con

    la sigla BD o con la abreviatura b. d.) es un conjunto de datos

  • 24

    pertenecientes a un mismo contexto y almacenados

    sistemticamente para su posterior uso. En este sentido, una

    biblioteca puede considerarse una base de datos compuesta en su

    mayora por documentos y textos impresos en papel e indexados

    para su consulta. En la actualidad, y debido al desarrollo

    tecnolgico de campos como la informtica y la electrnica, la

    mayora de las bases de datos estn en formato digital

    (electrnico), que ofrece un amplio rango de soluciones al problema

    de almacenar datos.

    Existen programas denominados sistemas gestores de bases de

    datos, abreviados SGBD, que permiten almacenar y posteriormente

    acceder a los datos de forma rpida y estructurada. Las

    propiedades de estos SGBD, as como su utilizacin y

    administracin, se estudian dentro del mbito de la informtica.

    Las aplicaciones ms usuales son para la gestin de empresas e

    instituciones pblicas. Tambin son ampliamente utilizadas en

    entornos cientficos con el objeto de almacenar la informacin

    experimental.

    SQL (de primera generacin)

    Base de Datos Relacional

    Una base de datos relacional es un conjunto de una o ms

    tablas estructuradas en registros (lneas) y campos (columnas),

    que se vinculan entre s por un campo en comn, en ambos

    casos posee las mismas caractersticas como por ejemplo el

    nombre de campo, tipo y longitud; a este campo generalmente

    se le denomina ID, identificador o clave. A esta manera de

    construir bases de datos se le denomina modelo relacional.

    Estrictamente hablando el trmino se refiere a una coleccin

    especfica de datos pero a menudo se le usa, en forma errnea

    como sinnimo del software usado para gestionar esa coleccin

    de datos. Ese software se conoce como SGBD (sistema gestor

    de base de datos) relacional o RDBMS (del ingls relational

    database management system).

  • 25

    Las bases de datos relacionales pasan por un proceso al que se

    le conoce como normalizacin de una base de datos, el cual es

    entendido como el proceso necesario para que una base de

    datos sea utilizada de manera ptima.

    Entre las ventajas de este modelo estn:

    Garantiza herramientas para evitar la duplicidad de registros, a

    travs de campos claves o llaves.

    Garantiza la integridad referencial: As al eliminar un registro

    elimina todos los registros relacionados dependientes.

    Favorece la normalizacin por ser ms comprensible y aplicable.

    SQL

    El lenguaje de consulta estructurado o SQL (por sus siglas en

    ingls structured query language) es un lenguaje declarativo de

    acceso a bases de datos relacionales que permite especificar

    diversos tipos de operaciones en stas. Una de sus

    caractersticas es el manejo del lgebra y el clculo relacional

    permitiendo efectuar consultas con el fin de recuperar -de una

    forma sencilla- informacin de inters de una base de datos, as

    como tambin hacer cambios sobre ella.

    Caractersticas generales del SQL

    El SQL es un lenguaje de acceso a bases de datos que explota

    la flexibilidad y potencia de los sistemas relacionales permitiendo

    gran variedad de operaciones en stos ltimos.

    Es un lenguaje declarativo de "alto nivel" o "de no

    procedimiento", que gracias a su fuerte base terica y su

    orientacin al manejo de conjuntos de registros, y no a registros

    individuales, permite una alta productividad en codificacin y la

    orientacin a objetos. De esta forma una sola sentencia puede

    equivaler a uno o ms programas que se utilizaran en un

    lenguaje de bajo nivel orientado a registros.

  • 26

    Lenguaje de definicin de datos (DDL)

    El lenguaje de definicin de datos (en ingls Data Definition

    Language, o DDL), es el que se encarga de la modificacin de la

    estructura de los objetos de la base de datos. Existen cuatro

    operaciones bsicas: CREATE, ALTER, DROP y TRUNCATE.

    Lenguaje de manipulacin de datos DML (Data Manipulation

    Language)

    Un lenguaje de manipulacin de datos (Data Manipulation

    Language, o DML en ingls) es un lenguaje proporcionado por el

    sistema de gestin de base de datos que permite a los usuarios

    llevar a cabo las tareas de consulta o manipulacin de los datos,

    organizados por el modelo de datos adecuado.

    El lenguaje de manipulacin de datos ms popular hoy da es

    SQL, usado para recuperar y manipular datos en una base de

    datos relacional.

    INSERT

    Una sentencia INSERT de SQL agrega uno o ms registros a

    una (y slo una) tabla en una base de datos relacional.

    Forma bsica

    INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES

    (''valor1'', [''valor2,...''])

    Ejemplo

    INSERT INTO agenda_telefonica (nombre, numero) VALUES

    ('Roberto Jeldrez', 4886850);

    UPDATE

    Una sentencia UPDATE de SQL es utilizada para modificar los

    valores de un conjunto de registros existentes en una tabla.

    Forma bsica

    SQL="UPDATE ''tabla'' SET columna1=valor1 WHERE

    ''columna1'' = ''valor1''"

    Ejemplo

  • 27

    UPDATE My_table SET field1 = 'updated value asd' WHERE

    field2 = 'N';

    DELETE

    Una sentencia DELETE de SQL borra uno o ms registros

    existentes en una tabla.

    Forma bsica

    SQL="DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''"

    Ejemplo

    DELETE FROM My_table WHERE field2 = 'N';

    Sistemas de gestin de base de datos

    Los sistemas de gestin de base de datos con soporte SQL ms

    utilizados son, por orden alfabtico:

    a) DB2

    b) Firebird

    c) Informix

    d) Interbase

    e) Microsoft SQL Server

    f) MySQL

    g) Oracle

    h) PostgreSQL

    i) PervasiveSQL

    j) SQLite

    k) SQL Server

    l) Sybase ASE

    No SQL (de segunda generacin)

    No SQL es un trmino usado en informtica para agrupar una

    serie de almacenes de datos no relacionales que no

    proporcionan garantas ACID. Normalmente no tienen esquemas

    fijos de tablas ni sentencias "join"

    Ventajas

    Estos sistemas responden a las necesidades de escalabilidad

    horizontal que tienen cada vez ms empresas

  • 28

    Arquitectura

    Tpico de bases de datos relacionales modernos han mostrado

    un pobre desempeo en ciertas aplicaciones intensivas de datos,

    incluyendo la indexacin de un gran nmero de documentos,

    servicio de pginas en los sitios web de alto trfico, y la entrega

    de medios de streaming. Las implementaciones tpicas RDBMS

    se afinan ya sea para leer pequeas pero frecuentes / escritura

    de las transacciones y para las operaciones en bloque de gran

    tamao con los accesos de escritura rara. No SQL, por el

    contrario, puede dar servicio pesado de lectura / escritura cargas

    de trabajo. Despliegues del mundo real No SQL incluyen 3 Digg

    TB para las insignias verdes y Facebook es 50 TB bandeja de

    entrada para la bsqueda.

    Arquitecturas No SQL suelen ofrecer garantas de consistencia

    dbil, tales como la consistencia eventual, o las operaciones

    restringidas de elementos de datos individuales. Algunos

    sistemas, sin embargo, ofrecer plenas garantas de ACID, en

    algunos casos mediante la adicin de una capa de middleware

    adicionales (por ejemplo, AppScale y CloudTPS).

    Varios sistemas de No SQL emplean una arquitectura

    distribuida, con los datos en poder de una manera redundante en

    varios servidores, a menudo usando una tabla hash distribuidas.

    De esta manera, el sistema puede escalar fcilmente mediante

    la adicin de ms servidores, y el fracaso de un servidor puede

    ser tolerado.

    Algunos defensores de No SQL. Promueven interfaces muy

    simples, tales como arrays asociativos o pares de clave y valor.

    Otros sistemas, tales como bases de datos XML nativa,

    promover el apoyo del estndar XQuery. Los sistemas ms

    modernos, como tambin el apoyo CloudTPS consultas de

    unin.

    Para crear una tabla es implcita por que podras ingresar de la

    forma siguiente para crear una coleccin, que es equivalente a

    una tabla.

  • 29

    Insertar datos a una coleccin

    db.users.insert({a:3,b:5})

    Seleccionar datos de una coleccin

    db.users.insert({a:3,b:5})

    Seleccionar solo una coincidencia

    db.users.findOne()

    Seleccionar datos distintos

    db.users.distinct('last_name')

    Contar las coincidencias

    db.users.find({age: {'gt': 30}}).count ()

    Actualizar datos

    db.users.update({b:'q'},{$set:{a:1}},false,true)

    Eliminar datos

    db.users.remove ({z:'abc'});

    Sistemas:

    Cassandra, de Apache The Apache Cassandra

    BigTable, de Google

    Dynamo, de Amazon

    CouchDB, de Apache Apache CouchDB

    MongoDB, de 10gen MongoDB

    3.1.3. Estructura y funcionamiento de un Framework

    Un framework es una estructura conceptual y tecnolgica de

    soporte definida, normalmente con artefactos o mdulos de

    software concretos, con base en la cual otro proyecto de software

    puede ser organizado y desarrollado. Tpicamente, puede incluir

    soporte de programas, bibliotecas y un lenguaje interpretado entre

  • 30

    otros programas para ayudar a desarrollar y unir los diferentes

    componentes de un proyecto.

    Son diseados con la intencin de facilitar el desarrollo de software,

    permitiendo a los diseadores y programadores pasar ms tiempo

    identificando requerimientos de software que tratando con los

    tediosos detalles de bajo nivel de proveer un sistema funcional. Por

    ejemplo, un equipo que usa Apache Struts para desarrollar un sitio

    web de un banco, puede enfocarse en cmo los retiros de ahorros

    van a funcionar en lugar de preocuparse de cmo se controla la

    navegacin entre las pginas en una forma libre de errores. Sin

    embargo, hay quejas comunes acerca de que el uso de frameworks

    aade cdigo innecesario y que la preponderancia de frameworks

    competitivos y complementarios significa que el tiempo que se

    pasaba programando y diseando ahora se gasta en aprender a

    usar frameworks.

    Fuera de las aplicaciones en la informtica, puede ser considerado

    como el conjunto de procesos y tecnologas usados para resolver

    un problema complejo. Es el esqueleto sobre el cual varios objetos

    son integrados para una solucin dada.

    Despus de todo, un framework no debe ser consciente de todos

    estos requerimientos sin tener que ser intrusivo con las aplicaciones

    que permite dentro de s mismo. A esto le sumamos la capacidad

    de extenderse sin prejuicios para diversificar la expresin del

    programa mismo as.

    Arquitectura

    Dentro de este aspecto, podemos basarnos en el modelo MVC

    (Controlador => Modelo => Vista) ya que debemos fragmentar

    nuestra programacin. Tenemos que contemplar estos aspectos

    bsicos en cuanto a la implementacin de nuestro sistema:

  • 31

    GRFICO N 03

    Controlador:

    Con este apartado podemos controlar el acceso (incluso todo) a

    nuestra aplicacin, esto pueden ser: archivos, scripts o

    programas; cualquier tipo de informacin que permita la interfaz.

    As, podremos diversificar nuestro contenido de forma dinmica,

    y esttica (a la vez); pues, slo debemos controlar ciertos

    aspectos (como se ha mencionado antes).

    Modelo:

    Este miembro del controlador maneja las operaciones lgicas, y

    de manejo de informacin (previamente enviada por su ancestro)

    para resultar de una forma explicable, y sin titubeos. Cada

    miembro debe ser meticulosamente llamado, en su correcto

    nombre y en principio, con su verdadera naturaleza: el manejo

    de informacin, su complementacin directa.

    Vista:

    Al final, a este miembro de la familia le corresponde dibujar, o

    expresar la ltima forma de los datos: la interfaz grfica que

  • 32

    interacta con el usuario final del programa (GUI). Despus de

    todo, a este miembro le toca evidenciar la informacin obtenida

    hasta hacerla llegar con el controlador. Solo (e inicialmente), nos

    espera demostrar la informacin.

    Estructura

    Dentro del controlador, modelo o vista podemos manejar lo

    siguiente: datos. Depende de nosotros como interpretar y

    manejar estos 'datos'. Ahora, sabemos que el nico dato de una

    direccin esttica web es: conseguir un archivo fsico en el disco

    duro o de internet, etc. he interpretado o no, el servidor

    responde.

    El modelo, al igual que el controlador y la vista, maneja todos los

    datos que se relacionen consigo (solo es el proceso medio de la

    separacin por capas que ofrece la arquitectura MVC). Y slo la

    vista, puede demostrar dicha informacin. Con lo cual ya hemos

    generado la jerarqua de nuestro programa: Controlador, Modelo

    y Vista.

    Lgica

    Al parecer, debemos inyectar ciertos objetos dentro de sus

    parientes en esta aplicacin, solo as compartirn herencia y

    coherencia en su aplicacin.

    Rpidamente, para una aplicacin web sencilla debemos

    establecer estos objetos:

    Una base (MVC)

    o Controlador: ste debe ser capaz de manejar rutas, archivos,

    clases, mtodos y funciones.

    o Modelo: es como un script habitual en el servidor, solo que

    agrupado bajo un 'modelo' reutilizable.

    o Vista: como incluyendo cualquier archivo en nuestra

    ejecucin, muy simple.

  • 33

    Un sistema

    o Ruteador: con l podemos dividir nuestras peticiones sin

    tantas condicionales.

    o Cargador

    3.1.4. Tecnologas para implementar Servidores Web

    En la actualidad el mbito de los servidores web y tecnologas

    adyacentes a esta estn dominadas por soluciones Open Source,

    generalmente por el ya conocido LAMP (Linux, Apache, MySQL y

    PHP) con una participacin en el mercado del 65.18% para Agosto

    del 2011 siendo seguido por las soluciones brindadas por Microsoft

    con una participacin del 15.86%. Por lo cual se plantea el uso de

    estas soluciones as como la implementacin y comparacin con la

    solucin propuesta (Tornado y MongoDB).

    GRFICO N 04

  • 34

    Developer Julio 2011 Porcentaje Agosto 2011 Porcentaje Cambio

    Apache 235,326,985 65.86% 301,771,518 65.18% -0.69

    Microsoft 60,086,346 16.82% 73,415,916 15.86% -0.96

    nginx 23,357,497 6.54% 35,533,439 7.67% 1.14

    Google 15,641,574 4.38% 17,061,003 3.68% -0.69

    FUENTE: NetCraft ah agosto del 2011

    3.1.4.1 Modelado de la aplicacin del ejemplo

    Para la aplicacin de ejemplo se plantea un escenario

    minimalista para poder hacer las pruebas respectivas se

    cuenta con dos entidades:

    Empleado: Persona que trabaja en un determinada

    organizacin y pertenece a un rea.

    rea: el rea de trabajo en el cual se desarrolla el

    empleado.

    GRFICO N 05

  • 35

    Se cuenta con tres vistas (pgina web):

    Principal: Muestra una lista de todos los empleados y

    te permite buscar a un empleado especifico, o listar

    todos los empleados de determinada rea.

    GRFICO N 06

    Detalles de Empleado: detalla los datos del empleado.

    GRFICO N 07

  • 36

    rea: lista todos los empleados de esa rea y sus datos respectivos.

    GRFICO N 08

    Se realizar la implementacin de este modelo

    propuesto teniendo en cuento el modelo de datos las

    vistas y la funcionalidad para luego compararlos y

    recoger altos relevantes para el desarrollo del proyecto.

    3.1.4.2 Implementacin en LAMP

    Para la implementacin en LAMP se us el framework

    MVC escrito en PHP llamado Symfony.

    Modelo: El esquema de la base de datos se

    desarroll de acuerdo al modelo especificado, en el

    cual se plantean las entidades y relaciones.

    Adems se genera una capa de abstraccin en la

    cual se aplican filtros de seguridad y clases que

    facilitan la obtencin, actualizacin, insercin y

    eliminacin de datos por parte del controlador.

  • 37

    Vista: la vista se renderiza tomando en layout

    (plantilla principal) sobre la cual se reenderizan las

    plantillas de cada accin (pginas web)

    GRFICO N 09

    Controlador: se tomas las peticiones desde la vista

    para luego llamar al modelo y pedirle los datos

    requeridos los cuales ser enviados a las plantillas

    las cuales renderizaran y se la regresaran al

    navegador en formato HTML.

    Implementacin:

    Debian GNU/Linux: GNU/Linux o Linux tiene una

    gran cantidad de distribuciones (versiones) para

    cubrir mltiples necesidades y con mltiples

    caractersticas, para el desarrollo de este proyecto se

    eligi debian GNU/Linux porque es una distribucin

    segura y muy organizada, es usada por empresas y

    universidades adems

    Cuenta con un gran nmero de paquetes

    (aplicaciones)

    instalacin de debian: ver anexo X

    Apache: Al ser Open Source est apoyado por una

    gran comunidad que se encarga de hacerlo cada vez

    ms seguro y confiable, lo cual se refleja en su alto

  • 38

    uso siendo el servidor web predominante en internet

    desde hace muchos aos instalacin en debian 6.0:

    # apt-get install apache2

    #apt-get install libapache2-mod-php5

    MySQL:

    instalacin en debian 6.0:

    apt-get install mysql-server

    PHP:

    instalacin en debian 6.0

    #apt-get install php5

    #apt-get install php5-mysql

    Se desarroll haciendo uso del IDE de desarrollo

    NetBeans con las libreras para PHP5 y usando el

    framework Symfony

    - se crea el proyecto de symfony (ver anexo X) el

    modelo de la base de datos se crea en un archivo de

    configuracin. (Ver anexo X)

    - el modelo se genera con la utilizacin de la librera

    doctrine lo que nos crea las clases para la

    abstraccin de datos (ver anexo X)

    - se crea la aplicacin a desarrollar lo cual genera la

    estructura de archivos necesarias para empezar el

    desarrollo (ver anexo X)

    - se procede con la programacin (ver anexo X)

    3.1.4.3 Implementacin con tecnologas Microsoft

    Instalacin de visual estudio .NET 2010

  • 39

    Instalacin de SQL Server 2008

  • 40

    instalacin de IIS

    Descripcin de los procesos de la implementacin.

    Creacin de la base de datos empresa

    Creacin de las tablas empleado y rea

    Creacin de los procedimientos buscar Empleados y

    buscar por reas que Realizaran la bsqueda en las

    tablas por nombre de los empleados y Creacin del

    proyecto en asp.net con visual Basic por las reas.

    Creacin del dataset en asp.net

    Creacin del script index.aspx donde estarn las

    consultas

    Buscar Empleados y buscar por reas.

    Una vez realizada la aplicacin web la llevamos a

    c://inetpub/wwwroot donde trabajara con IIS

  • 41

    3.1.4.4 Implementacin con Tornado y MongoDB

    Se necesit descarga el archivo de mongoDB ya que es

    veloz y de alto rendimiento, escogemos el que va con ti

    arquitectura, ya sea de 32 64 bits.

    Una vez que ya haya este descargado:

    Lo descomprimimos:

    tar -xzvf ARCHIVO.tgz

    Donde ARCHIVO es el nombre del archivo que

    descargaste, por ejemplo mongodb-linux-x86_64-

    1.8.1.tgz

    Una vez que se acab de descomprimir el archivo, se

    debe crear el directorio que usa MongoDB para

    almacenar los datos, el cual es /data/db. Se crea de la

    siguiente manera (Como sper usuario).

    # mkdir -p /data/db

    mkdir sirve para crear directorios desde la consola de

    Linux, y el parmetro p es para que si se da una ruta

    larga y las carpetas padres no existen, se

    creen automticamente.

    Despus se cambian los permisos:

    # chown USUARIO /data/db

    Donde USUARIO es tu nombre de usuario en Linux. Si

    no sabes cul es, puede probar ejecutando como

    usuario normal el comando whoami

    Una vez cambiado el usuario a la carpeta /data/db, se

    debe ir a los archivos extrados de mongo y entrar a la

    carpeta bin, y ejecutar (como usuario) la aplicacin: /

    MongoDB

    Si no aparece el mensaje "really exiting now" entonces

    se est ejecutando el demonio de MongoDB y est listo

    para conectarse en el puerto 27017, y tambin tiene una

    interfaz web que puede consultarse en

    http://localhost:28017.

  • 42

    Para finalizar el demonio se presiona control + c, para

    poder hacer consultas desde consola de debe usar otra

    terminal.

    En la otra terminal se debe ir a la misma carpeta donde

    se descomprimi MongoDB, y entrar a la carpeta bin y

    esta vez ejecutar la aplicacin. ./mongo y nos debe

    regresar el siguiente prompt

    Para ver las bases de datos:

    show dbs

    Para ver la base de datos actual:

    Db

    Para cambiar de base de datos:

    use NOMBRE

    Para buscar las colecciones de la base de datos

    actual:

    show collections

    Para mostrar ayuda:

    Help

    Vamos a buscar en una base de datos de prueba:

    db.foo.find()

    Y al darle enter, no nos dar resultados, por lo que

    vamos a ingresar un dato de la siguiente manera:

    db.foo.save({ a : 1 })

    Y de nuevo vamos a buscar con

    db.foo.find()

    Y nos dar como resultado:

    { "_id" : bjectId("4da264a9ae5a73975e992d25"),

    "a" : 1}

    Eso significa que ya est para el uso respectivo

    Para la instalacin de tornado web

  • 43

    Se necesit descargar el archivo de tornado pero

    antes tenemos que tener python en versiones

    superiores a 2.5.

    Para descargarlo: http://www.tornadoweb.org/

    Lo descomprimimos.

    $ tar xvzf tornado-0.2.tar.gz

    Lo podemos ver en la consola.

    $ cd tornado-0.2

    Y ya est fcil para el uso respectivo.

    Ahora si se podr usar los dos componentes para el

    uso respectivo.

    3.1.4.5 Comparativa entre las soluciones propuestas

    Se mostrara una comparativa entre lo propuesto y

    Microsoft

    Pruebas Lam

    Para 100 usuarios concurrentes:

    rbol datos de los archivos

  • 44

    Grfico del Informe Agregado

    Grfico de resultado

  • 45

    Para 1000 usuarios

    rbol datos de los archivos

  • 46

    Grfico del informe agregado

    Grfico de resultados

  • 47

    Para 10000 usuarios

    rbol datos de los archivos

  • 48

    Grfico del informe agregado

    Grfico de resultado

  • 49

    Pruebas con tornado y mongoDB

    Para 100 usuarios

    rbol datos de los archivos

  • 50

    Grfico del informe agregado

    Grfico de resultado

    Para 1000 usuarios

    rbol datos de los archivos

  • 51

    Grfico del informe agregado

    Grfico de resultado

  • 52

    Para 10000 usuarios

    rbol datos de los archivos

  • 53

    Grfico del informe agregado

    Grfico de resultado

  • 54

    Se analiz lo propuesto y vimos que lo propuesto es ms til y rpido

    para hacer los fines prcticos

    Cuadro de resultados finales

    Peticiones (concurrentes)

    Tiempo y Error

    LAMP IIS Tornado

    100 Tiempo 238-2373 273-297 16-614

    % Error 0 % 0 % 0 %

    1000 Tiempo 339-94470 210-5068 73-46931

    % Error 0.30 % 0 % 0%

    10000 Tiempo 0-241376 26-14197 0-269270

    % Error 74.64% 71.64% 65.65 %

    Como se puede observar en la imagen anterior el tiempo de respuesta,

    a una amplia cantidad de usuarios de la estructura del servidor web

    basado en tornado y mongoDB da un bajo porcentaje de errores.

    3.2. Resultados Obtenidos

    3.2.1. Anlisis y evaluacin final

    Se implement nuestro modelo de aplicacin web en tres

    entornos y tecnologas de trabajo distintas sobre la misma

    mquina para analizar el modo en el cual cada tecnologa facilita

    o no en desarrollo de la aplicacin, medir el rendimiento y la

    tolerancia a un gran nmero de carga de trabajo

    El mtodo de Desarrollo que se usa para realizar un aplicacin

    LAMP varia de un mtodo tradicional escribiendo las clases y

    funciones desde cero a el uso de framework el cual te facilita la

    abstraccin de datos la seguridad y separa la vista de la lgica

    del negocio

    Por otro lado el desarrollo en Visual Studio .NET te brinda

    herramientas visuales de fcil manejo en el aspecto de UI, sin

    embargo al momento de manejar aspectos internos de un

    sistema el entorno de desarrollo de Microsoft pasa a ser pesado

  • 55

    y fastidioso en el sentido del uso de libreras y handlers y su

    puesta en marcha

    El desarrollo usando el framework de tornado resulta sencillo y

    rpido si bien no cuenta con herramientas visuales si es

    necesario se puede usar algn ide con soporte para python.

    Para probar el rendimiento y la tolerancia a errores se us la

    herramienta jmeter con la cual se prob cada aplicacin con 10,

    100, y 1000 consultas concurrentes. Esta prueba de estrs nos

    dio como resultado que el uso del conjunto de tecnologas

    tornado y mongoDB nos brindan mayor velocidad confiabilidad y

    tolerancia a una mayor carga de trabajo.

    Escenario de pruebas

    Las pruebas se realizaron sobre una laptop hp con las siguientes

    caractersticas:

    Nombre del producto HDX X16-1060ES

    Procesador Intel core 2 duo

    Memoria 4096 MB

    Disco duro 320 GB (5400 rpm)

    Tarjeta de red LAN Ethernet Gigabit 10/100/1000 integrada

    Conectividad inalmbrica

    Intel WiFi Link 5100 Bluetooth

    El software usado para cada caso probado fue:

    LAMP Tecnologas Microsoft

    Tornad/ mongoDB

    sistema operativo debian GNU/Linux 6.0

    MS Windows 7 debian GNU/Linux 6.0

  • 56

    Servidor web apache 2 IIS 7 Tornado 2.0 HTTP server

    Base de Datos MySQL 5.5 Ms SQL Server 2008

    MongoDB

    Framework Synfony 1.4 net Framework 4 Tornado 2.0 web

    Lenguaje de programacin

    PHP 5 Visual Basic python 2.7

    Comprobacin de la hiptesis

    Segn los resultados obtenidos en las pruebas realizadas se

    tiene que:

    en un entorno no optimizado para la puesta en produccin

    de un servidor web la capacidad de la red limita el acceso a

    un gran nmero de usuario concurrentes

    El Servidor web Tornado est mejor preparado para atender

    mltiples requet en menor tiempo y con mejor uso de los

    recursos del ordenador.

  • 57

    CONCLUSIONES

    Se logr demostrar que el conjunto de tecnologas Tornado y mongoDB

    nos brindan un rendimiento mayor a las otras tecnologas usadas, ya que

    el servidor web Tornado nos permite manejar un mayor nmero de

    usuarios concurrentes y la base de datos mongoDB nos permite una

    mayor velocidad en las consultas realizadas.

    Se logr entender que cuando alguna organizacin realiza un

    aplicativo web debe de mirarse al futuro y pensar si su aplicativo

    puede llegar a tener una gran concurrencia de usuarios, esta debe de

    realizarse con un diseo q provea esto. En el caso de la base de datos se

    optara por una base de datos no-sql por las rpidas respuestas que

    presenta ante consultas que tenga que ver con un amplia cantidad de

    datos.

    Se logr entender que los frameworks permiten reducir el tiempo de

    desarrollo y que nos brindan un gran nmero de herramientas para

    procesos repetitivos. esto ya que cuenta con pre procesos que te agilizan

    todo el proceso de desarrollo.

    Se logr realizar la comparativa de las tres estructuras web LAMP, IIS y

    ASP.NET y Tornado con Mongodb con lo cual se demuestra como la

    estructura de tornado con Mongodb da menores casos de que el servidor

    web no responda a las peticiones y responde con mayor velocidad.

  • 58

    Al modelar una aplicacin web podemos darnos cuenta que estos

    diseos se pueden implementar con distintas tecnologas afines a las

    soluciones web.

    Al implementar un sitio web con tornado y Mongodb podemos ver que

    estas soluciones nos reducen el tiempo de desarrollo y nos da como

    resultado una aplicacin con mejor rendimiento y mayor capacidad para

    crecer horizontalmente tambin se encontr con el problema del

    mantenimiento ya que al ser tecnologas nuevas y pocas conocidas no

    tienen amplio soporte.

  • 59

    SUGERENCIAS

    Que, se mire al futuro y no solo basarse en tecnologas antiguas sino que

    tambin hay que tener en cuenta las tecnologas modernas con visin a

    futuro como en el caso de Tornado y MongoDB

    Que, se tome en serio la escalabilidad de la base de datos y pensar en

    que el futura la aplicacin puede albergar una gran cantidad de

    informacin asiendo difcil manejar toda esta carga.

    Que, los programadores o estudiantes tengan en cuenta que la

    tecnologa va avanzado y los framework son el modelo de facto en la

    actualidad para el desarrollo de aplicaciones.

    Que, se implemente Tornado y MongoDB para realizar aplicaciones web

    pensadas a futuro, pues a medida que estas crezcan el costo de

    mantenimiento se mantendr estable o con una variacin mnima.

    Que, se modele las soluciones planteadas antes de empezar el

    desarrollo.

    Que, se tenga en cuenta la documentacin oficial de las tecnologas con

    las que se desarrolla la aplicacin ya que en estas se encuentra toda la

    informacin necesario para el desarrollo del mismo, tambin se sugiere

    revisar foros y blogs relacionados ya que brindan soluciones a problemas

    tpicos lo cual no permitir ahorrar tiempo.

    Que, se usen modelos modernos de desarrollo ya que estos estn

    preparados para las tecnologas actuales y las que vengan.

  • 60

    BIBLIOGRAFA

    I. Libros:

    1) Michael Dory, Adam Parrish y Brendan Berg

    2010 Introduccin a Tornado, Estados Unidos Editorial Amazon

    2) Jennifer Campbell, Paul Gries, Jason Montojo y Greg Wilson

    2004 An Introduction to Computer Science Using Python, Estados

    Unidos Editorial Amazon

    3) Alex Martelli, Anna Ravenscroft y David Ascher

    2005 Python Cookbook, Estados Unidos Editorial Amazon

    4) Kristina Chodorow y Michael Dirolf

    2010 Scaling MongoDB Estados Unidos Editorial Amazon

    5) Kyle Banker

    2006 MongoDB in Action Estados Unidos Editorial Amazon

    6) Charles B. Weinstock y John B. Goodenough

    2006 On System Scalability

    II. URLS:

    http://www.amazon.com

    http://es.wikipedia.org/

    http://www.tornadoweb.org/

    http://www.mongodb.org/

    http://www.python.org/

    http://www.linux-es.org/

    http://news.netcraft.com

    http://www.linux.org/

  • 61

    ANEXOS

    Diagrama entidad relacion de MongoDB

    Diagrama de entidad relacin de Tornado Web