Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proyecto Mongo
Proyecto Mongo
Huancayo Per
2011
ASESOR:
Ing. Jess Alberto Zea Salas
NDICE
Portada
Asesora
ii
Dedicatoria
iii
ndice
iv
Introduccin
vii
Captulo I
MARCO METODOLGICO
1.1.1. El problema
1.1.3. La Justificacin
1.2. Metodologa
10
10
1.2.2. Tcnicas
11
1.2.3. Instrumentos
11
Captulo II
MARCO TERICO
2.1. Antecedentes de Proyecto
12
12
13
Captulo III
DESARROLLO DEL PROYECTO
3.1. Descripcin operativa del proyecto
22
22
23
29
33
Implementacin en LAMP
34
36
38
41
43
54
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.
Captulo I
MARCO METODOLGICO
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.
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
para obtener
10
Por
ltimo,
profesionalmente
pondr
en
manifiesto
los
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 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.
13
14
15
16
un
balance
perfecto
entre
rendimiento
funcionalidad,
17
18
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.
20
21
Implementacin.-
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
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
24
pertenecientes
un
mismo
contexto
almacenados
de
estos
SGBD,
as
como
su
utilizacin
25
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
un
lenguaje
declarativo
de
"alto
nivel"
"de
no
26
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''
''columna1'' = ''valor1''"
Ejemplo
SET
columna1=valor1
WHERE
27
de
almacenes
de
datos
no
relacionales
que
no
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
29
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
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
como
incluyendo
cualquier
archivo
en
nuestra
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
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
15,641,574
4.38%
17,061,003
3.68%
-0.69
GRFICO N 05
35
GRFICO N 06
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
37
Implementacin:
Debian GNU/Linux: GNU/Linux o Linux tiene una
gran cantidad de
cubrir
mltiples
con
mltiples
con
un
gran
nmero
de
paquetes
(aplicaciones)
instalacin de debian: ver anexo X
38
39
40
instalacin de IIS
41
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
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
web
que
http://localhost:28017.
puede
consultarse
en
42
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
$ cd tornado-0.2
Y ya est fcil para el uso respectivo.
Ahora si se podr usar los dos componentes para el
uso respectivo.
44
Grfico de resultado
45
46
Grfico de resultados
47
48
Grfico de resultado
49
50
Grfico de resultado
51
Grfico de resultado
52
53
Grfico de resultado
54
Peticiones
Tiempo y LAMP
(concurrentes) Error
100
1000
10000
Tiempo
% Error
Tiempo
% Error
Tiempo
% Error
238-2373
0%
339-94470
0.30 %
0-241376
74.64%
IIS
Tornado
273-297
0%
210-5068
0%
26-14197
71.64%
16-614
0%
73-46931
0%
0-269270
65.65 %
55
HDX X16-1060ES
Procesador
Memoria
4096 MB
Disco duro
Tarjeta de red
Conectividad
inalmbrica
LAMP
sistema operativo
debian GNU/Linux
6.0
Tecnologas
Microsoft
MS Windows 7
Tornad/
mongoDB
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
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:
57
CONCLUSIONES
58
59
SUGERENCIAS
60
BIBLIOGRAFA
I. Libros:
1)
Michael Dory, Adam Parrish y Brendan Berg
2010 Introduccin a Tornado, Estados Unidos Editorial
2)
Amazon
3)
Amazon
4)
5)
Kyle Banker
2006 MongoDB in Action Estados Unidos Editorial Amazon
6)
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