Está en la página 1de 11

PERSISTENCIA DE DATOS

TRANSACCIONALES

Entrega 1

Presentado por:
Francisco Javier Tabares Arcila Cod: 1911025758
Jhon Fredy Vélez Londoño Cod: 1911023172
Raúl Edgardo Casallas Zamora Cod: 1911024589

Docente: Silva Monsalve Alexandra María

Universidad Politécnico Grancolombiano


Ingeniería diseño e innovación
Bogotá 2020
TABLA DE CONTENIDOS

OBJETIVOS........................................................................................................................... 3
Objetivo General:................................................................................................................ 3
Objetivos Específicos..........................................................................................................3
DESARROLLO....................................................................................................................... 4
1) Elaborar el Modelo Entidad Relación de Persistencia en la base de datos para un
cliente de un Banco XYZ:...................................................................................................4
2) Implantarlo en una base de datos Hsql, MySQL, PostgreSQL u Oracle-express-11g y
documentar el proceso:......................................................................................................5
3) Agregar el estado del arte de la construcción de un socket:...........................................8
REFERENCIAS.................................................................................................................... 11
OBJETIVOS

Objetivo General:
El banco XYZ requiere que se desarrolle un prototipo transaccional, para simular la
ejecución de tres transacciones a saber, una consulta, una consignación y un retiro.
Para el desarrollo del proyecto, se requiere:

Objetivos Específicos
 Hacer un modelo entidad relación sencillo del banco XYZ, con las entidades
de saldo, cliente, ciudad, país y movimientos (el propósito es académico).
 Implementar el modelo en una base de datos libre como Oracle 11g R2
Express, por ejemplo.
 Desarrollar los sockets server y cliente respectivos para hacer una
consignación (insert), un retiro (update) y una consulta (select).
 Probar las operaciones desde el socket cliente con el socket server iniciado.
DESARROLLO

1) Elaborar el Modelo Entidad Relación de Persistencia en la base


de datos para un cliente de un Banco XYZ:
Según los requerimientos elaboramos el modelo de entidad relación. Se hizo
buscando las entidades que servirían como tablas y sus respectivos atributos.
Después se establecieron las relaciones entre las distintas entidades.

Posteriormente se diseño en DB Designer, por la facilidad de ver gráficamente el


diseño, pero a la hora de implementarlo en el motor de la base de datos, creamos
manualmente las tablas y sus respectivas relaciones.
Quedando de la siguiente manera el diseño MER:

Se diseñó para que la tabla de movimientos almacene todos los movimientos de


todas las transacciones y en esa tabla quede todo el historial de las transacciones
del cliente. Las demás tablas almacenarán información de los clientes, el saldo de
cada cliente, los distintos países y ciudades de donde puedan ser los clientes.

2) Implantarlo en una base de datos Hsql, MySQL, PostgreSQL u


Oracle-express-11g y documentar el proceso:

Implementamos la base de datos en MySQL utilizando la interfaz de PHPMyAdmin.


Para establecer la conexión tenemos la siguiente información (MySQL server debe
estar corriendo para poder establecer conexión):
Después se crea la base de datos banco-xyz:

Las tablas se crean las distintas tablas según el previo diseño y se establecen como
InnoDB y collation como utf8_general_ci para que pueda almacenar caracteres con
tilde, ñ y demás.

Según el previo diseño, se establecen las llaves primarias de las respectivas tablas
y se asignan a su vez las llaves foráneas. Todo esto se realiza por medio de los
constraints. Mostraremos como queda la tabla de Ciudad en su estructura, pues ahí
se pueden observar los índices, tanto de la llave primaria (PRIMARY), como de la
llave foránea (paisId_FK):
Quedando de la siguiente manera el diseño de la base de datos, banco-xyz:
MySQL crea automáticamente un socket para la conexión y muestra los parámetros
para utilizarlo:

3) Agregar el estado del arte de la construcción de un socket:

SOCKET

Un socket es una API , que permite a una computadora comunicarse con sí misma o
con otra, siempre que estén unidas en red.
Realmente no son las computadoras las que se comunican entre sí, sino los
procesos que hay ejecutándose en ellas. Para realizar esta tarea el socket se vale
de la pila de protocolos TCP/IP.

Ya que sabemos más o menos lo que es un socket vamos a ponernos manos a la


obra para implementarlos en PHP.

Lo primero que vamos a hacer es ver en vivo cómo funciona un socket, con un
pequeño ejemplo (muy simple, sin tratamiento de errores y para un sólo cliente), y
luego vamos a explicar el código para que se entienda mejor.

Nota: Este código está pensado para ejecutarse en consola/terminal.


En este caso se están comunicando dos máquinas. Una de las máquinas es un
Kubuntu 10.10 y la otra un Backtrack 5 (Usamos ips privadas porque las máquinas
están en red LAN, si no lo estuviesen habría que usar ips publicas, nombres de
host,…). Backtrack 5 se comportará como un servidor que recibirá los mensajes de
Kubuntu 10.10

Nota: Hemos creído conveniente utilizar la estructura cliente-servidor para el


ejemplo porque consideramos que es la forma más simple para transmitir la ida de
los sockets.

Código-Cliente(Básico)
[php]
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock,’192.168.0.23′,’8000′);
socket_write($sock,"Hola",strlen("Hola"));
socket_close($sock);
echo "Fin del programa";
[/php]

Código-Servidor(Básico)
[php]
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($sock,"192.168.0.23","8000");
socket_listen($sock, 5);
$socket=socket_accept($sock);
$mensaje = socket_read($socket,4,PHP_NORMAL_READ);
socket_close($socket);
socket_close($sock);
[/php]

Recordemos que estos códigos están hechos de la manera mas básica posible, es
decir tienen carencias absolutamente en todos los aspectos. En resumidas cuentas,
si vas a utilizar sockets para algo más que trastear, JAMÁS haga un cliente-servidor
así (sin comprobaciones de errores, carentes de elementos de seguridad etc,…)

Bueno una vez comentado esto, vamos a pasar a explicar los códigos, y ver para
qué se usa cada función.

Vamos a empezar con la función principal de los sockets en PHP


[php]socket_create(int $domain , int $type , int $protocol);[/php]
Esta función es la encargada de crear un socket en PHP. Devuelve un socket por
tanto tiene que estar igualada a la variable con la que vamos a representar el
socket.
Los argumentos que recibe son los siguientes:
Dominio.

Entre los posibles dominios, están los siguiente:


AF_UNIX Familia de protocolos de comunicación local.
AF_INET Protocolos basados en Ipv4.
AF_INET6 Protocolos basados en Ipv6.

Tipo:
Es el tipo de socket que vamos a crear, como ya vimos anteriormente, vamos a usar
los sockets básicos (los más sencillos) que son:
SOCK_STREAM Proporciona flujos de bytes orientados a conexión, secuenciados,
fiables y full-duplex.
SOCK_DGRAM Socket para datagramas (no orientado a conexión, entrega no
fiable).
A parte de estos dos, existen otros dejamos aquí sus especificaciones (según el
manual oficial de PHP):
“SOCK_SEQPACKET Proporciona una ruta de transmisión de datos orientada a
conexión secuenciada, fiable, de dos direcciones para datagramas de longitud
máxima fija; se requiere un consumidor para leer un paquete entero con cada
llamada de lectura.
SOCK_RAW Proporciona acceso al protocolo de red sin formato. Este tipo especial
de socket se puede usar para construir manualmente cualquier tipo de protocolo. Un
uso común para este socket es realizar solicitudes ICMP (como ping).
SOCK_RDM Proporcional una capa de datagramas fiable que no garantiza el orden.
Lo más seguro es que esto no esté implementado en su sistema operativo.”

Protocolo:
Indica el protocolo sobre el que vamos a construir nuestro socket:

PHP soporta tres protocolos, aunque realmente en el curso solo vamos a ver los
siguientes 2:
TCP (Orientado a conexión, entrega fiable…).
UDP (No orientado a conexión, sin entrega fiable…).
Bien una vez explicada esta función, en la siguiente sesión vamos a ver qué hacen
el resto de funciones del código para finalmente comentar que va pasando en cada
línea del código en general.
REFERENCIAS

PHP. Manual PHP – Sockets. Recuperado de:


https://www.php.net/manual/es/book.sockets.php
Lázaro, D. (2018). Sockets en PHP. Recuperado de: https://diego.com.es/sockets-en-
php#:~:text=1.,emplear%2C%20se%20les%20denomina%20socket

También podría gustarte