Está en la página 1de 70

TECNOLGICO DE ESTUDIOS SUPERIORES

CHALCO
ING. EN SISTEMAS COMPUTACIONALES
REFERENCIA:
ACADEMIC DEVELOPMENT CONTROL
CONTROL DE DESARROLLO ACADMICO
TESIS
QUE PARA OBTENER EL TITULO DE:
Ingeniero en Sistemas Computacionales
P R E S E N T A ( N ):
CORTINA CORTES DIANA PAOLA
GUTIRREZ HEREDIA ZARINA
RAMREZ TELLEZ GERARDO

CHALCO, ESTADO DE MXICO a 09 de Enero de 2017

OBJETIVO GENERAL
Desarrollar un sistema web que lleve un control del historial acadmico de los alumnos de la
Ingeniera en Sistemas Computacionales del Tecnolgico de Estudios Superiores de Chalco, el
cual facilite diagnosticar el estado acadmico en el que se encuentra cada alumno, este sistema se
encargar de enviar alertas a los profesores cuando estos consulten las estadsticas y s estas
sobrepasan los lmites estadsticos establecidos por el sistema.

OBJETIVOS ESPECFICOS
Generar una base de datos para llevar el control del historial acadmico de los alumnos de
cada semestre con la finalidad de que los puedan acceder a ello sin necesidad de pedirlo
en el Departamento de Control Escolar y tambin de que obtengan un conocimiento amplio
de las calificaciones que llevan hasta el momento.

Proporcionar al usuario (profesores) la generacin de reportes y grficas para un mejor


anlisis del estado acadmico de cada alumno y de esta manera prevenir el ndice de
reprobacin en cada materia y tomar las medidas necesarias para prevenir este conflicto.

Elaborar un sistema que sea dinmico para permitir a los usuarios (profesores y alumnos)
un fcil manejo y acceso, as como tambin obtener la informacin requerida (historial
acadmico, promedios, rezagos, deserciones, etc.).

Implementar el envo de alertas cuando las estadsticas sobrepasen los lmites


establecidos por el sistema con el objetivo de que se puedan tomar las medidas
adecuadas para resolver este problema.

Gestionar la base de datos desde el SGBD MongoDB, la cual es proporcionada por el


Departamento de Control Escolar ya que es el encargado de administrar dicha base de
datos y nicamente se necesita la informacin para realizar consultas.

Efectuar la asignacin de roles para los diferentes usuarios (profesores y alumnos de la


divisin de la Ingeniera en Sistemas Computacionales) ya que son las nicas personas a
quienes se les permitir tener acceso al sistema.

Desarrollar un sistema el cual sea responsivo, para que sea adaptable a los diferentes
dispositivos electrnicos.

El sistema a desarrollar debe estar totalmente validado para que las alertas se generen
automticamente al actualizar la base de datos. Tambin validar las cuentas de usuario
para tener el control del acceso de acuerdo al tipo de usuario que ingrese (si es profesor o
alumno).

Efectuar la seguridad del sistema, esto con el fin de que si el usuario que intenta acceder al
sistema, no se encuentra registrado en la base de datos, el sistema deber negar el
acceso, por lo que tendr pedir su registro para poder acceder al sistema.

JUSTIFICACIN
El sistema ADC se llevar a cabo con el fin de que la divisin de Ingeniera en Sistemas
Computacionales del Tecnolgico de Estudios Superiores de Chalco lleve un mejor control del
historial acadmico de cada uno de sus alumnos a lo largo del desarrollo de su carrera, dicho
sistema dar acceso a los profesores y alumnos de esta divisin.
El sistema ADC deber ser capaz de mostrar los datos, estadsticas y alertas sobre la informacin
almacenada en la base de datos de los alumnos de la Ingeniera en Sistemas Computacionales (la
base de datos es administrada y gestionada nicamente por el departamento de Control Escolar).
Los datos que se podrn visualizar en este sistema sern todos los referentes al desarrollo
acadmico de cada estudiante, por ejemplo nmero de crditos con el que cuenta hasta el
momento, si es regular o irregular, semestre en el que se encuentra, entre otros. Las estadsticas
que manejar este sistema sern en base al ndice de reprobacin, rezagos, excelencia acadmica
y desercin, por mencionar algunas de ellas, dichas estadsticas son por cada grupo dentro de la
divisin ISC abarcando desde primer semestre hasta noveno semestre. El sistema mostrar alertas
a los profesores al momento de consultar las estadsticas, si estas indican que los porcentajes
determinados estn a punto de sobrepasar o han sobrepasado el porcentaje lmite, si es as dichas
alertas sern enviadas.
Las estadsticas sern mostradas por medio de grficas y reportes en formato PDF, a los cuales
slo tendrn acceso los profesores, ests herramientas sern de gran utilidad ya que les evitar
tener que calcularlos de manera manual y los arrojar de manera automtica.
La implementacin de alertas en este sistema servir para advertir a los docentes sobre los grupos
que muestren estadsticas que sobrepasen los porcentajes de por ejemplo el ndice de reprobados.
Las alertas podrn ser visualizadas por los profesores cuando estos realicen alguna consulta haca
la base de datos, estas se mostrarn a travs de un mensaje emitido automticamente.
Otro motivo por el cual se realizar este sistema es que a los alumnos de la ISC les ser de
mucha utilidad ya que podrn consultar su historial acadmico, es decir, cuntas materias y cules
han cursado hasta el momento, cuntos crditos llevan, que materias llevan reprobadas (en caso
de haber reprobado alguna), promedio general hasta el momento; esto con la finalidad de
ahorrarles tiempo en hacer filas en el departamento de Control Escolar al pedir una impresin de
dicho historial acadmico, ya que dicho departamento es el encargado de proporcionar al alumno
dicha informacin.

Cabe destacar que el sistema nicamente se limitar a dar las estadsticas y alertas a los
profesores como se mencion anteriormente ya que a ellos es a quien les interesa conocer esta
informacin y de esta manera puedan realizar estrategias para no sobrepasar el lmite de ndice de
reprobacin, en cuanto a los estudiantes nicamente les servir como medio de consulta de su
historial acadmico.

PLANTEAMIENTO DEL PROBLEMA


El presente trabajo pretende aportar

informacin a alumnos

docentes

de la carrera de

Ingeniera en Sistemas Computacionales en relacin a la siguiente pregunta: Qu tan importante


es para los docentes llevar a cabo un buen control del historial acadmico de los alumnos y para
los estudiantes consultar dicho historial? Esta pregunta planteada busca

la relacin entre las

siguientes variables: 1) rendimiento acadmico de los estudiantes, 2) posibles bajas por nmero de
especiales que lleve el alumno y 3) nmero de materias recursadas.
Un historial acadmico es el documento que enlista y describe los grados cursados en una o varias
instituciones educativas.
El historial acadmico se expide por una institucin pblica o privada, pero debe estar ratificada por
la institucin educativa del estado, la cual le da validez oficial.
No existe un formato en especfico, por ello existen versiones electrnicas, e impresas diferentes,
pero deben cumplir con caractersticas que lo distinguen, tales como:

Fecha de ingreso a la institucin educativa.


Historial de asistencias.
Materias cursadas.
Materias aprobadas.
Materias reprobadas.
Calificacin promedio.
Los crditos (en historial universitario)
Horas de servicio social (en historial universitario)

El rendimiento acadmico hace referencia a la evaluacin del conocimiento adquirido en el mbito


universitario. Un estudiante con buen rendimiento acadmico es aqul que obtiene calificaciones
positivas en los exmenes que debe rendir a lo largo de una cursada.
En otras palabras, el rendimiento acadmico es una medida de las capacidades del alumno, que
expresa lo que ste ha aprendido a lo largo del proceso formativo. Tambin supone la capacidad
del alumno para responder a los estmulos educativos. En este sentido, el rendimiento acadmico
est vinculado a la aptitud.

HIPOTSIS
El sistema Academic Development Control (ADC) reducir tanto tiempo como esfuerzo en los
profesores en un 90% al momento de consultar el nmero de alumnos que han aprobado o
reprobado la materia que imparten ya que este sistema arrojar reportes detallados que
contendrn dicha informacin

(ndices de reprobacin, alumnos rezagados, deserciones,

promedios por grupo, materia, semestre, etc.) por lo que los docentes se ahorrarn el tiempo de
pedir los reportes a control escolar, as como tambin el calcular manualmente el nmero de
alumnos ya sea regulares o irregulares, promedios e ndices de reprobacin, entre otras
estadsticas que les sean necesarias.

Determinacin de variables:
Variables independientes:
a) Docentes
b) Alumnos
Variables dependientes:
a)
b)
c)
d)
e)
f)

ndices de reprobacin
rezagos
promedios por alumno
materias cursadas
crditos obtenidos
bajas por materias reprobadas

Tamao de la muestra:

Para calcular el tamao de la muestra cuando se conoce el tamao de la poblacin es la siguiente:


2

NpqZ
n=
d ( N1 )pq
Donde:
n = Tamao de la muestra
N = Tamao del universo o poblacin
p = Probabilidad de xito o proporcin esperada
q = Probabilidad de fracaso

Z = Es la desviacin del valor medio que aceptamos para lograr el nivel de confianza deseado.
d = Error mximo admisible en trminos de proporcin (Precisin).
Al aplicar la frmula nos queda de la siguiente manera:

7000.50.5(1.96)2
n=
=128.23
0.03 ( 7001 )0.50.5

Donde:
N = Se tom un universo de 700 usuarios ya que la carrera de ISC consta de aproximadamente
650 alumnos y 50 profesores.
p = Como se desconoce la proporcin esperada se utiliza el criterio conservador (p = q= 0.5).
q = Segn la frmula q =1 p, por lo tanto el resultado es 1 0.5 = 0.5.
Z = Se tom un valor de confianza del 95%.
d = El valor de error de precisin es del 3%
Por lo tanto, el resultado de la muestra consta de 128 personas.

Correlacin de Pearson:

Hiptesis Alternativa: El ndice de reprobacin de los alumnos se correlaciona de acuerdo a la


dificultad del semestre que estn cursando.
Variables:
-

Nmero de alumnos
Semestre actualmente cursado

Tabla de resultados:
Semestre
Primero
Segundo
Tercero
Cuarto
Quinto
Sexto
Sptimo
Octavo
Noveno

Alumnos
6
9
10
17
13
20
25
18
10

La frmula a utilizar es la siguiente:

Cr =

x y . n
N

Donde:
Cr = Coeficiente de correlacin
dx = Es la desviacin tpica de la variable x.
dy = Es la desviacin tpica de la variable y.
dn = Desviacin estndar.
N= Nmero total de la poblacin.
Por lo tanto, la siguiente frmula nos servir para calcular la desviacin estndar de las variables:

( x x )2

=
; x =14.22
n

Donde:

= Promedio

Analizando la frmula de la desviacin estndar:

614.22

914.22

1014.22

1714.22

1314.22

2014.22

2514.22

1814.22

1014.22

( xx )2

x=
=
n

= 2.37

Calculando el coeficiente de correlacin:

Cr =

2.37
=0.01
128

En conclusin, podemos decir que la hiptesis puede llegar a ser aceptada ya que las variables
estn dbilmente relacionadas entre s.

Chi-Cuadrada
Una prueba de chi-cuadrado es una prueba de hiptesis que compara la distribucin observada de
los datos con una distribucin esperada de los datos.
Existen varios tipos de pruebas de chi-cuadrado:
Prueba de chi-cuadrado de bondad de ajuste: Se utiliza este anlisis para probar qu tan bien
una muestra de datos categricos se ajusta a una distribucin terica.

Pruebas de chi-cuadrado de asociacin e independencia: Los clculos para estas pruebas son
iguales, pero la pregunta que se est tratando de contestar puede ser diferente.

Prueba de asociacin: Esta prueba de asociacin sirve para determinar si una variable
est asociada a otra variable. Por ejemplo, determina si las ventas de diferentes colores de

automviles dependen de la ciudad donde se venden.


Prueba de independencia: Se utiliza para determinar si el valor observado de una
variable depende del valor observado de otra variable. Por ejemplo, determina si el hecho
de que una persona vote por un candidato no depende del sexo del elector.

En este caso utilizaremos la Prueba de chi-cuadrado de asociacin e independencia ya que


determinaremos una hiptesis alternativa y una hiptesis nula de acuerdo a la dependencia o
independencia que exista entre nuestras variables.
En este caso evaluaremos la asociacin que existe entre el desarrollo acadmico del alumno (si ha
reprobado o no alguna materia) y la frecuencia con la que repasa los temas recin aprendidos. De
acuerdo con esto, clasificamos los resultados obtenidos de la muestra de la siguiente manera:
FRECUENCIA DE ESTUDIO (REPASO DE TEMAS)
DESARROLLO

RARA

ALGUNAS

CASI

VEZ

VECES

SIEMPRE

17

10

11

24

17

NUNCA

ACADMICO
Alumnos que han
reprobado

por

lo

SIEMPRE

TOTAL

45

15

15

17

65

25

22

22

110

menos una materia


Alumnos que no han
reprobado

ninguna

materia
TOTAL

De acuerdo a los datos de la tabla anterior, nos permiten afirmar que el desarrollo acadmico de
los alumnos depende de la frecuencia con la que repasan sus temas?
Para ello utilizaremos un nivel de significancia de 0.10.
Las hiptesis planteadas son las siguientes:
H0 (hiptesis nula): El desarrollo acadmico es independiente de la frecuencia con la que los
alumnos repasan los temas que les proporcionan los profesores en cada una de las materias.
H1 (hiptesis alterna): El desarrollo acadmico depende de la frecuencia con la que los alumnos
repasan los temas que les proporcionan los profesores en cada una de las materias.

Para comenzar con el clculo de la chi-cuadrada primero obtendremos las frecuencias esperadas
suponiendo que las variables fueran independientes, es decir, si fuera positiva la hiptesis nula,
estas se obtendrn de la distribucin de frecuencias del total de los casos, 45 alumnos de un total
de 110 han reprobado por lo menos una materia y 65 de 110 no han reprobado ninguna.

Calculamos nuestros valores de acuerdo a la frecuencia de estudio:


Nunca: (24 X 45 / 110) = 9.81, (24 X 65 / 110) = 14.18
Rara vez: (17 X 45 / 110) = 6.95, (17 X 65 / 110) = 10.04
Algunas veces: (25 X 45 / 110) = 10.22, (25 X 65 / 110) = 14.77
Casi siempre: (22 X 45 / 110) = 9.0, (22 X 65 / 110) = 13.0
Siempre: (22 X 45 / 110) = 9.0, (22 X 65 / 110) = 13.0

Nuestro siguiente paso es colocar estos valores en nuestra tabla anterior de la siguiente manera:
FRECUENCIA DE ESTUDIO (REPASO DE TEMAS)
DESARROLLO

RARA

ALGUNAS

CASI

VEZ

VECES

SIEMPRE

9.81

6.95

10.22

14.18

10.04

24

17

NUNCA

ACADMICO
Alumnos que han
reprobado

por

lo

SIEMPRE

TOTAL

9.0

9.0

45

14.77

13.0

13.0

65

25

22

22

110

menos una materia


Alumnos que no han
reprobado

ninguna

materia
TOTAL

Ahora calculamos nuestro estadstico de la prueba de chi-cuadrada a partir de la siguiente frmula:

Xo =
2

( O i Ei )

Ei

Donde:
Xo2= Prueba de chi-cuadrada
Oi = Frecuencia observada
Ei= Frecuencia esperada

Aplicamos la frmula quedndonos de la siguiente manera:

( 179.81 )2 ( 714.18 )2 ( 66.95 )2 ( 1110.04 )2 ( 1010.22 )2 ( 1514.77 )2 ( 79 )2 ( 1513 )2 ( 59 )


+
+
+
+
+
+
+
+
9.81
14.18
6.95
10.04
10.22
14.77
9
13
9
Ahora procedemos a calcular nuestros grados de libertad a partir de la siguiente frmula:

gl=( N de filas1 ) ( N de columnas1 )

Donde:
gl = Grados de libertad

Por lo tanto, en nuestra tabla tenemos 2 filas y 5 columnas, al aplicar la frmula de los grados de
libertad obtenemos el siguiente resultado:

gl=( 21 ) ( 51 )=4

Como se haba mencionado al principio, se determin un nivel de significancia con un valor de


0.10, por lo que el valor crtico para la distribucin Xo 2 asociado a 4 grados de libertad y el valor
del nivel de significancia de 0.10 es de 7.779.

En conclusin, debemos descartar la hiptesis nula y aceptar la hiptesis alternativa que plantea
que las variables Desarrollo Acadmico y

la Frecuencia de

estudio con la que repasan los

alumnos son dependientes por lo que nuestro valor de la prueba estadstica es mayor a nuestro
valor crtico para la distribucin Xo2.

KOLMOGOROV-SMIRNOV
Planteamiento de la hiptesis.
Hiptesis alterna (Ha). Los valores observados de las frecuencias para la edad son diferentes de
las frecuencias tericas de una distribucin normal.
Hiptesis nula (Ho). Las diferencias entre los valores observados y los tericos de la distribucin
normal se deben al azar.
Nivel de significacin.
Para todo valor de probabilidad igual o menor que 0.05, se acepta Ha y se rechaza Ho.
Zona de rechazo.
Para todo valor de probabilidad mayor que 0.05, se acepta Ho y se rechaza Ha.
Tabla de 128 alumnos. Los valores X + s son 19 2.85.
EDADES

FA

18 A 20
21 A 23
24 A 26
27 A 29
TOTAL

45
50
20
13
128

45
95
115
128

Aplicacin de la prueba estadstica.


Para calcular los valores Z es con la siguiente formula:

Z 18=

X X 1819
=
=0.35

2.85

Z 20=

X X 2019
=
=0.35

2.85

Z 23=

X X 2319
=
=1.40

2.85

Z 26=

X X 2619
=
=2.45

2.85

Z 29=

X X 2919
=
=3.50

2.85

Despus se calculan los valores tericos


Lmites de
clases
18
20
23
26
29
Total

Valor Z de los
limites
-0.35
0.35
1.40
2.45
3.50

rea bajo la
curva
tipificada
-0.1368
0.1368
0.4192
0.4929
0.4998

Diferencias
entre las
clases

Diferencias
N(128) = F

Fa

0.2736
0.2824
0.0737
0.0069

2.73
2.82
7.37
6.9
19.82

2.7
5.55
12.92
19.82

Calculo estadstico D de kolmogorov-Smirnov


Rangos
Ft
Acumulada
Fobs
Acumulada

1
2.7
128
45
128

2
5.55
128
95
128

3
12.92
128
115
128

4
19.82
128
128
128

Ft-fobs

-0.330

-0.698

-0.797

-0.845

D= Ft Fobs = -0.330
La diferencia mxima D es igual a -0.845.

1.36
=0.120
128

0.05=

El estadstico de Kolmogorov-Smirnov es menor que el crtico y su probabilidad mayor que 0.05,


por lo tanto se acepta Ho y se rechaza Ha.

METODOLOGA
Mtodo de anlisis-sntesis
Es un mtodo que consiste en la separacin de las partes de un todo para estudiarlas en forma
individual (Anlisis), y la reunin racional de elementos dispersos para estudiarlos en su totalidad.
(Sntesis).
Anlisis
Del griego analizas: descomposicin, fragmentacin de un cuerpo en sus principios constitutivos.
Mtodo que va de lo compuesto a lo simple.
Proceso cognoscitivo por medio del cual una realidad es descompuesta en partes para su mejor
comprensin.
Separacin de un todo en sus partes constitutivas con el propsito de estudiar stas por separado,
as como las relaciones que las unen.
Sntesis
Del griego sntesis: mtodo que procede de lo simple a lo compuesto, de las partes al todo, de la
causa a los efectos, del principio a las consecuencias. Composicin de un todo por la reunin de
sus partes.
Reunin de las partes o elementos para analizar, dentro de un todo, su naturaleza y
comportamiento con el propsito de identificar las caractersticas del fenmeno observado.
Las reglas del mtodo de anlisis-sntesis son:

Observacin de un fenmeno, sus hechos, comportamiento, partes y componentes.


Descripcin. Identificacin de todos sus elementos, partes y componentes para poder
entenderlo. Examen crtico. Es la revisin rigurosa de cada uno de los elementos de un
todo.

Descomposicin. Anlisis

exhaustivo

de

todos los

detalles,

comportamientos

caractersticas de cada uno de los elementos constitutivos de un todo; estudio de sus

partes.
Enumeracin. Desintegracin de los componentes a fin de identificarlos, registrarlos y

establecer sus relaciones con los dems.


Ordenacin Volver a armar y reacomodar cada una de las partes del todo descompuesto a

fin de restituir su estado original.


Clasificacin. Ordenacin de cada una de las partes por clases, siguiendo el patrn del

fenmeno analizado, para conocer sus caractersticas, detalles y comportamiento.


Conclusin. Analizar los resultados obtenidos, estudiarlos y dar una explicacin del
fenmeno observado.

CRONOGRAMA DE ACTIVIDADES POR SEMANA


A continuacin se muestran las actividades que se realizarn cada semana para concluir con el
Protocolo de Investigacin (Tesina) en tiempo y forma, el cual abarca un periodo desde el 12 de
septiembre de 2016 al 12 de enero de 2017:

CRONOGRAMA DE ACTIVIDADES MENSUAL


A continuacin se muestran las actividades que se realizarn cada mes para obtener una mejor
visualizacin de estas de una manera concreta en cuanto al tiempo asignado por cada una de ellas
y sus subactividades y as poder concluir con la Tesina en el tiempo establecido:

ANLISIS FODAC
El anlisis FODAC para la elaboracin de este sistema es el siguiente:

FORTALEZAS
-

Facilidad al redactar textos.

Cada integrante cuenta con


disponibilidad de llevar a cabo las
tareas que se le asignen.

Disponibilidad del equipo para realizar


distintas tareas.

Previos conocimientos en
programacin web.

Manejo bsico de JavaScript.

No se cuenta con conocimientos


previos para el lenguaje NoSQL.

No se est familiarizado con los S.O.L.

Sin conocimientos previos para llevar


acabo conexiones MongoDB con PHP.

Falta de disponibilidad de tiempo para


trabajar en equipo.

OPORTUNIDADES
-

Aprender ms sobre el funcionamiento


de JavaScript.

Aprender sobre el lenguaje NoSQL.

Reforzar conocimientos en el manejo


de un S.O.L.

Obtener conocimientos para realizar


conexiones de la base de datos NoSQL
con PHP.

El S.O de arranque falle y no se pueda


tener acceso.

Implementacin de una o ms
funciones en JavaScript complejas.

Algn integrante se le presente una


situacin de fuerza mayor que le
impida realizar las tareas que se le han
asignado.

Que el servidor presente fallas.

DEBILIDADES

AMENAZAS

ACCIONES:
-

Leer artculos sobre JavaScript que expliquen ejemplos

de cmo implementar las

funciones.
Investigar en libros, videos y artculos de cmo se llevan a cabo las sentencias en NoSQL

para crear una BD.


Tomar cursos online sobre JavaScript, NoSQL y PHP.
Ver o leer tutoriales sobre el manejo bsico de un S.O.L (como instalar programas y el uso
de los comandos bsicos para ejecutar dichos programas mediante consola).

Consultar con los profesores acerca de las sentencias en NoSQL.

CAPTULO 2
MARCO TERICO

2.1 PHP
PHP es un acrnimo recursivo para PHP: Hypertext Preprocessor, originalmente Personal Home
Page, es un lenguaje interpretado libre, usado originalmente solamente para el desarrollo de
aplicaciones presentes y que actan en el lado del servidor , capaces de generar contenido
dinmico en la World Wide Web.
PHP es software libre, licenciado bajo la PHP License, una licencia incompatible con la GNU
General Public License (GPL) debido a las restricciones en los trminos de uno de PHP. Se trata
de un lenguaje extremadamente modularizado, lo que lo hace ideal para la instalacin y el uso en
servidores web. Diversos mdulos son creados con el repositorio de extensiones PECL (PHP
Extension Community Library) y algunos de estos mdulos son introducidos como patrn en
nuevas versiones del lenguaje. Es muy parecido, en tipos de datos, sintaxis y dems funciones,
con el lenguaje C y con C++ (Arias, 2013).
PHP es un lenguaje de programacin. Con una sintaxis similar a los lenguajes C y Perl, que se
interpreta por un servidor web Apache y genera cdigo HTML dinmico. Es decir, permite crear un
programa que se pueda ejecutar en el servidor desde un programa visualizador de pginas web y
dar respuestas en funcin de los datos que introduzca el usuario. El cliente nunca ver el cdigo
del programa PHP, slo le llegarn las pginas HTML que genere el programa. A diferencia de
JavaScript, que se ejecuta en las mquinas clientes, un programa PHP se ejecuta en el servidor
web (Muoz R.).

Figura 1. Logo oficial de PHP


PHP tal y como se conoce hoy en da es en realidad el sucesor de un producto llamado PHP/FI.
Creado en 1994 por Rasmus Lerdorf, la primera encarnacin de PHP era un conjunto simple de
ficheros binarios Common Gateway Interface (CGI) escritos en el lenguaje de programacin C.
Originalmente utilizado para rastrear visitas de su currculum online, llam al conjunto de scripts
"Personal Home Page Tools", ms frecuentemente referenciado como "PHP Tools". Con el paso del

tiempo se quiso ms funcionalidad, y Rasmus reescribi PHP Tools, produciendo una


implementacin ms grande y rica. Este nuevo modelo fue capaz de interaccionar con bases de
datos, y mucho ms, proporcionando un entorno de trabajo sobre cuyos usuarios podan
desarrollar aplicaciones web dinmicas sencillas tales como libros de visitas. En junio de 1995,
Rasmus public el cdigo fuente de PHP Tools, lo que permiti a los desarrolladores usarlo como
considerasen apropiado. Esto tambin permiti a los usuarios proporcionar soluciones a los errores
del cdigo, y generalmente a mejorarlo.
En septiembre de ese mismo ao, Rasmus ampli PHP y -por un corto periodo de tiempoabandon el nombre de PHP. Ahora, refirindose a las herramientas como FI (abreviatura de
"Forms Interpreter"), la nueva implementacin inclua algunas de las funciones bsicas de PHP tal
y como la conocemos hoy. Tena variables como las de Perl, interpretacin automtica de variables
de formulario y sintaxis incrustada HTML. La sintaxis por s misma era similar a la de Perl, aunque
mucho ms limitada, simple y algo inconsistente. De hecho, para embeber el cdigo en un fichero
HTML, los desarrolladores tenan que usar comentarios de HTML. Aunque este mtodo no era
completamente bien recibido, FI continu gozando de expansin y aceptacin como una
herramienta CGI --- pero todava no completamente como lenguaje. Sin embargo, esto comenz a
cambiar al mes siguiente; en octubre de 1995 Rasmus public una versin nueva del cdigo.
Recordando el nombre PHP, ahora era llamado (resumidamente) "Personal Home Page
Construction Kit," y fue la primera versin que presuma de ser, en aquel momento, considerada
como una interfaz de scripts avanzada. El lenguaje fue deliberadamente diseado para asemejarse
a C en estructura, hacindolo una adopcin sencilla para desarrolladores familiarizados con C,
Perl, y lenguajes similares. Habiendo sido as bastante limitado a sistemas UNIX y compatibles con
POSIX, el potencial para una implementacin de Windows NT estaba siendo explorada.
El cdigo fue completamente rehecho de nuevo, y en abril de 1996, combinando los nombres de
versiones anteriores, Rasmus introdujo PHP/FI. Esta implementacin de segunda generacin
comenz realmente a desarrollar PHP desde un conjunto de herramientas dentro de un lenguaje
de programacin de derecho propio. Inclua soporte interno para DBM, MySQL, bases de datos
Postgres95, cookies, soporte para funciones definidas por el usuario, y mucho ms.
PHP 3.0 fue la primera versin que ms se pareca al PHP que existe hoy. Encontrando todava
PHP/FI 2.0 ineficiente y falto de las caractersticas que necesitaban para impulsar una aplicacin
de comercio electrnico que estaban desarrollando para un proyecto de universidad, Andi Gutmans
y Zeev Suraski, de Tel Aviv, Israel, comenzaron otra nueva versin del analizador subyacente en
1997. Proponiendo Rasmus online, discutieron varios aspectos de la implementacin actual y su
redesarrollo de PHP. En un esfuerzo para mejorar el motor y comenzar a construir sobre la base de
usuario de PHP/FI existente, Andi, Rasmus y Zeev decidieron colaborar en el desarrollo de un
nuevo e independiente lenguaje de programacin. Este lenguaje completamente nuevo fue

publicado bajo un nuevo nombre, que elimin la implicacin del uso limitado personal que el
nombre PHP/FI tena. Fue renombrado simplemente como 'PHP', con el significado de un acrnimo
recursivo - PHP: Hypertext Preprocessor.
Una de las mejores caractersticas de PHP 3.0 era su gran extensibilidad. Adems de proveer a los
usuarios finales de una interfaz madura para mltiples bases de datos, protocolos, y APIs, la
sencillez de ampliar el lenguaje mismo atrajo a docenas de desarrolladores que presentaron
variedad de mdulos. Podra decirse que esta fue la clave para el tremendo xito de PHP 3.0.
Otras caractersticas clave introducidas en PHP 3.0 incluan el soporte para programacin
orientada a objetos y una sintaxis de lenguaje mucho ms potente y consistente.
En junio de 1998, con muchos nuevos desarrolladores de todo el mundo unidos al esfuerzo, PHP
3.0 fue anunciado por el nuevo Equipo de Desarrollo de PHP como el sucesor oficial de PHP/FI
2.0. El desarrollo activo de PHP/FI 2.0, que estaba casi parado desde noviembre del ao anterior,
fue oficialmente finalizado. Despus de aproximadamente nueve meses de pruebas pblicas,
cuando el anuncio de la versin oficial de PHP 3.0 vino, ya estaba instalado en ms de 70,000
dominios de todo el mundo, y ya no estaba limitado a sistemas operativos compatibles con POSIX.
Una relativamente pequea parte de los dominios que tenan instalado PHP estaban albergados en
servidores que ejecutaban Windows 95, 98, y NT, y Macintosh. En este punto, PHP 3.0 estaba
instalado en aproximadamente el 10% de los servidores web de Internet.
En el invierno de 1998, poco despus del lanzamiento oficial de PHP 3.0, Andi Gutmans y Zeev
Suraski comenzaron a trabajar en una nueva versin del ncleo de PHP. Los objetivos de diseo
fueron mejorar la ejecucin de aplicaciones complejas y mejorar la modularidad del cdigo base de
PHP. Estas aplicaciones se hicieron posibles por las nuevas caractersticas de PHP 3.0 y el apoyo
de una gran variedad de bases de datos y APIs de terceros, pero PHP 3.0 no estaba diseado
para un mantenimiento tan complejo de aplicaciones eficientemente.
El nuevo motor, apodado 'Motor Zend' (proviene de sus nombres de pila, Zeev y Andi), alcanz
estos objetivos de diseo satisfactoriamente, y se introdujo por primera vez a mediados de 1999.
PHP 4.0, basado en este motor, y asociado con un gran rango de nuevas caractersticas
adicionales, fue oficialmente publicado en Mayo del 2000, casi dos aos despus que su
predecesor. Adems de la mejora de rendimiento de esta versin, PHP 4.0 inclua otras
caractersticas clave como el soporte para la mayora de los servidores Web, sesiones HTTP,
buffers de salida, formas ms seguras de controlar las entradas de usuario y muchas nuevas
construcciones de lenguaje.
PHP 5 fue lanzado en Julio del 2004 despus de un largo desarrollo y varios pre-releases. Est
bsicamente impulsado por su ncleo, Zend Engine 2.0 que contiene un nuevo modelo de objetos
y docenas de nuevas opciones.

El equipo de desarrollo de PHP incluye docenas de desarrolladores, as como docenas de otras


personas trabajando en proyectos relacionados y de soporte para PHP, como PEAR, PECL, y
documentacin, y una infraestructura en red subyacente de ms de cien servidores web
individuales en seis de los siete continentes del mundo. Aunque es solo una estimacin basada en
estadsticas de aos anteriores, es seguro suponer que PHP ahora est instalado en diez o quiz
cien millones de dominios en todo el mundo (php, 2016).

Figura 2. Versiones de PHP


PHP puede hacer cualquier cosa que se pueda hacer con un script CGI, como procesar la
informacin de formularios, generar pginas con contenidos dinmicos, o enviar y recibir cookies.
PHP puede ser utilizado en cualquiera en los principales sistemas operativos del mercado,
incluyendo Linux, muchas variantes Unix (incluyendo HP-UX, Solaris y OpenBSD), Microsoft
Windows, Mac OS X, RISC OS. PHP soporta la mayora de servidores web de hoy en da,
incluyendo Apache, IIS, y muchos otros. Esto incluye cualquier servidor web que pueda utilizar el
binario PHP de FastCGI, como lighttpd y nginx. PHP funciona ya sea como un mdulo, o como un
procesador de CGI.
Una de las caractersticas ms potentes y destacables de PHP es su soporte para una gran
cantidad de bases de datos. Escribir una pgina web con acceso habilitado a una base de datos es
increblemente simple utilizando una de las extensiones especficas (por ejemplo, para MySQL), o
utilizar una capa de abstraccin como PDO, o conectarse a cualquier base de datos que soporte el
estndar de Conexin abierta a Bases de Datos por medio de extensin ODBC. Otras bases de
datos podran utilizar URL o sockets, como lo hace CouchDB.

PHP tambin cuenta con soporte para comunicarse con otros servidores usando protocolos tales
como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (en Windows) y muchos otros. Tambin se
pueden crear sockets puros e interactuar usando cualquier otro protocolo. PHP soporta WDDX
para el intercambio de datos entre lenguajes de programacin web.
PHP tiene tiles caractersticas de procesamiento de texto, las cuales incluyen las Expresiones
Regulares Compatibles de Perl (PCRE), muchas extensiones, y herramientas para el acceso y
anlisis de documentos XML. PHP estandariza todas las extensiones XML sobre el fundamento
slido de libxml2, y extiende este conjunto de caractersticas aadiendo soporte para SimplXML,
XMLReader y XMLWriter (Eslava Muoz, 2013).

Figura 3. Funcionamiento PHP


PHP presenta mltiples ventajas frente a otros lenguajes de programacin que necesariamente
harn que este lenguaje se imponga como una alternativa para el desarrollo de todo tipo de
aplicaciones.
Interfaz. En primer lugar se ejecuta a travs de una interfaz que le resulta familiar al usuario: el
cliente web. No es necesario que el usuario aprenda nuevas combinaciones de teclas, ni nada
parecido, para aprender a usar el programa. Tampoco es necesario tener que instalar ningn
software adicional en la estacin cliente para usar un programa PHP aparte del propio navegador
web.
Acceso en red. El propio diseo de PHP lleva incorporada esta virtud. El programa se ejecuta en
un servidor al cual se puede acceder desde cualquier puesto de una red. El servidor siempre
podra limitar el acceso a slo determinados puestos y adems obligar a la identificacin de un
usuario para poder acceder a ciertas partes del programa.

Proteccin del cdigo. Al tener el cdigo ejecutable albergado en cliente servidor, este cdigo est
protegido tanto de la manipulacin de los usuarios como de la presencia de virus.
Facilidad de aprendizaje. Es realmente fcil aprender a programar en PHP. Cualquier persona que
sepa algn lenguaje de programacin puede aprender los fundamentos de PHP en un breve
espacio de tiempo (Muoz R.).

Bibliotecas en PHP

PHP incorpora, sin necesidad de ningn tipo de instalacin ni habilitacin extras, una gran cantidad
de bibliotecas, por lo cual contaremos con mltiples funciones para comenzar a desarrollar sitios
profesionales. Entre estas extensiones se encuentran:

Funciones para manejo de matrices


Funciones matemticas
BCMath (desde PHP 4.0.4, ms funciones matemticas)
Para manejo de clases/objetos
Para manejo de variables de tipo de carcter
Para tratamiento de fecha y hora
Para acceso directo de entrada / salida
Funciones de directorio
Funciones de gestin de errores y registros
Funciones de sistema de archivos
Para utilizar el protocolo FTP
Para utilizar el protocolo HTTP
Funciones de correo
Funciones de red
Funciones de control de salida
Para ejecucin de programas
Funciones para el manejo de sesiones
Funciones de secuencia
Funciones de cadenas
Funciones URL
Funciones para manejo de variables

Para que los cambios (en este caso, la habilitacin o deshabilitacin de extensiones) tengan efecto,
habr que reiniciar el servidor web.

Instrucciones

Las instrucciones en PHP finalizan con un ; (punto y coma), y tambin se reconoce como
equivalente la etiqueta de fin de bloque (?>).

Variables

Una variable es un lugar reservado para almacenar valores. Cada una est identificada por un
nombre, generalmente referido al tipo de dato que almacenar, y comienza con el signo $ seguido
de su nombre, el cual deber empezar con una letra o un guion bajo y, a continuacin, cualquier
nmero de letras, guiones bajos, y nmeros.
Tambin, dentro del lenguaje, contamos con funciones para saber si una variable pertenece a un
tipo especfico o no. Todas devuelven verdadero si corresponden al tipo o falso en caso de no
pertenecer:

is_array sirve para saber si se trata de un array.


is_float sirve para saber si se trata de un flotante.
is_int sirve para saber si se trata de un entero.
is_object sirve para saber si se trata de un objeto.
is_string sirve para saber si se trata de una cadena de caracteres.

Constantes

Las contantes en PHP se generan a travs de la funcin define, que recibe como argumentos un
nombre y un valor para la constante. Una constante, a diferencia de lo que sucede con una
variable, no puede modificar su valor a lo largo del script.

Expresiones

PHP soporta el pre y el post incremento y decremento. Entre las expresiones de comparacin se
cuentan, entre muchas otras, con las siguientes opciones:

> (mayor que)


>= (mayor o igual que)
== (igual que)
!= (distinto)
< (menor que)
<= (menor o igual que)

Una expresin se evala como verdadera si es verdadera, o distinta de falso. Segn PHP, algo es
falso cuando es nulo, cero, vaco, etctera.
Ms all de las variables creadas por los usuarios, PHP provee ciertos arrays especiales a partir de
los cuales podemos acceder a variables predefinidas. Los arrays disponibles son los siguientes:

$GLOBALS permite acceder a cualquier variable del script actual desde cualquier mbito.
$_SERVER almacena variables definidas por el servidor web, por ejemplo, nombre de la

pgina actual, nombre del servidor, direccin IP, etc.


$_GET almacena variables pasadas a travs del mtodo GET.
$_POST almacena las variables pasadas a travs del mtodo POST. El caso ms comn
es el envo de formularios.

$_COOKIE almacena informacin acerca de las cookies guardadas en la mquina del


cliente. Las cookies son estructuras que las pginas almacenan en archivos de texto
ubicados en la mquina del usuario, generalmente dentro de un directorio especfico del
navegador, y sirven para que los sitios puedan reconocer a los visitantes a travs de la

identificacin de los valores contenidos.


$_FILES guarda informacin acerca de los archivos subidos por formulario.
$_ENV permite acceder a ciertas informaciones relacionadas con la mquina desde la cual
se ejecuta PHP, como por ejemplo, el nombre del equipo, directorios especiales, sistema

operativo, etctera.
$_REQUEST da la posibilidad de llegar a las variables contenidas en $_GET, $_POST, y

$_COOKIES.
$_SESSION almacena variables de sesin, que son aquellas que mantienen su valor aun
cuando el usuario salta de una pgina a otra. Tipos de datos

PHP pone a disposicin de los programadores distintos tipos de datos para definir el contenido
de las variables:

Tipo booleano (boolean) puede tomar uno de dos valores: verdadero (true) o falso

(false).
Enteros (integer) pone a disposicin una serie de notaciones en distintas bases:

decimal (base 10), hexadecimal (base 16), y octal (base 8).


Float es un numrico no entero que posee posiciones decimales
Cadena de caracteres son asignadas a variables de dos maneras: rodeadas por

comillas (simples o dobles), o por medio de la sintaxis heredoc.


Matriz podra ser definida como una coleccin de valores, es decir, pares claves /
valor.

Estructuras de Control

PHP cuenta con construcciones que permite realizar tarea variadas, por ejemplo, tomar una accin
u otra dependiendo del valor de una expresin, o repetir instrucciones un nmero N de veces
(Minera, 2008).

Figura 4. Desarrollo PHP

2.2 Sistema Gestor de Base de Datos MongoDB


A principios de 1970, como parte de un experimento en las universidades europeas y
norteamericanas, se desarrollaron sistemas de almacenamiento abierto.
En 1998, Carlo Strozzi, fue el primero en utilizar el trmino NoSQL refirindose a bases de datos
que eran desarrolladas bajo cdigo abierto, ligeras y que no ofrecan interfaces como las bases de
datos convencionales, sin embargo, usaban un modelo relacional.
Ms tarde en 1999, Eric Evans, programador de Rackspace, adopt el trmino NoSQL en un
evento sobre bases de datos distribuidas de cdigo abierto.
En el 2004 surgi la primera implementacin de un sistema de bases de datos NoSQL, cuando
Google lanz la famosa BigTable, la cual posee un alto rendimiento, esto le permiti proveer un
sinfn de aplicaciones, tales como: Maps o Google Earth. (Escobar, 2013)
A medida que aumentaba el xito de los servicios en lnea en Internet (tales como Google o
Amazon), necesitaban nuevos medios de almacenamiento de cantidades masivas de datos a
travs de un nmero creciente e incalculable de servidores, de modo que cada uno de estos
servicios comenz a crear una plataforma de software que pudiera realizar estas tareas. Google
construy BigTable y Amazon construy Dinamo.

Figura 5. El servicio, que depende de Bigtable, es descrito por Tom Kershaw,


director de product management for big data, storage and networking en Google
Cloud Platform.
Estos gigantes de Internet publicaron sus trabajos en artculos y, a partir de ellos, muchas otras
compaas comenzaron a desarrollar sus propias herramientas o a utilizar o ampliar las ya
creadas. El resultado fue un ejrcito de bases de datos NoSQL, especficamente diseadas para
correr en miles de servidores.
Las plataformas de software de la nueva era fueron Cassandra, HBase y Riak. Se reconstruy el
paisaje de las bases de datos, ayudando a muchos otros gigantes de Internet como Facebook,
Twitter o LinkedIn as como tambin a empresas grandes y pequeas, incluidas las empresas
familiares.
Las tecnologas de Google incluyeron plataformas de software tales como The Google File System,
MapReduce y BigTable. Google invent MapReduce e inspir Fladoop, una plataforma de cruce
masivo de datos que hoy en da es uno de los proyectos de cdigo abierto de mayor xito del
mundo. BigTable ayud al lanzamiento de NoSQL.
Las bases de datos NoSQL crecieron a la par que las grandes empresas de Internet como Google,
Amazon, Facebook o Twitter (Aguilar, 2013).

Figura 6. MapReduce es un framework que proporciona un


sistema de procesamiento de datos paralelo y distribuido.

Durante el 2007, con la aparicin de Dynamo por parte de Amazon, se marca un momento
importante dentro de la historia de las bases de datos NoSQL.
A principios del 2008 se inicia otro proyecto importante en bases de datos NoSQL, Cassandra, el
cual es un sistema de bases de datos NoSQL, que se caracteriza por la gran disponibilidad, ste
fue implementado por Facebook y luego sustituy a MySQL como base de datos en Twitter.
(Escobar, 2013).

Figura 7. Cassandra introduce conceptos muy interesantes como el soporte para


multidata center o la comunicacin peer-to-peer entre sus nodos.

En 2013, contina el despliegue de las bases de datos NoSQL unido al progreso de Hadoop.
Ambas tecnologas avanzarn en las infraestructuras de TI de las organizaciones, y seguirn
saliendo al mercado soluciones de software abierto y propietario, por lo que ser preciso que los
directores de sistemas de informacin, CIO, perfilen estrategias para conseguir su implementacin
dentro de las compaas y la consecucin de la mxima productividad posible. El ao de 2013,
inici con la presentacin de algunas novedades o actualizacin de las ltimas versiones de
diferentes proveedores. Veamos las presentaciones ms sobresalientes:
Apache Cassandra 1.2: La base de datos NoSQL de cdigo abierto, Cassandra, mejora sus
capacidades para gestionar grandes volmenes de datos sin comprender el rendimiento de los
sistemas, y aumenta su popularidad. La fundacin Apache anunci a primeros de enero de 2013 su
ltima versin, Cassandra 1.2.
Oracle NoSQL Database 2.0: A finales de diciembre de 2012, Oracle present la nueva versin de
la base de datos NoSQL Database 2.0 que aade ms escalabilidad y menor latencia. De entre las
novedades destacables se encuentra la alta escalabilidad y la baja latencia para dar respuesta en
tiempo real a las cargas de trabajo que se producen con los grandes volmenes de informacin.

Figura 8. Oracle NoSQL Database proporciona un modelo de transaccin poderosa y flexible que
simplifica enormemente el proceso de desarrollo de una aplicacin basada en NoSQL.
Intel entra en NoSQL: Intel ha decidido entrar en el capital de la compaa IOgen, empresa que
desarrolla la base de datos NoSQL basada en cdigo abierto, MongoDB.
Google BigTable contina creciendo con NoSQL: Google BigTable sigue siendo una de las
bases de datos tabulares (por columnas) de mayor influencia en la industria, pero no est
disponible para uso comercial fuera de Google que la utiliza en su oferta de Plataforma como
Servicio, Google App Engine. El crecimiento continuo de popularidad de Hadoop y HBase potencia

a BigTable. HBase es una base de datos inspirada en el trabajo de Google y Hadoop ofrece la
misma funcionalidad map reduce introducida en BigTable.

Figura 9. HBase es una columna de base de datos orientada al construido. Hadoop


utiliza sistema de archivos distribuido para almacenar grandes datos.
MongoDB: Fue diseada por la empresa IOgen, de Nueva York, que actualmente ofrece
consultora y soporte tcnico para MongoDB. Aunque el desarrollo de MongoDB empez en
octubre del 2007, se hizo pblico en febrero del 2009. Fue creada por el ex fundador y director de
tecnologa de DoubleClick Dwight Merriman y el ex DoubleClick ingeniero y fundador y CTO
ShopWiki Eliot Horowitz, quienes se basaron en sus experiencias de construccin a gran escala y
alta disponibilidad. MongoDB mantiene muchas de las caractersticas de una base de datos
relacional. Es otro popular almacn de datos NoSQL (Aguilar, 2013).
Antes de comenzar a definir detalladamente de que se trata MongoDB, se aclarar el trmino
NoSQL.
En origen el trmino NoSQL significaba No SQL, pero con el paso del tiempo, el trmino No se ha
cambiado realmente por Not Only, que refleja ms fielmente las mltiples caras que rodean a la
coleccin grande de tecnologas de bases de datos.
NoSQL ha crecido en los ltimos aos, y seguir creciendo en importancia, y en muchos casos
est sirviendo como una caja de servicios para Big Data hospedada en la nube. Hoy en da, por
tanto, NoSQL significa Not Only SQL (No solo SQL).

Figura 10. NoSQL es especialmente til cuando una empresa necesita acceder y analizar
grandes cantidades de datos no estructurados o datos que se almacenan de forma
remota en varios servidores virtuales en la nube.

Las bases de datos NoSQL (si bien existen muchos seguidores de NoSQL que prefieren llamarlas
simplemente herramientas NoSQL) han sido diseadas para manipular grandes volmenes de
datos de manera muy rpida, y no siguen el modelo entidad-relacin tpico de las bases de datos
tradicionales.
Las bases de datos relacionales, aunque tienen unas caractersticas muy potentes para el manejo
de tipos de datos mediante el lenguaje SQL, su funcionamiento se ralentiza considerablemente
cuando aumenta el volumen de datos por manipular. Las bases de datos tradicionales basan su
funcionamiento en tablas, joins, y transacciones ACI, mientras que las bases de datos NoSQL no
requieren una estructura de datos en forma de tablas y relaciones entre ellas, y no imponen un
esquema prefijado de tablas. Las bases de datos NoSQL son ms flexibles, ya que suelen permitir
informacin en otros formatos como clave-valor, mapeado de columnas, documentos o grafos.
Las bases de datos NoSQL difieren del modelo clsico de sistemas de gestin de bases de datos
relacionales (SGBDR) en aspectos importantes; entre ellos, el ms notable es que no utilizan SQL
como lenguaje de consultas.
Los datos almacenados no requieren estructuras fijas como tablas, normalmente no soportan
operaciones join ni garantizan las caractersticas diferenciadoras ACID (atomicidad, coherencia,
aislamiento

durabilidad),

aunque

al

final

terminan

cumpliendo

estas

caractersticas.

Habitualmente son muy escalables en sentido horizontal, tanto para recursos como para usuarios.

Figura 11. NoSQL no prohbe el lenguaje estructurado de consultas (SQL). Es cierto que algunos
sistemas NoSQL son totalmente no-relacionales, otros simplemente evitan funcionalidades
relacionales.
La tpica base de datos relacional (Oracle, DB2, MySQL) utiliza tablas y esquemas (agrupaciones
de tablas), donde cada tabla tiene filas y columnas; las columnas son el tipo de datos que se desea
guardar y las filas son, en s, cada conjunto de datos.

Las bases de datos NoSQL no utilizan SQL, y no existen las tablas tal como se conoce en las
bases de datos relacionales, sino que la informacin se almacena de modo distinto (clave-valor, por
documentos, grafos). Las caractersticas principales de las bases de datos NoSQL son:
1.
2.
3.
4.

Almacenamiento de gran cantidad de datos.


Escalamiento lineal (escalabilidad) sin afectar al rendimiento.
Acceso muy rpido.
Distribucin y manipulacin de datos no estructurados.

Figura 12. NoSQL se menciona a menudo en combinacin con otras


herramientas de big data.
Las caractersticas fundamentales de las bases de datos NoSQL son: la carencia de un esquema
predeterminado, alta escalabilidad horizontal sin prdida de rendimiento y posibilidad de
manipulacin de grandes volmenes de datos a gran velocidad. Adems funcionan muy bien con
hardware estndar de bajo coste.
Las bases de datos NoSQL son idneas para aplicaciones que requieran de lectura/escritura de
grandes volmenes de datos, y necesiten brindar un servicio a miles o millones de usuarios. En
determinadas aplicaciones, se puede recurrir a soluciones hbridas, mezclando bases de datos
relacionales SQL y bases de datos NoSQL (Aguilar, 2013).

Figura 13. Las grandes redes sociales como Facebook, Twitter o LinkedIn, o buscadores
como Google o Yahoo, utilizan NoSQL como soporte fundamental de almacenamiento de
datos.

Ninguna base de datos NoSQL implementa aislamiento de datos, pero son tolerantes a fallos y
redundancia en sus datos. Mejoran el rendimiento al no realizar una traduccin SQL de cada
sentencia para ser ejecutadas (Borja, 2012).
MongoDB es una base de datos de documentos, NoSQL, muy utilizada (algunas estadsticas la
consideran la nmero uno del mundo), diseada para reemplazar a las SQL tradicionales de uso
general. Es de cdigo abierto y escrita en C++. Actualmente, est disponible para Windows, Linux y
otros sistemas operativos.

Figura 14. Las organizaciones ms sofisticadas del mundo, desde las startups de ltima
generacin hasta las corporaciones ms grandes, utilizan MongoDB para crear aplicaciones
que no eran posibles hasta ahora.
Procede del ingls humongous (enorme) y es un sistema de base de datos NoSQL orientado a
documentos. Al ser de tipo documentos, las estructuras de datos se guardan en documentos con
un esquema dinmico pero siguiendo la notacin de JSON, estas estructuras dinmicas que son
denominadas por MongoDB como BSON, lo que implica que no exista un esquema predefinido,
pudiendo un documento no tener todos los campos definidos para ese documento lo que lo hace
que la integracin de los datos en ciertas aplicaciones sea ms fcil y rpida.
Los almacenes de documentos abarcan una amplia coleccin de formatos y codificacin binaria.
Los formatos de marcacin estndar tales como XML y JSON se combinan con formatos
propietarios como PDF de Adobe o Word de Microsoft.

El lenguaje de consultas UnQL se

desarroll principalmente para consulta de documentos y objetos dato marcados en JSON.

Los almacenes de documentos guardan la informacin como un listado de documentos


desestructurados. Al acceder a un documento, se puede ingresar en un nmero no especificado de
campos con sus respectivos valores. Son muy rpidos para recuperar toda la informacin asociada
al documento, y tienen un esquema de datos muy flexible. Sin embargo, suelen ser lentos para
hacer consultas donde se buscan todos los documentos con un determinado campo, ya que stos
no suelen tener ndices.

Figura 15. UnQL puede considerarse como un superconjunto de la sintaxis de


SQL.
Guardan documentos heterogneos que pueden ser:
1. Textuales XML, formatos JSON, BSON, YAML, con la finalidad de almacenar informacin
con estructura laxa y cambiante.
2. Formatos binarios como PDF o Word. Ideal para servicios que requieren almacenar
transacciones o datos enviados desde dispositivos mviles que usen JSON para
intercambiar informacin. La informacin se almacena teniendo en cuenta dicha
informacin ms una metalinformacin que la encapsula y clasifica por categoras.
La intencin de MongoDB es proporcionar ms funcionalidad que la tpicamente proporcionada por
las bases de datos NoSQL de tipo clave-valor, permitiendo sistemas de consultas acf-hoc,
indexacin de ciertos valores dentro del documento, y manteniendo un rendimiento elevado y
facilidad para distribuir la carga en varios servidores. Algunas empresas que utilizan MongoDB:
Foursquare, bit.ily, Etsy, The New York Times (Aguilar, 2013).

Figura 16. Arquitectura funcional de MongoDB.


Para tener una idea clara sobre cmo interpretar MongoDB, se puede decir que un equivalente a
un registro de base de datos SQL en MongoDB se denomina documento, la agrupacin de

documentos se conoce con el nombre de coleccin, que en base de datos SQL se las conoce
como tabla.
Ahora teniendo una idea de lo que es un documento y una coleccin se puede decir que:

Un sistema Mongo contiene un conjunto de base de datos.


Una base de datos contiene un conjunto de colecciones.
Una coleccin contiene un conjunto de documentos.
Un documento es un conjunto de campos.
Un campo es un par clave/valor.
Una clave es un nombre (cadena).
Un valor es:
- Un tipo cadena, entero, binario, etc.
- Un documento o un vector de valores.

Los documentos mencionados anteriormente se almacenan en la base de datos como un formato


BSON (Binary JSON), que es una versin modificada de JSON (Notacin de Objetos JavaScript
para intercambio de datos). Aunque los datos se guardarn en formato BSON, en la prctica no se
trabajar como un formato BSON, simplemente se mostrar como JSON (Borja, 2012).

Figura 17. JSON naci como una alternativa a XML, el fcil uso en JavaScript ha
generado un gran nmero de seguidores de esta alternativa.

MongoDB presenta una serie de caractersticas, las cuales le han ayudado a posicionarse como
una base de datos preferencial por las compaas, debido a dichas caractersticas MongoDB se
adeca perfectamente para los usos de:

Juegos en lnea
Comercio electrnico
Solucin de problemas con grandes volmenes de informacin
Sistemas de manejo de documentos y contenidos
Almacenamiento de datos operacionales de un sitio web
Almacenamiento de votaciones
Registros y perfiles de usuarios
Estadsticas en tiempo real
Manejo de bitcoras

Es importante resaltar que las bases de datos NoSQL al no manejar ACID no son recomendables
para manejar transacciones monetarias importantes o cuentas bancarias, sin embargo, en el caso
de MongoDB, hay empresas que la han utilizado en la implementacin de transacciones de esa
ndole (Escobar, 2013).
MongoDB cuenta con una serie de herramientas que permiten trabajar con la base de datos desde
diferentes perspectivas, y tratar con ella para diferentes propsitos, destacan entre ellas:

Mongod: Servidor de bases de datos de MongoDB.


Mongo: Cliente para la interaccin con la base de datos MongoDB.
Mongofiles: Herramienta para trabajar con ficheros directamente sobre la base de datos
MongoDB.

Las bases de datos NoSQL hacen gala de una alta escalabilidad horizontal, que en resumidas
cuentas supone la capacidad de adaptacin de un sistema al aumento de informacin con los que
trabajar. MongoDB presenta una arquitectura que facilita la ejecucin de esta importante tarea, y
presenta un mtodo para dividir los datos entre los mltiples servidores que pudiera presentar una
solucin escalada: el Sharding. El principal punto fuerte de este mtodo es que se ejecuta de forma
automtica, permitiendo siempre una gil distribucin de datos entre todos los equipos que se
encuentren trabajando.

Replicacin

Para dotar de consistencia a nuestro sistema, y particularmente a una base de datos NoSQL como
MongoDB, resulta muy aconsejable el uso de la replicacin, y la propuesta estudiada aporta
buenas soluciones a tal cuestin.
MongoDB, es ms flexible que las bases de datos relacionales, y por ello menos restrictivo, lo que
puede presentar en ocasiones problemas de volatilidad. Esto es del todo indeseable en las bases
de datos.
MongoDB manda los documentos escritos a un servidor maestro, que sincronizado a otro u otros
servidores mandar esta misma informacin replicada, a estos esclavos. Hay muchas opciones
para trabajar con esta utilidad, por lo que podremos escribir todo o parte segn nuestras
necesidades. De especial importancia es el hecho de que si el servidor maestro cae, uno de los
esclavos puede ocupar su lugar y permitir as que el servicio contine.

Escalabilidad Horizontal

Las bases de datos relacionales comerciales con capacidad distribuida suelen tener unas licencias
realmente costosas, por lo que resulta interesante buscar alternativas eficientes y de bajo coste
para nuestro sistema.

La escalabilidad horizontal supone trabajar con varias mquinas de manera distribuida,


almacenando en cada uno de los nodos cierta informacin que de una forma u otra debe estar
comunicada con el resto de nodos que forman nuestro sistema. Esto dota de mayor flexibilidad al
sistema, ya que facilita la agregacin de equipos en funcin de las necesidades.
Cosas a tener en cuenta para adoptar una solucin de manejo de grandes volmenes:
i.
ii.
iii.
iv.
v.

Limites potenciales de la escalabilidad


2. Tolerancia a fallos
3. Facilidad de administracin
4. Facilidad de implementacin
5. Expectativa de escalabilidad de rendimiento

Cuando se trabaja con una base de datos en un solo equipo, el nmero de estados posibles se
reduce a Up, o Down, pero cuando se tiene un sistema de bases de datos distribuido, el nmero de
opciones aumenta, en tanto en cuanto existen dependencias entre los nodos que llevar a trabajar
con un mayor nmero de opciones; puede ocurrir que uno de los servidores caiga, o que no haya
comunicacin entre algunos nodos, o que la comunicacin sea muy lenta.
El hecho de meter mayor nmero de nodos conlleva un aumento de la complejidad de la solucin;
por suerte, las soluciones NoSQL han sido pensadas para reducir al mnimo este nmero de
inconvenientes, y hacer que la tarea de distribuir las bases de datos no sea excesivamente ardua.
En este contexto, MongoDB resulta ser una excelente eleccin, que por el hecho de ser open
source ya supone un ahorro considerable en cuanto a coste de herramientas comerciales para la
distribucin de bases de datos.
Una vez se ha llegado a la conclusin de que necesitamos un clster, hemos de meternos en
materia para conocer cmo funciona con MongoDB y cmo llevarlo a cabo.
En primer lugar, decir que un clster es un conjunto de servidores distribuidos para un propsito
comn, en nuestro caso, una base de datos.

Sharding

MongoDB utiliza el Sharding como mtodo para dividir los datos a lo largo de los mltiples
servidores de nuestra solucin. Las bases de datos relacionales tambin hacen tareas similares a
sta, si bien de forma diferente. Tal vez el rasgo ms destacable en MongoDB pasa porque realiza
estas tareas de manera automtica.
A continuacin se hablar de clster habitualmente, para lo que habra que indicar que se trata de
un conjunto de equipos que trabajan conjuntamente ofreciendo una imagen de equipo nico al
exterior.

Una vez se ha indicado a MongoDB que se va a distribuir la base de datos, aadiendo un nuevo
nodo al clster, ste se encarga de balancear los datos, (distribuir los datos de forma eficiente entre
todos los equipos), entre los servidores de forma automtica. Los objetivos del Sharding en
MongoDB pasan por:
1. Un clster transparente: Nos interesa que a la hora de presentar el trabajo sea indiferente
si se trabaja con uno o varios servidores. Para satisfacer esto, MongoDB hace uso de un
proceso de enrutamiento, al que llaman mongos. Los mongos se colocan frente al clster, y
de cara a cualquier aplicacin, parece como si estuviera delante de un servidor individual
MongoDB. Mongos reenva la consulta al servidor o servidores correctos, y devuelve al
cliente la respuesta que ste ha proporcionado.
2. Disponibilidad para lecturas y escrituras: Siempre que no existan causas de fuerza mayor,
(como cada masiva de la luz), debemos asegurar la disponibilidad de escritura y lecturas
en nuestra base de datos. Antes de que se degrade excesivamente la funcionalidad del
sistema, el clster debe permitir fallar tantos nodos como sean necesarios. MongoDB hace
que algunos de los procesos del clster tengan redundancia en otros, de forma que si cae
un nodo, otro puede continuar con estos procesos.
3. Crecimiento gil: Nuestro clster debe aadir o reducir capacidad cuando lo necesite.
Un shard es uno o varios servidores de un clster que son responsables de un subconjunto de
datos del mismo, (un clster con 1.000.000 de documentos, un shard por ejemplo con 200.000). En
el caso de que el shard est compuesto por ms de un servidor, cada uno de estos tendr una
copia idntica del subconjunto de datos.

Balanceo

El balanceador es un proceso de MongoDB para equilibrar los datos en nuestro sistema. Mueve
porciones de datos de un shard a otro, de manera automtica, lo que supone una ventaja
apreciable. Si el administrador no quisiera que esto se llevara a cabo, habra que deshabilitar dicha
opcin.
Para que existan particiones debemos crear datos de al menos 2GB, aunque podemos modificar
esto con el comando, chunksize N, donde N es el tamao en MB.

Actualizaciones

La forma ms sencilla de actualizacin es a travs del comando Update, que toma dos
argumentos, uno de los cuales ser el selector que indicar dnde que modificar, y el otro ser el
campo que hay que modificar, con el valor concreto.

En MongoDB la interaccin es diferente a las de bases de datos SQL tradicionales. Un ejemplo de


estas diferencias se presenta al utilizar la actualizacin de campos; usando el comando Update sin
ms, estamos remplazando el documento original, lo que nos va a llevar errores en caso de
realizar bsquedas especficas. Para actualizar simplemente uno, o varios campos, hemos de
hacer uso de la llamada a $Set (Graterol, 2013).

Consistencia.

A la hora de aplicar consistencia sobre los datos de una base de datos, nos encontramos con dos
modelos de actuacin, pesimista u optimista. El primero, previene los conflictos, es decir, el sistema
posee bloqueos de escritura que va dando para que slo se pueda ejecutar una operacin. El
segundo, sirve para detectar y solucionar los conflictos que se produzcan. En este modelo se
informa de los errores de consistencia dando la posibilidad de intentar de nuevo hacer cambios
sobre la base de datos.
Al hablar de varios servidores y varios nodos, el confirmar la consistencia se complica, teniendo
que asegurar que se cumple la consistencia secuencial donde las operaciones se aplican en el
mismo orden.
Existen otras formas de trabajar, como la posibilidad de guardar las actualizaciones y registros que
entren en conflicto y de alguna manera combinar los resultados o trabajar con algn lenguaje de
programacin para corregir posibles errores entre los registros.
Aunque parezca que la versin pesimista es ms cmoda, puede que este enfoque disminuya la
capacidad de respuesta del sistema y aumenta el peligro de errores de concurrencia.
La replicacin hace que estos errores de escritura persistan, ya que si diferentes nodos tienen
diferentes copias de los datos actualizados de manera independiente, pueden seguir ocurriendo
conflictos de escritura. El uso de un nico nodo como destino de todas las escrituras de los datos
hace que sea mucho ms fcil de mantener la coherencia en las actualizaciones. Nuestros datos y
nuestra base de datos deben tener una coherencia lgica, donde todo el conjunto de datos que se
pueda suministrar tenga coherencia en conjunto.
Adems, para asegurar la consistencia en sistemas replicados debemos asegurar que los datos
tienen el mismo valor cuando son ledos desde cualquiera de las rplicas. Ese tiempo que tardan
las rplicas en actualizar los cambios debe ser el menor posible para evitar las inconsistencias de
replicacin.
Estas ventanas de inconsistencia suelen ser problemticas cuando afectan al mismo usuario que
est haciendo la actualizacin de los datos. Al trabajar con diferentes nodos, puede ser que la
actualizacin de los datos vaya a un nodo distinto y necesite un cierto tiempo para que esos datos

se repliquen. Una forma de asegurar que no ocurra esto es utilizando una consistencia de sesin,
es decir, dentro de la sesin de un usuario se confirma la consistencia. Para poder confirmar esta
consistencia se utiliza una sticky sesin o session affinity. Esta sesin confirma que, siempre y
cuando se mantenga la coherencia en un nodo, en la sesin tambin. Como se puede comprobar,
esta tcnica reduce la capacidad de equilibrar la carga de trabajo.
Otro enfoque utilizado para la coherencia dentro de las sesiones es Version Stamps, que asegura
que cada vez que se interacte con la base de datos se incluir un sello de la ltima versin vista
de una sesin. Cuando se solicitan datos al servidor, ste debe asegurarse que todos los cambios
que tienen esa marca de sesin estn consistentes.
Existe la necesidad de saber cuntos nodos son necesarios para tener una fuerte consistencia. En
operaciones de escritura el nmero de nodos involucrados debe ser mayor que la mitad de los
nodos de replicacin. En operaciones de lectura necesitamos saber el nmero de nodos
disponibles para estar seguros que los datos ledos estn completamente actualizados. Este caso
es un poco ms complicado, ya que si se han necesitado dos nodos para escritura, se necesitarn
dos nodos para la lectura, pero si se ha necesitado un nodo para la escritura se necesitar, al
menos, tres nodos para garantizar la consistencia de los datos en la lectura. La suma de los nodos
necesarios para lectura y escritura debe ser mayor que los nodos involucrados en la particin.

Teorema CAP

Cuando hablamos de consistencia nos referimos a un conjunto de operaciones que se deben


ejecutar en el mismo tiempo en todos los nodos, tanto al leer como al escribir. Con disponibilidad
nos referimos a que cualquier peticin al sistema debe tener una respuesta por parte de algn
nodo. Tolerancia a particiones se refiere al caso en el que las particiones del clster queden
aisladas e incomunicadas,

las peticiones se deben seguir procesando aunque se pierdan

mensajes entre los nodos del sistema.


A partir de esto, tenemos diferentes visiones de los sistemas y sus tres propiedades:
-

CP: Se ejecutan las operaciones de forma consistente tolerando la particin del sistema,

pero no asegura la disponibilidad del sistema.


AP: Las peticiones siempre son respondidas tolerando la particin del sistema, pero

pueden existir datos u operaciones no consistentes.


CA: Las peticiones siempre son respondidas y los datos u operaciones son consistentes,
pero puede perderse comunicacin entre nodos debido a la particin del sistema.

Figura 18. Teorema CAP


El teorema de CAP afirma que slo se pueden obtener dos propiedades de las tres, pero en unos
sistemas con particiones al tratarse de un sistema distribuido tiene que primar la consistencia o la
disponibilidad, aunque en la prctica se pueda implementar parte de ambas.
Este teorema ayuda a la hora de la eleccin del tipo de sistemas que se va a implementar, no
impone restricciones al funcionamiento del sistema, solamente plantea limitaciones ante posibles
errores o fallos del sistema.
Lo que se desprende del teorema CAP es que, como las bases de datos son tolerantes a
particiones, el sistema debe escoger entre alta disponibilidad o coherencia. Pero, en realidad, lo
que se pretende es una solucin entre consistencia y disponibilidad combinando la tolerancia a
particiones y la propia existencia de las mismas.
Existe una representacin ms completa de consistencia de los posibles sistemas realizando la
reescritura del teorema de CAP como PACELC.
Qu es lo que significa: si hay una particin (P), cmo funciona el sistema de disponibilidad y
consistencia (A y C)?; adems (E), cuando el sistema se est ejecutando normalmente en ausencia
de particiones, cmo funciona el sistema de latencia (L) y consistencia (C)?.
Como se puede apreciar, latencia y consistencia slo se aplican a sistemas que replican datos. De
lo contrario, el sistema sufre problemas de disponibilidad ante cualquier tipo de fallo o sobrecarga
de nodo. Debido a que estas cuestiones son slo instancias de latencia extrema, en la parte de
latencia de ELC se puede incorporar la opcin de decidir si s o no replicar datos.
MongoDB es un sistema PA / EC. Los sistemas garantizan lecturas y escrituras consistentes. Sin
embargo, MongoDB utiliza la opcin de replicacin de datos, y si el nodo maestro falla o es
particionado desde el resto del sistema, almacena todas las escrituras que se han enviado al nodo

maestro, pero no va a replicar en un directorio local. Mientras tanto, el resto del sistema elige un
nuevo maestro para que est disponible para leer y escribir. Por lo tanto, el estado del antiguo
maestro y el estado del nuevo maestro se vuelven inconsistentes hasta que el sistema repare los
errores y utilice el directorio anterior para reconciliar los estados.
Tcnicamente, cuando hay una particin, MongoDB no se adapta a la definicin de CAP de
disponibilidad. Sin embargo, en el contexto de PACELC, porque una particin causa ms
problemas de consistencia que problemas de disponibilidad, MongoDB puede ser clasificado como
un sistema PA / EC.
Por ltimo, indicar que algunas de las bases de datos documentales estn situadas del lado AP
donde se centran en la disponibilidad y en la tolerancia de particiones, como por ejemplo CouchDB,
pero tambin tenemos algunas bases de datos documentales que se sitan del lado CP donde
prima la consistencia y la tolerancia de particiones, como por ejemplo MongoDB.

Map-Reduce

Los clster permiten analizar cmo cambiar la forma de almacenamiento de los datos. Si la base
de datos est centralizada, existe el dilema de si ejecutar la lgica de procesamiento en el servidor
o en la mquina cliente. Si se hace lo segundo, se nos abre un abanico de posibilidades a la hora
de pensar en el lenguaje de programacin a utilizar. En cambio, si en las operaciones se involucran
gran cantidad de datos, es lgico realizar la operacin del lado del servidor.
Cuando se trabaja con un clster se tienen muchas mquinas para realizar los clculos. La
cantidad de datos que se transfiere por la red debe ser reducida, por lo que se debe procesar la
mayor cantidad de informacin en ese nodo del clster.
Con el patrn map-reduce se persigue organizar el procesamiento de la informacin haciendo uso
de diferentes mquinas en el clster manteniendo tanto el procesamiento y los datos que necesita
juntos en la misma mquina.
Se debe empezar definiendo el mapa. Se trata de una funcin que tiene como entrada una
coleccin y como salida un grupo de pares clave-valor. Cada una de las implementaciones de la
funcin del mapa es independiente de las otras funciones, esto permite que sean paralelizables.
Todos los resultados de los mapas que se ejecutan en varios nodos son concatenados y enviados
a la funcin reduce, para que a partir de la clave y el conjunto de valores pueda reducir los
resultados. Esta tcnica permite crear tareas eficientes para cada nodo.
Para aumentar el paralelismo se debe particionar la salida de los mapas. Como hemos hablado,
cada funcin reduce genera resultados a travs de una nica clave. En un principio esto no

permite operar con varias claves, siendo una limitacin, pero permite ejecutar varias funciones
reduce en paralelo.
Para poder ejecutar varias funciones reduce en paralelo, se dividen los resultados de los mapas
en los nodos en funcin de la clave, donde mltiples claves son agrupadas en la misma particin
(buckets o regions). Se toman todos los datos de una particin, se combinan en un nico grupo
y se envan a la funcin reduce. Si varias funciones reduce trabajan en paralelo en la misma
particin, el resultado final ser la combinacin de sus resultados (shuffling). Despus, se ejecuta
la funcin de combinacin que toma los pares clave-valor que tienen la misma clave y los combina
en un solo valor. En ocasiones, este paso se suele incluir dentro de la funcin reduce.
Todos estos pasos se pueden ejecutar, adems de en paralelo, en serie. Es decir, reducir la misma
particin en diferentes momentos y lugares. Es posible empezar a combinar mapas antes de que
hayan terminado.
La salida intermedia de cada uno de los pasos puede ser til para otras salidas, consiguiendo
llegar a la reutilizacin, ahorrando tiempo en programacin y ejecucin.
Estos registros intermedios son almacenados formando vistas materializadas. En las primeras
fases de map-reduce se forman mapas con gran cantidad de informacin que puede ser
reutilizada en usos futuros. Esos mapas generados deben ser lo ms genricos posibles, nunca
pensando en programacin para que puedan ser reutilizados el mayor nmero de veces posible
(Vzquez, 2014).

2.3 Debian
Ian Murdock fund oficialmente el proyecto Debian el 16 de agosto de 1993, despus de haber
estudiado en la Universidad de Purdue. Hasta ese momento, el concepto de una distribucin de
Linux era nuevo. Ian pretendi que Debian fuera una distribucin realizada de forma abierta,
siguiendo el espritu de Linux y GNU. La creacin de Debian fue patrocinada por el proyecto GNU
de la FSF durante un ao (noviembre de 1994 a noviembre de 1995) (Silva, 2007) .

Figura 19. Logo de Debian


El proyecto creci lentamente al principio y lanz sus primeras versiones 0.9x en 1994 y 1995. Las
primeras portabilidades a otras arquitecturas fueron a comienzos de 1995, siendo la primero
versin 1.x de Debian lanzada en 1996.

En 1996, Bruce Perens substituyo a Ian Murdock como el lder del proyecto. En la sugerencia del
desarrollador Ean Schuessier, el dirigi el proceso de actualizacin de contrato social de Debian y
de las pautas del software de Debian libremente, definiendo los puntos fundamentales para el
desarrollo de la distribucin. El tambin inicio la creacin de la licencia de software legal de la
organizacin.
Bruce Perens se retir en 1998, antes del lanzamiento de la primera versin de Debian basada en
glibc, bautizada como Debian 2.0. Las primeras distribuciones de Linux basadas en Debian, Corel
Linux y la Stormixs, fueron comenzadas en 1999 (Debian, 2016).
Debian ha tenido varios lderes desde sus comienzos en el ao 1993.
-

Ian Murdock fund Debian en agosto de 1993 y lo condujo hasta marzo de 1996.
Bruce Perens condujo Debian desde abril de 1996 hasta diciembre de 1997.
Ian Jackson condujo Debian desde enero de 1998 hasta diciembre de 1998.
Wichert Akkerman condujo Debian desde enero de 1999 hasta marzo del 2001.
Ben Collins condujo Debian desde abril del 2001 hasta abril del 2002.
Bdale Garbee condujo Debian desde abril del 2002 hasta abril del 2003.
Martin Michlmayr fue elegido en marzo del 2003 y es el lder de proyecto en la actualidad.

Figura 20. Versiones Debian

Cronologa de las versiones de Debian:

Debian 0.01 hasta 0.90 (agosto-diciembre de 1993)


Debian 0.91 (enero de 1994): Esta publicacin dispona de un sencillo sistema de
empaquetamiento que permita instalar y desinstalar paquetes. Varias docenas de personas
formaban parte del proyecto en ese momento.
Debian 0.93R5 (marzo de 1995): En este momento se asignaron responsabilidades de cada
paquete a cada uno de los desarrolladores, y se empez a utilizar el administrador de paquetes
(dpkg) para instalar los paquetes despus de la instalacin del sistema base.

Debian 0.93R6 (noviembre de 1995): Aparece dselect. Esta fue la ltima publicacin de Debian que
utilizaba el formato binario a.out. En este momento haba cerca de 60 desarrolladores. Bdale
Garbee construy el primer servidor master.debian.org y HP lo aloj en paralelo con la publicacin
de 0.93R6. La utilizacin de un servidor maestro especfico en el cual los desarrolladores de
Debian podan construir cada publicacin llev directamente a la formacin de una red de
servidores espejos, e indirectamente al desarrollo de la mayora de las directrices y procedimientos
utilizados para manejar actualmente el proyecto.
La versin 1.0 nunca fue publicada: Accidentalmente Infomagic, un proveedor de CDs, lanz una
versin de desarrollo de Debian y la titul como 1.0. El 11 de diciembre de 1995, Debian e
Infomagic anunciaron conjuntamente que esta versin fue equvoca. Bruce Perens explica que la
informacin colocada en 5 CDs de "Recurso para el Desarrollador de Linux Infomagic" de
noviembre de 1995, como "Debian 1.0" no es la versin 1.0 de Debian, ms bien era una versin
de desarrollo temprana que est solo parcialmente en formato ELF, que probablemente no iniciar
o no se ejecutar correctamente, y no representar la calidad de un sistema Debian publicado.
Debian 1.1 Buzz (17 de junio de 1996): Esta fue la primera versin de Debian con un nombre en
cdigo. Fue tomado, como todos los dems hasta ahora, de un personaje de las pelculas de Toy
Story, en este caso, Buzz Lightyear. En esa ocasin, Bruce Perens tom la direccin del proyecto
desde Ian Murdock, y Bruce estaba trabajando en Pixar, la compaa que produce la pelcula. Esta
versin estaba completamente en formato ELF, usado en el kernel Linux 2.0, y contena 474
paquetes.

Debian 1.2 Rex

Figura 21. Debian 1.1 Buzz

(12

de

diciembre de 1996) Nombrada como el dinosaurio de plstico de la pelcula. Esta versin consisti
en 848 paquetes a cargo de 120 desarrolladores.

Figura 22. Debian 1.2 Rex


Debian 1.3 Bo (5 de junio de 1997): El nombre viene de Bo Peep, la pastora. Esta versin consisti
en 974 paquetes a cargo de 200 desarrolladores.

Figura 23. Debian 1.3 Bo


Debian 2.0 Hamm (24 de julio de 1998): El nombre por el cerdito de la pelcula. Esta fue la primera
versin de Debian multiplataforma, con soporte para arquitecturas Motorola 68000 series. Con Ian
Jackson como lder del proyecto, esta versin hace la transicin a libc6, y consisti en ms de 1500
paquetes a cargo de ms de 400 desarrolladores.

Figura 24. Debian 2.0 Hamm

Debian 2.1 Slink (9 de marzo de 1999): El nombre por el perrito de la pelcula. Se agregaron dos
arquitecturas ms, Alpha y SPARC. Con Wichert Akkerman como lder del proyecto, esta versin
consista en 2250 paquetes y requera 2 CDs en el paquete oficial. La clav tcnica de la
innovacin fue la introduccin deapt, una nueva interface para la administracin de paquetes.
Mundialmente usado, apt condujo las cuestiones resultantes del continuo crecimiento de Debian, y
estableci un nuevo paradigma para la adquisicin de paquetes y la instalacin de sistemas
operativos Open source.

Figura 25. Debian 2.1 Slink

Debian 2.2 Potato (15 de agosto del 2000): El nombre por el Mr Potato Head de la pelcula. Esta
versin agreg soporte para las arquitecturas PowerPC y ARM. Con Wichert como lder del
proyecto todava, esta versin consisti en ms de 3900 paquetes binarios derivados de ms de
2600 paquetes fuentes a cargo de ms de 450 desarrolladores de Debian.

Figura 26. Debian 2.2 Potato

Debian 3.0 woody (19 de julio del 2002): El nombre por el personaje principal de la pelcula:
Woody el vaquero. An ms arquitecturas fueron agregadas en esta versin: IA-64, HP PA-RISC,
MIPS (big endian), MIPS (little endian) y S/390. Esta es tambin la primera versin que incluye
software criptogrfico debido a las restricciones para la exportacin que estaban siendo iniciadas
en EEUU, y tambin la primera en incluir KDE, ahora que los problemas de licencia con QT fueron
resueltas. Con Bdale Garbee recientemente designado como lder del proyecto, y ms de 900
desarrolladores de Debian, esta versin contena alrededor de 8500 paquetes binarios y 7 CDs
binarios en el paquete oficial (Graham Williams, 1995-2014).

Figura 27. Debian 3.0 Woody

Versiones estables de Debian

Potato: La versin potato fue estable el 15 de agosto de 2000, conto con soporte para 6
arquitecturas, incluia 3900 paquetes y se le dio soporte hasta abril de 2004.
Woody: La versin de Woody fue estable el 19 de julio de 2002, conto con soporte para 11
arquitecturas, incluia 8500 paquetes y se le dio soporte hasta agosto de 2006
Sarge: Sarge fue estable el 6 de junio de 2005, conto con soporte para 11 arquitecturas, incluia
15400 paquetes y se le dio soporte hasta octubre de 2008.
Etch: Etch fue estable el 8 de abril de 2007, conto con soporte para 11 arquitecturas, incluia
18000 paquetes y se le dio soporte hasta diciembre de 2010.
Lenny: Lenny fue estable el 14 de febrero de 2009, conto con soporte para 12 arquitecturas,
incluia 23000 paquetes y se le dio soporte hasta febrero de 2012.
Squeeze: Squeeze fue estable desde el 6 de febrero de 2011 hasta el 4 de mayo de 2013.
Conto con soporte para 9 arquitecturas, incluyo 29000 paquetes. Se le dio soporte hasta el 4
de mayo de 2014.

Wheezy: Wheezy inicio su fase estable el 4 de mayo de 2013, cuenta con soporte para 11
arquitecturas, incluye 37493 paquetes y se le ha seguido dando soporte hasta el 2015, con
actualizaciones de seguridad hasta 2016.
Jessie: Jessie inicio su fase estable el 25 de abril de 2015, incluye systemd como arranque por
defecto, a pesar de las crticas por parte de la comunidad. Ahora soporta dos nuevas
arquitecturas basadas en x64 (debian, 2016).
Todas las versiones de Debian son tomados de la pelcula Toy Story. Hasta la fecha ha habido
trece versiones estables (con sus respectivas revisiones), siendo la actual la 8.0 Jessie.
La versin testing actual se denomina Stretch.

Figura 28. Versiones estables e inestables Debian

Tabla 1. Fechas de lanzamiento de las versiones de Debian

Versin

Nombre

Freeze

Fecha

Arquitectura

en clave
1.1

s
17 de junio

Buzz

474

1996

848

1996

974

1997

~ 1500

1998

~ 2250

2000-02

~ 3900

2003-04

11

~ 8500

2006-08

11

~ 15400

2008-10

11

~ 18000

2010-12

12

~ 23000

2012-02

9+2

~ 29000

2016

11+2

~ 36000

de 1996
12 de

1.2

Paquetes Soporte

Rex

diciembre
de 1996

1.3

Bo

2.0

Hamm

2.1

Slink

2 de junio
de 1997
24 de julio
de 1998
9 de marzo
de 1999
15 de

2.2

Potato

agosto
de 2000

3.0

Woody

3.1

Sarge

4.0

Etch

19 de julio
de 2002
6 de junio
de 2005
8 de abril
de 2007
14 de

5.0

Lenny

febrero
de 2009
6 de

6.0

Squeeze

febrero de
2011

7.0

8.0

4 de mayo

Wheezy

Jessie

de 2013
5 de

25 de abril

noviembre

de 2015

de 2014
5 de
9.0

Stretch

febrero de
2017

Versiones de desarrollo

~ 43000

Los paquetes de software en desarrollo son subidos a unas ramas llamadas inestable (unstable) y
experimental. Normalmente, los paquetes de software son subidos a inestable por el desarrollador
original de la aplicacin, pero con el empaquetado y otras modificaciones especficas de Deban
introducidas por los desarrolladores.
El software que se considera inestable y no se encuentra todava listo para la rama inestable se
pone tpicamente en experimental (Wiltshire, 2015).

Los sistemas embebidos

Debian soporta una variedad de ARM basado en NAS dispositivos. El NSLU2 fue apoyado por el
instalador de Debian 4.0 y 5.0, y Martin Michlmayr est proporcionando instalacin bolas de
alquitrn desde la versin 6.0. Otros dispositivos NAS propuestos son los Buffalo Kurobox
Pro, GLAN Tank, Thecus N2100 y las estaciones de QNAP Turbo.
Los dispositivos basados en el Kirkwood sistema en un chip (SoC) son compatibles tambin, como
el SheevaPlug equipo enchufe y productos OpenRD. Se estn realizando esfuerzos para ejecutar
Debian en los dispositivos mviles, pero esto no es un objetivo en el edificio sin embargo, desde el
Debian mantenedores del ncleo de Linux no se aplican los parches necesarios. Sin embargo, hay
paquetes para sistemas con recursos limitados.
Hay esfuerzos para apoyar a Debian en los puntos de acceso inalmbricos. Debian es conocido
para ejecutarse en los decodificadores. Se est trabajando para apoyar el procesador AM335x, que
se utiliza en el punto de servicio electrnico de soluciones. Debian puede ser personalizado para
ejecutar en los cajeros automticos.
BeagleBoard, una placa computadora de hardware de cdigo abierto de bajo consumo (fabricado
por Texas Instruments) ha cambiado a Debian Linux precargado en el flash de su junta
BEAGLEBONE Negro (Debian, 2016).
Debian es un sistema operativo (SO) libre para su ordenador. Un sistema operativo es un conjunto
bsico de programas y utilidades que hacen que un ordenador funcione.
Debian usa el ncleo Linux (el ncleo es el corazn de un SO), pero la mayora de las
herramientas bsicas del SO provienen del proyecto GNU. Por lo tanto, nos referimos a Debian
como el sistema operativo Debian GNU/Linux, dando crdito a todas las fuentes. Debian
GNU/Linux proporciona mucho ms que un simple SO: incluye un amplio rango de programas.
Concretamente ofrece ms de 37.500 paquetes pre compilados distribuidos en un formato que
hace ms sencilla la instalacin en un ordenador (John Goerzen, 1999).

Figura 29. Logotipos oficiales de GNU y Linux.


Los sistemas Debian actualmente usan el ncleo de Linux o de FreeBSD. Linux es una pieza de
software creada en un principio por Linux Torvalds y desarrollada por miles de programadores a lo
largo del mundo. FreeBSD es un sistema operativo que incluye un ncleo y otro software.
Sin embargo, se est trabajando para ofrecer Debian con otros ncleos, en especial con el Hurd. El
Hurd es una coleccin de servidores que se ejecutan sobre un micro ncleo (como Mach) para
implementar las distintas funcionalidades. El Hurd es software libre producido por el proyecto GNU.
Una gran parte de las herramientas bsicas que completan el sistema operativo, vienen
del proyecto GNU; de ah los nombres: GNU/Linux, GNU/kFreeBSD, y GNU/Hurd. Estas
herramientas tambin son libres.
Desde luego, lo que la gente quiere es el software de aplicacin: herramientas que los ayuden a
realizar lo que necesiten hacer, desde editar documentos, ejecutar aplicaciones de negocios hasta
divertirse con juegos y escribir ms software. Debian viene con ms de 43000 paquetes (software
pre compilado y empaquetado en un formato amigable para una instalacin sencilla en su
mquina), un gestor de paquetes (APT), y otras utilidades que hacen posible gestionar miles de
paquetes en miles de ordenadores de manera tan fcil como instalar una sola aplicacin. Todos
ellos de forma gratuita.
Es un poco como una torre. En la base est el ncleo. Encima se encuentran todas las
herramientas bsicas. Despus est todo el software que usted ejecuta en su computadora. En la
cima de la torre se encuentra Debian organizando y encajando todo cuidadosamente para que
todo el sistema trabaje junto.
Los lenguajes de programacin de Debian (Segundo, 2013):
-

Algol 68
BASIC
C / C ++
Erlang
Fortran
GTK
Java

Objective-C, Objective-C ++
OCaml
Perl
PHP
Python
Ruby
Qt
Tcl / Tk
C#
.NET

Figura 30. Ejemplos de los lenguajes de programacin que soporta Debian.

VENTAJAS
Distribucin libre y gratuita, tanto del Sistema Operativo como de las actualizaciones del

mismo.
Es uno de los Sistemas Operativos ms estables En la actualidad.
Casi no existen los malware o virus para este Sistema Operativo.
No es necesario piratear, ni crackear nada ya que el software el gratuito.
Una de las grandes ventajas de Debian, es que posee miles de paquetes pre-compilados

estables.
Su kernel se puede configurar por cualquier persona que sepa hacerlo. (El kernel es el
ncleo del sistema operativo.) Esto podr ser til, por ejemplo, para optimizar el
funcionamiento de Linux con un procesador o CPU de una marca particular. Esto no puede
hacerse en Windows (Roland, 26 de septiembre de 2016).

DESVENTAJAS
Se necesita un previo conocimiento en Linux para poder usar con comodidad el Sistema

Operativo.
Es largo el tiempo que transcurre entre lanzamientos de versiones estables.
La instalacin es difcil para un usuario sin conocimiento en Linux.
Los dispositivos externos como pendrives, etc. tienen que ser montados por el usuario.
Resulta incmodo el uso de Debian para los usuarios de Windows, ya que Debian la
mayora de las aplicaciones se realizan a travs de la Shell de comando (McCarty, 1999).

CARACTERSTICAS

Coste: Deban es un sistema operativo (S.O.) de libre distribucin (es decir sin coste alguno).
Multiusuario: Permite a varios usuarios acceder al mismo tiempo a travs de terminales, y
distribuye los recursos disponibles entre todos.
Multiplataforma: Puede correr en la mayora de plataformas del mercado (procesadores de la
gama Intel y AMD, Motorola, Sun, Sparc, etc.).
Kernel: Los sistemas Debian actualmente usan el ncleo de Linux.
Memoria: La memoria se gestiona como un recurso unificado para los programas de usuario y
para el cach de disco, de tal forma que toda la memoria libre puede ser usada para cach y sta
puede a su vez ser reducida cuando se ejecuten grandes programas.
Licencia: Debian nace como una apuesta por separar en sus versiones el software libre del
software no libre, para esto debe respetar 4 libertades:
1- Libertad para usarlo.
2- Libertad para modificarlo.
3- Libertad para copiarlo.
4- Libertad para distribuir las modificaciones.
Estabilidad: Debian es una distribucin que ha probado su estabilidad y utilidad, muchos
desarrolladores la han tomado para crear otras nuevas como: Knoppix, Ubuntu, Sidux, etc.
Seguridad: Los problemas de seguridad se solucionan rpidamente con parches de seguridad que
se actualizan en internet.
Curva de Aprendizaje: Debian puede ser usado por cualquier persona que sepa qu es Linux,
que haya tenido un Linux instalado, que sepa configurar las cosas bsicas, que no se rinda ante las
primeras dificultades.
Facilidad de Uso: Este sistema operativo no es aconsejable para aquellas personas procedentes
de Windows, que quieren instalarse Linux porque han odo hablar muy bien de l, pero que quieren
una instalacin lo ms parecida a Windows.
Soporte: No se ofrece soporte ni garantas mercantiles en software libre. Sin embargo, podrs
contratar algunas versiones de paga de Linux de algunas empresas y recibir soporte, asistencia
tcnica y una capacitacin, dependiendo de tu pliza
Aplicaciones: No todos los programas comerciales y profesionales tienen versiones para Linux,
afortunadamente, existen muchas versiones de programas gratuitos con funciones parecidas.
Versiones: Debian toma el nombre en clave de sus distintas versiones de los personajes de la
pelcula de animacin Toy Story, del estudio Pixar.

Todos los nombres son asignados cuando se crea una nueva versin de pruebas (Testing), y se
conservan cuando sta pasa a ser estable (Stable). La nica excepcin a dicha norma es la versin
inestable (Unstable), cuyo nombre en clave es Sid de forma fija, en honor al vecino torturador de
juguetes de dicha pelcula (Krafft, 2005).

2.4 JavaScript
JavaScript es un lenguaje interpretado basado en guiones que son integrados directamente en el
cdigo HTML. El cdigo es transferido al cliente para que este lo interprete al cargar la pgina. Con
JavaScript no pueden crearse programas independientes.

Figura 31. JavaScript


La primera versin de este lenguaje apareci con el navegador Netscape 2.0 en 1995, con el
nombre original de LiveScript y soportando gran cantidad de las instrucciones que tiene en la
actualidad. La versin JavaScript 1.1 se dise con la llegada de las versiones 3.0 de los
navegadores e incorpor algunas funcionalidades nuevas como el tratamiento dinmico de
imgenes y la creacin de arrays. Es esta versin la primera que se incorpora al explorador de
Microsoft. En los navegadores 4.0 de Microsoft y Netscape se incorpor ya un intrprete para una
nueva versin del lenguaje, el JavaScript 1.2. Con esta versin se inicia un proceso de
diferenciacin en algunos aspectos de la implementacin en los dos navegadores, proceso que
culminara con el nacimiento de JScript, nombre con el que Microsoft denomina a su versin de
JavaScript.
Las principales caractersticas de este lenguaje son:

Es un lenguaje interpretado.
No necesita compilacin.
Multiplataforma.
Lenguaje de alto nivel.

Admite programacin estructurada.


Basado en objetos.
Maneja la mayora de los eventos que se pueden producir sobre la pgina web.
No se necesita ningn kit o entorno de desarrollo.

A diferencia de Java, JavaScript no dispone de elementos para crear interfaces de usuario propias
para los programas y tiene que utilizar para ello los formularios de HTML a travs de los
denominados manejadores de eventos (Cobo, 2001).

Figura 31. Ejemplo de una funcin en JavaScript

JavaScript es un lenguaje universal presente en numerosas pginas HTML, de manera


complementara a este cdigo. Gracias a JavaScript las pginas HTML son ms agradables y
disponen de muchas funcionalidades suplementarias.
Saber escribir scripts en JavaScript significa permitir a los usuarios de sus pginas HTML el acceso
a otras funcionalidades y otros servicios, mejorando de esta manera la profesionalidad de un sitio
web. Incluso recientemente, cuando un internauta escoga por primera vez un nombre de usuario,
era necesario hacer clic sobre un botn y esperar una respuesta del servidor que en ocasiones
solicitaba recomenzar el procedimiento puesto que el nombre de usuario perteneca ya a otra

persona. En cambio hoy, gracias al uso de la tecnologa AJAX, el control se realiza en un segundo
plano al mismo tiempo que el usuario complementa la ficha. Es innegable que JavaScript
contribuye mucho a la facilidad de uso de un sitio web e incrementa adems la fidelidad de usuario.

Figura 32. HTML, CSS y JS


JavaScript no es exclusivo a la red; de hecho, muchos programas del mercado como Adobe
Photoshop o Adobe Ilustrator utilizan versiones muy similares a JavaScript para la automatizacin
de muchas tareas. En cuanto a la dificultad del lenguaje, muchos son los que se muestran
recientes al anlisis de pginas HTML compuestas de JavaScript resulta un lenguaje que se
denomina fcilmente. Ms an si se ha trabajado ya con otros lenguajes de programacin como
Visual Basic o el lenguaje C, por ejemplo, incluso si es necesario de todas maneras adaptarse a
algunas particuliaridades.
Sin embargo, JavaScript no puede hacer todo. Como es un lenguaje que se ejecuta en la parte del
cliente, no puede interactuar con una base de datos de tipo MySQL o SQL, por ejemplo. Para
cumplir es necesario pasar por el uso de lenguajes tales como ASP o PHP. Otro punto importante,
JavaScript no es capaz de leer ni de escribir en el disco duro del equipo del cliente (a excepcin de
las cookies que son simples archivos de texto). No obstante, esta limitacin no es en s misma un
defecto, actuando de esa manera JavaScript se evita propagar virus de gran peligrosidad.
Otra particularidad de JavaScript es que no necesita ningn editor ni compilador en particular. Es
muy sencillo escribir scripts directamente en el cdigo fuente de la pgina HTML usando un simple
editor de texto tipo Wordpad o un editor de cdigo HTML. Sin embargo, existen editores ms
sofisticados que ofrecen muchas ventajas.

Figura 33. Ejemplo de editor de texto

Los bloques de cdigo de JavaScript pueden estar directamente presentes en el cdigo fuente de
la pgina HTML entre dos etiquetas (una de inicio y otra de fin) o escritos en un archivo JavaScript
con la extensin .js, de manera totalmente independiente del cdigo HTML de la pgina. El primer
caso se conoce como JavaScript interno en contraposicin al segundo llamado JavaScript externo.
De manera especfica, el script se redacta en un documento especial mediante un editor de texto y
se guarda sin formatear bajo la extensin .js. Si el editor no propone por defecto esta extensin,
basta con agregarla en el momento de guardar el documento. Se recomienda nombrar de manera
explcita el papel que juega su script en la pgina HTML de manera que sea ms fcil encontrarlo
en otra ocasin (Gutierrez, 2009).

2.5 jQuery Validator Engine


Motor de validacin jQuery es un plugin Javascript dirigido a la validacin de campos de
formulario en el navegador (IE 6-8, Chrome, Firefox, Safari, Opera 10). El complemento
proporciona avisos visualmente atractivos que atraen la atencin del usuario sobre el tema.

Las validaciones van desde correo electrnico, telfono y URL, hasta llamadas ms complejas
como procesamiento ajax o funciones personalizadas de JavaScript. Incluidas en muchos locales,
las indicaciones de error se pueden traducir al idioma que elijas (Jonathan Chaffer, 2013).

Figura 35. jQuery Validator Engine

2.6 Jpgraph
JpGraph es una librera PHP para crear imgenes de grficas dinmicas desde pginas PHP.
Es una librera que existe hace aos, el sistema est muy depurado y soporta multitud de
funcionalidades, por lo que seguramente encontraremos solucin a casi cualquier necesidad en el
mbito de creacin de grficas. Se pueden crear grficas lineales, grficas de barras, tartas, etc.

Adems, la mayora de las configuraciones de las grficas vienen con opciones por defecto, as
que resulta bastante sencillo obtener resultados rpidamente.

Es necesario tener conocimientos de la programacin orientada a objetos (clases) para entender el


funcionamiento de esta librera (JpGraph, 2000-2009).

Figura 36. Logo oficial de JpGraph

2.7 Datatable
Tablas de datos es una tabla de mejora de plug-in para el jQuery JavaScript Library, la adicin de
clasificacin, las capacidades de paginacin y filtrado de tablas HTML plano con un mnimo
esfuerzo. El objetivo declarado de DataTables es:

Mejorar la accesibilidad de datos en tablas HTML.


Para cumplir con este objetivo, DataTables se desarrolla con dos grupos de usuarios en mente:

Para los desarrolladores DataTables proporciona una amplia gama de opciones sobre
cmo se deben obtener, mostrar y actuar los datos, junto con una extensa API para
acceder y manipular la tabla.

Los usuarios finales. Para aquellos que utilizan la interfaz de DataTables presenta, las
acciones para obtener el mximo de la informacin contenida en las tablas, tales como
clasificacin y filtrado, junto con paginacin y desplazamiento de los datos en la tabla, son
fciles de usar, intuitiva y rpida (Ltd, 2007-2016).

Figura 37. Tabla librera Datatable

2.8 FPDF
FPDF es una clase PHP que permite generar archivos PDF con PHP puro, es decir sin usar la
librera PDFlib. F de FPDF significa Free: puede usarlo para cualquier tipo de uso y modificarlo
para adaptarlo a sus necesidades.
FPDF tiene otras ventajas: funciones de alto nivel. Aqu est una lista de sus caractersticas
principales:

Eleccin de la unidad de medida, formato de la pgina y mrgenes

Encabezado de pgina y gestin de pie de pgina

Desconexin automtica de pgina

Ruptura de lnea automtica y justificacin de texto

Soporte de imgenes (JPEG, PNG y GIF)

Colores

Enlaces

TrueType, Type1 y soporte de codificacin

compresin de pgina

FPDF no requiere extensin (excepto Zlib para habilitar la compresin y GD para soporte GIF). La
ltima versin requiere al menos PHP 5.1.
Qu idiomas puedo usar?

La clase puede producir documentos en muchos idiomas distintos a los de Europa occidental:
centroeuropeo, cirlico, griego, Bltico y tailandesa, siempre que tenga las fuentes TrueType o Type
1 con el juego de caracteres deseado. Soporte UTF-8 tambin est disponible.
Qu pasa con el rendimiento?
Por supuesto, la velocidad de generacin del documento es menor que con PDFlib. Sin embargo,
la penalizacin de rendimiento se mantiene muy razonable y se adapta a la mayora de los casos,
a menos que sus documentos sean particularmente complejos o pesados (Adobe, 2008).

Figura 38. Logo oficial de FPDF

2.9 PHP Mailer


Una clase completa de creacin y transferencia de correo electrnico para PHP.
Caractersticas de la clase

Probablemente el cdigo ms popular del mundo para enviar correo electrnico desde
PHP!

Utilizado por muchos proyectos de cdigo abierto: WordPress, Drupal, 1CRM, SugarCRM,
Yii, Joomla! y muchos ms

Soporte SMTP integrado: enviar sin un servidor de correo local

Enviar correos electrnicos con varios TO, CC, BCC y REPLY-TOs

Correo electrnico multipart / alternativo para clientes de correo que no leen correo
electrnico HTML

Compatibilidad con contenido de UTF-8 y codificaciones 8bit, base64, binarias y quotedprintable

Autenticacin SMTP con LOGIN, PLAIN, NTLM, CRAM-MD5 y mecanismos XOAUTH2 de


Google sobre los transportes SSL y TLS

Mensajes de error en 47 idiomas!

Soporte de firma DKIM y S / MIME

Compatible con PHP 5.0 y posterior

Mucho ms!

Muchos desarrolladores de PHP utilizan correo electrnico en su cdigo. La nica funcin de PHP
que soporta este es el mail() funcin. Sin embargo, no proporciona ninguna ayuda para hacer uso
de caractersticas populares como correos electrnicos y archivos adjuntos basados en HTML.

Dar formato al correo electrnico correctamente es sorprendentemente difcil. Hay innumerables


RFC superpuestas, lo que requiere la adhesin a las reglas de formato estrecho y codificacin
terriblemente complicados, la gran mayora de cdigo que encontrar en lnea que utiliza
el mail() funcin directa.

El PHP mail() la funcin normalmente enva a travs de un servidor de correo local, por lo general
liderada por un sendmailbinario en plataformas Linux, BSD y OS X, sin embargo, Windows por lo
general no incluye un servidor de correo local; La implementacin SMTP integrada de PHPMailer
permite el envo de correo electrnico en plataformas Windows sin un servidor de correo local.

Licencia
Este software se distribuye bajo la 2.1 LGPL licencia. Lea la LICENCIA para obtener informacin
sobre la disponibilidad y distribucin del software.
Historia

PHPMailer fue escrito originalmente en 2001 por Brent R. Matzelle como un proyecto
SourceForge.

Marcus Bointon (coolbru en SF) y Andy Prevost (codeworxtech) asumieron el proyecto en


2004.

Se convirti en un proyecto de incubadora de Apache en Google Code en 2010,


administrado por Jim Jagielski.

Marcus cre su tenedor en GitHub.

Jim y Marcus deciden unir sus fuerzas y utilizar GitHub como el repo cannico y oficial para
PHPMailer.

PHPMailer mueve a la organizacin PHPMailer en GitHub (phpmailer, 1999-2009).

Figura 39. Logo oficial de PHPMailer

DIAGRAMA DE CASOS DE USO


A continuacin se muestra el diagrama de casos de uso que se implementar en este proyecto:

REFERENCIAS
1. Adobe. (julio de 2008). fpdf. Obtenido de http://www.fpdf.org
2. Aguilar, L. J. (2013). Big Data, Anlisis de grandes volmenes de datos en organizaciones.
Alfaomega Grupo Editor.
3. Arias, M. (2013). Introduccin a PHP. IT Campus Academy. Recuperado el 2016

4. Borja, D. C. (2012). Tesis: Desarrollo de aplicaciones web mediante HTML5 y la base de


datos. Ecuador.
5. Cobo, A. (2001). PHP y MySQL: Tecnologas para el desarrollo de aplicaciones Web.
Ediciones Daz de Santo.
6. Debian. (5 de julio de 2016). Debian. Obtenido de https://www.debian.org/News/2009/
7. Debian. (6 de agosto de 2016). Debian. Obtenido de https://www.debian.org/doc/
8. Debian, L. (8 de agosto de 2016). Debian. Obtenido de Debian.org:
https://www.debian.org/ports/index
9. Escobar, S. M. (2013). Tesis: Uso de Base de Datos NoSQL documentales para sitios web
de alto rendimiento. Guatemala.
10. Eslava Muoz, V. (2013). El nuevo PHP paso a paso.
11. Graham Williams, T. P. (1995-2014). Gua de supervivencia de GNU Linux Desktop.
12. Graterol, Y. (2013). MongoDB en espaol Tomo 1 el principio .
13. Gutierrez, E. (2009). JavaScript: Conceptos bsicos y avanzados (bibliotecas Prototype y
Script.aculo.us). Ediciones ENI.
14. John Goerzen, O. O. (1999). Debian GNU/Linux. New Riders.

15.Jonathan Chaffer, K. S. (2013). Aprendiendo jQuery-cuarta edicion. En J.


resig. packt.
16.JpGraph. (2000-2009). JpGraph. Obtenido de
http://jpgraph.net/download/manuals/classref/index.html
17. Krafft, M. F. (2005). The Debian System: Concepts and Techniques. open source.

18.Ltd, S. (2007-2016). Datatables. Obtenido de


https://www.datatables.net/manual/index
19. McCarty, B. (1999). LEARNING DEBIAN GNU/LINUX. OReilly.
20. Minera, F. (2008). Curso de programacin PHP. USERSHOP.
21. Muoz R., P. (s.f.). MANTENIMIENTO DE PORTALES DE INFORMACION. Visin Libros.
Recuperado el 05 de Octubre de 2016
22. php. (2016). Obtenido de php: http://php.net/manual/es/history.php.php

23.phpmailer. (1999-2009). php. Obtenido de


http://phpmailer.worxware.com/

24. Roland, R. H. (6 de septiembre de 26 de septiembre de 2016). El manual del Administrador


de Debian. Creative Commons. Obtenido de https://www.debian.org/doc/manuals/projecthistory/index.es.html
25. Segundo, C. (13 de octubre de 2013). ProgrammingLanguage. Obtenido de
https://wiki.debian.org/es/ProgrammingLanguage

26. Silva, I. A. (2007). Debian GNU/Linux Para El Usuario Final. Grupo ICCO.
27. Vzquez, F. J. (2014). Anlisis y Desarrollo de MongoDB y Redis en JAVA.
28. Wiltshire, J. (5 de agosto de 2015). Debian. Obtenido de https://lists.debian.org/debiandevel-announce/2014/11/msg00003.html

También podría gustarte