1.1-Funcionamiento-Web by Lionel Ferro

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 15

Tecnicatura Universitaria en Desarrollo de Software

Programación 2
Módulo 1: Bases de Datos
Tema 1: Funcionamiento de la web y conceptos iniciales
1.1. Funcionamiento de la web y conceptos
iniciales
1.1.1. La web vs Internet

1.1.2. Modelo Cliente-Servidor

1.1.3. Estructura y funcionamiento de una página web

1.1.3.1. Servidor

1.1.3.1. Cliente

1.1.4. Introducción a las bases de datos

1.1.4.1. Qué es una base de datos

1.1.4.2. Comparativa con la gestión de archivos

1.1.5. Modelos de Bases de datos

1.1.6. Proveedores y Sistemas Gestores de Bases de datos


1.1.1. La web vs Internet
La web es la abreviación de World Wide Web. Y está formada por el conjunto de todas las
páginas y/o sitios web que funcionan sobre Internet. Inicialmente fue creada para
compartir archivos de texto simples. Y, aunque hasta el día de hoy la web se continúa
transfiriendo en archivos de texto, estos ahora contienen formatos, estilos y
comportamientos que permiten que las páginas web tengan una funcionalidad inmensa.

Internet es una red de computadoras que interconecta cientos de millones de dispositivos


informáticos a lo largo de todo el mundo, sobre la cual operan una multitud de servicios,
entre ellos la web. No hace demasiado tiempo, estos dispositivos eran fundamentalmente
computadoras PC de escritorio tradicionales, estaciones de trabajo Linux y los llamados
servidores que almacenaban y transmitían información tal como páginas web y mensajes de
correo electrónico. Sin embargo, cada vez más sistemas terminales no tradicionales como
televisiones, computadoras portátiles, consolas de juegos, teléfonos móviles, cámaras web,
sistemas de detección medioambientales y de automóviles y dispositivos de seguridad y
electrodomésticos están conectados a Internet.

En pocas palabras, Internet es el conjunto de redes y dispositivos que forman la


infraestructura principal sobre la cual están construidos todos los servicios online.

Para ilustrar esta diferencia, vamos a listar algunos de los muchos protocolos de aplicación
para servicios de Internet:

• SSH: (Secure Shell) protocolo que permite el acceso remoto al shell de un servidor
por medio de un canal seguro.
• FTP: (File Transfer Protocol) protocolo de transferencia de archivos.
• SMTP: (Simple Mail Transfer Protocol) protocolo para transferencia simple de
correo, para el correo electrónico.
• DNS: (Domain Name Service) Servicio de Nombres de Dominio, es un sistema de
nomenclatura jerárquico descentralizado para dispositivos conectados a redes como
Internet o una red privada.
• DHCP: (Dynamic Host Configuration Protocol) Protocolo de configuración dinámica
del Host.
• RIP: (Routing Information Protocol) Protocolo de Información de Encaminamiento,
es un protocolo de puerta de enlace interna utilizado por los routers.
• HTTP y HTTPS: (Hypertext Transfer Protocol) protocolo de transferencia de
hipertexto (seguro), usado para páginas web.
De todos estos (que solo son una pequeña parte de los existentes) solo HTTP y HTTPS son
los protocolos sobre los que se maneja la web.

1.1.2. Modelo Cliente-Servidor


Es un modelo de diseño de software en el que las tareas se reparten entre los proveedores
de recursos o servicios, llamados servidores, y los demandantes, llamados clientes.

Figura 1.1

La gran mayoría de los servicios de internet (pero no todos) siguen este modelo. Por ejemplo,
todas las plataformas web, servicios de streaming, servicios de compras, pagos, banking,
correo electrónico, videojuegos, etc.

Existen otros servicios que siguen un modelo P2P (de par a par, peer to peer) en
los que no hay una jerarquía como en el modelo cliente-servidor, sino que cada
participante o nodo es igual y entre ellos se comunican y transfieren información
directamente.

Estos modelos mencionados se pueden aplicar fácilmente sobre Internet, ya que la Internet
no es más que una red de redes de computadoras interconectadas y cualquiera puede tomar
cada rol del este modelo.

En una implementación del modelo cliente-servidor, un servidor (una computadora) pone a


disposición sus recursos en la red y los clientes (otras computadoras o software dentro de
una computadora) hacen uso de esos recursos.
Un diagrama simplificado de cómo interactúan se vería así:

Figura 1.2

Internet usualmente se diagrama como una nube. Por detrás, no es más que redes
de computadoras (y otros dispositivos) interconectadas. En esta figura, los
dispositivos en cada extremo, ya sean servidores o clientes también forman parte
de Internet.

Ejemplificando el modelo cliente-servidor para el acceso a una página web, tenemos que:

• Los clientes son dispositivos de los usuarios conectados a Internet: por ejemplo, una
computadora conectada a la red Wi-Fi o el teléfono conectado a la red de telefonía
móvil, y el software que se encuentra disponible y permite acceder a Internet en
dichos dispositivos: normalmente, un navegador web como Firefox o Chrome.

• Los servidores son computadoras que almacenan páginas web y datos. Cuando un
dispositivo cliente quiere acceder a una página web, una copia de la página web se
descarga desde el servidor al equipo cliente y se muestra en el navegador web del
usuario.
1.1.3. Estructura y funcionamiento de una página web
Ahora que sabemos cómo funciona el modelo cliente-servidor, veamos cómo se aplica este
modelo en el diseño de una página o aplicación web.

Una aplicación web se conforma de dos partes: el Frontend (lo que el usuario ve y con lo que
puede interactuar) y el Backend (lo que maneja la lógica y el acceso a datos de la
aplicación).

Cabe aclarar que, en los últimos años, con la aparición de librerías de Javascript
cada vez más complejas, se comenzó a ejecutar más de la lógica del negocio de
una aplicación del lado del cliente.

Si bien una aplicación web se almacena completamente en uno o más servidores, la


ejecución de la aplicación también se divide en dos, siguiendo el modelo cliente-servidor.
El Backend se ejecuta únicamente en el/los servidores, y el Frontend se ejecuta y/o
renderiza solo en el cliente (el navegador web).

En el siguiente diagrama podemos ver de qué lado (cliente o servidor) se ejecuta cada parte
de una aplicación web.

Figura 1.3

En este diagrama vemos que el Frontend se ejecuta íntegramente en el cliente (el navegador
web) y el Backend en el servidor. El servidor, es una o más computadoras (o máquina virtual
corriendo dentro de una computadora) en las que se ejecutan servicios o daemons de
sistema operativo y aplicaciones. Entre ellos, los más importantes para nosotros, el servidor
web, la base de datos y una o más aplicaciones web.
1.1.3.1. Servidor

Servidor web

Un servidor web o webserver, es el software que se ejecuta dentro de una computadora que
permite la comunicación de la aplicación con los clientes. Su propósito es escuchar
cualquier intento de comunicación de los clientes, recibir las peticiones o requests de los
mismos, llamar a la aplicación correspondiente para que ejecute lo solicitado y devolver la
respuesta o response que le transmita la aplicación.

Algunos de los webservers más usados de la industria son Apache, nginx y Microsoft
Internet Information Services. En esta materia vamos a usar un pequeño webserver de
desarrollo que viene incluido al instalar Flask, llamado Werkzeug. Su finalidad es ser usado
para desarrollo y no está recomendado su uso en producción, o sea, para un despliegue real.

Se le llama producción (production o live) al entorno en donde se ejecuta una


aplicación que está disponible para los usuarios finales. A diferencia de desarrollo
(development), que es el entorno en donde un desarrollador construye y prueba
una aplicación, normalmente se encuentra en su propia computadora y el usuario
final no tiene acceso a él. Dependiendo de la envergadura del proyecto de
desarrollo también puede existir otro entorno intermedio entre los dos antes
mencionados, llamado testing o stage. Testing o stage es técnicamente igual a
producción, pero los usuarios finales no tienen acceso, sino que puede ser usado
para pruebas previas al despliegue o para mostrarle al cliente el estado del
desarrollo de su aplicación.

Aplicación web

La aplicación web es el software que los desarrolladores crean y se encuentra junto al


servidor web. Es la encargada de satisfacer las solicitudes del cliente que le llegan a través
del servidor web.

Si se está sirviendo una página web estática, esta puede ser devuelta inmediatamente al
cliente ya que no se debe ejecutar ningún proceso.

Una página web estática se devuelve tal y como está almacenada. O sea, muestra
la misma información para todos los usuarios, de todos los contextos. Por ejemplo,
landing pages para alguna organización o compañía, páginas de portfolios
profesionales, las páginas de almacenamiento de documentos como leyes,
boletines oficiales, etc.
Si la página es dinámica, usualmente se van a ejecutar procesos para generar
dinámicamente la página o contenido que se va a devolver, esto incluye la obtención de
datos de la base de datos.

Una página web dinámica se caracteriza por ser generada al momento que se la
solicita, y su contenido depende de ciertos parámetros contextuales. Por ejemplo,
todas las aplicaciones con usuarios, como plataformas educativas, páginas de
redes sociales, etc. En estas aplicaciones una misma página o dirección web
mostrará contenidos distintos dependiendo de qué usuario inició sesión.

Base de datos

Por otro lado, la base de datos también está comprendida en el ámbito del servidor. Esta
almacena y pone a disposición de la aplicación web los datos necesarios para su
funcionamiento. En la Figura 1.3 se muestra a la base de datos dentro de un mismo servidor,
pero en la vida real la base de datos puede encontrarse en otro servidor, distinto al del resto
de la aplicación. De hecho, una aplicación puede hacer uso de más de una base de datos, las
cuales pueden estar en lugares físicos distintos.

1.1.3.1. Cliente
El cliente es el software que se ejecuta dentro de un dispositivo terminal (PC, teléfono
móvil, smart tv, etc.) que permite el acceso a la web a través de Internet, por ejemplo, un
navegador web como Firefox o Chrome. También se consideran clientes a las aplicaciones
que acceden a servicios de Internet como Netflix, YouTube, etc.

Los navegadores web permiten al usuario acceder y solicitar páginas web a un servidor web.
A su vez, el servidor web le va a dar una respuesta a su solicitud, junto con un código de
respuesta. Si la página no se encontró va a devolver el código 404. Si sí se encontró,
devuelve el contenido de la página (en texto) y el código 200. Estos códigos se llaman
códigos de estado de respuesta, y los estudiaremos en detalle más adelante.

Una vez que el navegador recibe el contenido, en forma de texto, debe renderizarlo (generar
una representación gráfica de la página). El texto usualmente es un documento HTML junto
con contenido o enlaces a otros archivos de texto asociados como CSS y Javascript. HTML
contiene la estructura y organización de una página web, mientras que con CSS y Javascript
se da un estilo visual y funcionalidad a la página, respectivamente. Vamos a profundizar
sobre este tema en el siguiente módulo.
1.1.4. Introducción a las bases de datos
Habiendo visto y entendido el diagrama de la Figura 1.3, vamos a comenzar a estudiar una
de las partes esenciales del Backend (y prácticamente de todas las ramas del desarrollo de
software), las bases de datos.

Si bien, desde nuestro punto de vista, las bases de datos forman parte del desarrollo web,
debemos recordar que las bases de datos no solo se aplican a este, sino que son
ampliamente usadas en la mayoría de las organizaciones, ya sean empresas, universidades,
hospitales, etc. Y forman parte de la gran mayoría de las aplicaciones en general, sin
importar su plataforma (web, desktop, móviles, etc.) ni su categoría (productividad, redes
sociales, juegos, educativas, etc.).

El manejo o gestión de las bases de datos inclusive tiene su propia rama y su propio perfil
profesional dentro del IT, la del DBA (Administrador de Bases de Datos).

1.1.4.1. Qué es una base de datos


Una base de datos es una recopilación organizada de información o datos estructurados
conectados entre sí en una unidad lógica, que normalmente se almacena de forma
electrónica en un sistema informático.

Normalmente, una base de datos es manejada por un SGBD o Sistema de Gestión de Bases
de Datos (del inglés: Data Base Management System o DBMS) también llamado Motor de
Bases de Datos (Database Engine). Este software permite el acceso y manejo de los datos
almacenados a través de un sistema de usuarios y permisos. Siempre que trabajemos con
una base de datos, será usando un SGBD.

Figura 1.4
Si bien en la figura 1.4 se muestra al usuario como una persona, un usuario también puede
ser un sistema. Normalmente solo un DBA accede e interactúa directamente con el SGBD.
Todos los demás usuarios acceden a través de algún sistema creado para ese fin, incluidas
las aplicaciones.

También podemos ver que para interactuar con un SGDB debemos usar un lenguaje
especial, el SQL (Structured Query Language). Estudiaremos este lenguaje en próximos
temas.

1.1.4.2. Comparativa con la gestión de archivos


La diferencia clave entre el sistema de archivos y la base de datos es que el sistema de
archivos administra solo el acceso físico, mientras que la base de datos administra el acceso
físico y lógico a los datos.

Una base de datos está diseñada para organizar, almacenar y recuperar fácilmente grandes
cantidades de datos, restringiendo el acceso, solo a usuarios registrados en el SGBD.

Ventajas de la base de datos


• Control sobre la redundancia de datos. Los sistemas de archivos pueden almacenar
varias copias de los mismos datos en archivos distintos. Las bases de datos
relacionales funcionan manteniendo al mínimo la redundancia de datos, un dato
debe encontrarse solamente en un solo lugar. Si ese dato se repite debe ser por una
razón específica y explícita.
• Control sobre el acceso a los datos. Los SGBD gestionan quién, cómo y desde donde
se dará el acceso a los datos por parte de un usuario. A diferencia de un sistema de
archivos, en donde el acceso queda relegado a discreción de sistema operativo y su
sistema de permisos.
• Seguridad. Los SGBD se ejecutan sobre el sistema operativo como servicios (se
ejecutan continuamente) y solo sus usuarios registrados pueden acceder. Esto
también incluye los accesos remotos a las bases de datos, cosa que, de
implementarse en el sistema de archivos, para usuarios del sistema operativo, trae
aparejado un riesgo de seguridad.
• Facilidad para la replicación (duplicación o copia) de los datos. Si queremos replicar
una base de datos para una instalación o para levantar un respaldo ( backup), los
SGBD incorporan las herramientas necesarias para hacerlo. Si se trabaja con
archivos, habrá que copiar manualmente los archivos.
1.1.5. Modelos de Bases de datos
Existen diferentes Modelos Conceptuales de Bases de datos, con características distintas
que las hacen más o menos adecuadas para ciertos usos. Vamos a mencionar los dos más
usados.

• Relacionales: El modelo relacional es el más usado en la actualidad, por amplio


margen. Se caracteriza por estructurar los datos en tablas con campos como
columnas y registros únicos como filas, y gestionar relaciones entre ellas.
Estas relaciones permiten un almacenamiento organizado y eficiente, y a la vez, la
obtención de datos entrecruzando información de cada tabla de interés usando SQL,
el cual es un lenguaje relacional. Ejemplos de bases de datos relacionales pueden
ser: MySQL, Oracle Database, PostgreSQL, etc.

• No relacionales o NoSQL: Una base de datos no relacional es aquella que no usa el


esquema tabular de filas y columnas que se encuentra en la mayoría de los sistemas
de base de datos más tradicionales. En su lugar, las bases de datos no relacionales
usan un modelo de almacenamiento que está optimizado para los requisitos
específicos del tipo de datos que se almacena. Por ejemplo, los datos se pueden
almacenar como pares clave/valor simple (Redis), como documentos JSON
(MongoDB) o como un grafo que consta de bordes y vértices (Neo4j).

Lo que todos estos almacenes de datos tienen en común es que no utilizan un modelo
relacional. Además, tienden a ser más específicos en el tipo de datos que admiten y
en cómo se pueden consultar los datos. El término NoSQL hace referencia a
almacenes de datos que no usan solo SQL para las consultas (not only SQL). En su
lugar, estos almacenes de datos usan otros lenguajes de programación y otras
construcciones para consultar los datos. En la práctica, “NoSQL” se puede
interpretar como “base de datos no relacional”, aunque muchas de estas bases de
datos admiten consultas compatibles con SQL.

En los últimos 10 años, bases de datos que hacen uso de estos modelos, han
aparecido y han demostrado una gran eficacia por su gran escalabilidad, flexibilidad
y su carácter descentralizado.

Existen otros modelos, como el Modelo Orientado a Objetos o el Modelo de Red, pero no
vamos a ahondar en ellos ya que no son muy usados en la actualidad.
1.1.6. Proveedores y Sistemas Gestores de Bases de datos
Comúnmente las bases de datos y los SGBD se perciben como la misma entidad debido a
que, como dijimos, siempre accedemos a los datos a través del SGBD. Además de esto, cada
proveedor desarrolla su SGBD para trabajar con su implementación de base de datos. Por
ejemplo, el SGBD PostgreSQL solo funciona para manejar bases de datos PostgreSQL y no
bases de datos MySQL. Sin embargo, debemos tener el claro que son dos cosas distintas. El
SGBD es la interfaz que permite al usuario manejar los datos almacenados (la base de
datos), como se ilustra en el diagrama anterior.

Como se deja entrever del párrafo anterior, cada proveedor implementa sus bases de datos
y sistemas de manera independiente y para el usuario no es aparente (ni debe serlo) cómo
se almacenan los datos internamente.

Por otro lado, sí es común para todos, la forma en que el usuario interactúa con una base de
datos. Esto se hace utilizando el lenguaje SQL (del inglés Structured Query Language,
Lenguaje de Consulta Estructurada). Este lenguaje es común para todos los SGBD (con
algunas pequeñas diferencias) y sirve para realizar cualquier operación con la base de datos.

A continuación, vamos a nombrar algunas de los SGBD más usados de la industria y explicar
un poco de cada uno.

• Oracle Database: Producida por la Corporación Oracle, que es el principal proveedor


de soluciones de bases de datos empresariales en el mundo. Oracle Database es un
SGBD comercial multi-plataforma y multi-modelo (ya que soporta principalmente
el modelo relacional, pero también soporta NoSQL).
• MySQL: Es el SGBD libre y de código abierto más usado para el desarrollo con bases
de datos Relacionales. Al ser adquirido por Oracle en 2010 se ofrece con distintos
tipos de licencias libres y privativas. Soporta multiples plataformas.
• MariaDB: es un fork o bifurcación de MySQL creado en 2010 con la promesa de
mantenerse libre y de código abierto, después de que MySQL fuera adquirido por
Oracle. Es desarrollado y mantenido por la comunidad del open source. Mantiene
compatibilidad directa con MySQL y se puede usar en reemplazo de este.
• PostgreSQL: También conocido simplemente como Postgres, es un SGBD libre y de
código abierto, multi-plataforma, que soporta principalmente el modelo Relacional.
Le sigue a MySQL en popularidad y se caracteriza por su uso en sistemas que
requieren la ejecución de consultas complejas o data warehousing y análisis de
datos.
• MS SQL Sever: Producida por Microsoft, compite por el segundo lugar (con IBM) en
el mercado de los SGBD comerciales. Soporta principalmente el modelo Relacional
y se ofrece en productos empresariales para producción (local y en la nube) y para
desarrollo (gratis mientras que no se use para producción). Soporta Windows y Linux.
• MongoDB: es un SGBD NoSQL orientado a documentos de código disponible.
MongoDB utiliza un esquema de documentos con una sintaxis similar a JSON para
almacenar datos no estructurados.
• Redis: Es un SGBD en memoria, basado en el almacenamiento de datos en
estructuras de clave/valor. Es comúnmente usado como cache o broker de mensajes.
Es de código abierto y soporta sistemas operativos tipo UNIX.
• SQLite: Es un SGBD cuyo código está en el dominio público. Utiliza el modelo
relacional y se caracteriza por almacenar la base de datos en un archivo. SQLite no
es un servicio del sistema operativo como la gran mayoría de los SGBD, sino que se
ejecuta como parte del programa que utiliza la base de datos.
Bibliografía
1. Developer Mozilla - Como funciona la web.
2. Cliente-servidor. Wikipedia..
3. Redes de Computadoras 5ta Edición - Kurose, Ross.
4. https://learn.microsoft.com/es-es/azure/architecture/data-guide/big-data/non-
relational-data
5. https://es.strephonsays.com/filesystem-and-vs-database-2810
6. https://db-engines.com/en/ranking
7. https://sqlite.org/index.html
8. https://www.mongodb.com/
9. https://www.postgresql.org/
10. https://www.mysql.com/
11. https://redis.io/
12. https://www.oracle.com/database/
13. https://www.microsoft.com/en-us/sql-server/

También podría gustarte