Sunteți pe pagina 1din 24

Instituto Tecnolgico de Morelia

Jos Mara Morelos y Pavn



Ing. Tecnologas de la Informacin y Comunicaciones

Bases de Datos Distribuidas

Propuesta de Proyecto
Gears of Technology

Presentado por:
Jorge Alberto Pitacua Prez
Sergio Al Bejarano Hernndez
Emmanuel Guzmn Lpez

Profesor:
Salvador Joanathan Villagmez Crdenas


05 de junio de 2014

1
Captulo 1: Objetivos de las Bases de Datos Distribuidas
1. Autonoma local: Las bases de datos establecidas en los sitios ubicados trabajaran de
forma independiente ya que cada una trabajara con los usuarios dependiendo a la
regin donde se encuentre.
2. No dependencia de ningn sitio central: Las BDD al momento de hacer alguna
consulta se podr llevar a cabo desde el sitio donde se encuentre para poder adquirir
la informacin solicitada.
3. Operacin continua: Si un sitio llegara a caer por cualquier motivo las dems BDD
seguirn operando mientras se levanta el sistema que haya fallado no obstruyendo a
los dems sitios.
4. Independencia con respecto a la localizacin: No ser aplicado, ya que al distribuir el
videojuego por idioma, los usuarios sabrn que la informacin se encuentra en su
misma regin.
5. Independencia con respecto a la fragmentacin: La informacin ser fragmentada
solamente en el rea donde solamente se necesita ,los datos estarn almacenados en
la ubicacin donde son usados ms frecuentemente para que la mayora de las
operaciones sean locales y se reduzca trfico en la red.
6. Independencia a replicas: Sera aplicado pero solo para la informacin de los usuarios
del videojuego, pero no para el videojuego en s.
7. Independencia de equipo: El SGBDD tendr la capacidad de ejecutarse en diferentes
plataformas.
8. Optimizacin en el procesamiento distribuido de consultas: Ser aplicado ya que se
requieren consultas como el score o puntaje mundial, acceso a cuenta o login, etc.
9. Manejo de transacciones distribuidas: Ser aplicado para las transacciones que
involucren la comunicacin con varios sitios, tales como: actualizacin de puntaje
mundial, cambio de servidor, etc.
10. Independencia con respecto al sistema operativo: El SMBD ser capaz de ejecutarse
en varias plataformas, para as poder presentar al usuario una misma imagen del
sistema.
11. Independencia con respecto a la red: Podr ser ejecutada desde cualquier tipo de red
siempre y cuando esta se encuentre conectada.
12. Independencia respecto al DBMS: Para este proyecto, no ser aplicable, ya que en
cada nodo o host se usar el mismo SGBDD.
Captulo 2: Caso de Negocio
1. Antecedentes
La industria de los videojuegos ha venido creciendo y expandindose de una manera significativa
tanto en la tecnologa y el software que usan para desarrollarse, as como en el mercado que han
logrado atraer a la misma. Hoy en da vemos que los videojuegos han llegado a casi toda la
sociedad, ya que se desarrollan videojuegos de estrategia, los llamados shoot em up, los RPG y
hasta para hacer ejercicio. Pero muchos de estos vienen con un alto costo para adquirirlos, ya sea
desde consolas dedicadas a videojuegos, o incluso en las PC. En ocasiones para poder disfrutar los
juegos en lnea se requiere una suscripcin de paga mensual o anual para poder tener acceso al

2
mismo, y todava se requiere ms dinero para obtener elementos o accesorios nuevos dentro del
juego.
En la actualidad se puede apreciar que la popularidad de los videojuegos en lnea gratuitos o Free
to Play est creciendo, de manera que cada da son ms y ms los usuarios que se unen a este tipo
de videojuegos, ya que les ofrece todo el contenido del videojuego sin tener que pagar un solo
centavo, pero entonces cmo es que los propietarios de estos videojuegos se mantienen sin
tener que estar cobrando una cuota a cada jugador? Muy fcil, lo nico que se les vende a los
jugadores son los accesorios o elementos utilizados dentro del juego, y con los cuales se les brinda
una mayor experiencia, como por ejemplo: los skins o trajes son una manera de personalizar al
personaje(s) con el que cuenta cada jugador, otro ejemplo vienen siendo armas o poderes que le
permiten al usuario tener otro tipo de experiencia dentro del juego.
Tambin desde hace tiempo en la industria de los videojuegos se ha venido implementando la
opcin de tener servidores dedicados a cada regin, esto con el objetivo de brindarles a los
usuarios una mejor experiencia, ya que en cada servidor estn alojados solo usuarios que hablen o
dominen el mismo idioma, y de esta manera se evitan problemas de comunicacin entre usuarios
lo cual al final del da se traduce en una satisfaccin por parte de lo ms importante: el cliente o
comnmente llamado gamer.
2. Problemtica
En muchas ocasiones se presenta un problema en los videojuegos que involucran algn tipo de
actividad en lnea, o que requieren una comunicacin ms directa entre los jugadores, la cual es
que en ciertas sesiones de juego o partidas se encuentran jugadores que no dominan el mismo
idioma, y por lo tanto se traduce en una mala experiencia en cada jugador.
3. Solucin
Se desarrollara un proyecto con duracin de 1 ao para dar solucin a la problemtica, la cual se
manejara que cada jugador al momento de estar realizando el registro en el videojuego se le
pregunte que idiomas domina as como el pas donde vive, para de esta manera darle a elegir
algunos servidores donde los dems usuarios hablen ese mismo idioma y de esta manera evitar
problemas de comunicacin dentro del juego y as poder darles una experiencia de juego mucho
mejor.
Adems la adquisicin del juego ser de manera gratuita para as tratar de llegar a ms jugadores
que estn dispuestos a probar el videojuego, y lo nico que se pondr a la venta son accesorios
que se pueden utilizar dentro del mismo y de esta manera obtener un ingreso para seguir dando
un mejor servicio. Tambin se podr aplicar publicidad acerca de videojuegos de otras compaas
y as mismo aumentar el ingreso y recuperar lo invertido.
4. Solucin Tcnica
Para poder desarrollar la solucin se requiere que cada uno de los sitios o nodos acten de
manera independiente, es decir, que cada servidor trabaje solo con usuarios que dominen un
mismo idioma y que ninguno de estos sitios tengan dependencia de un sitio en comn o central,
as como la operacin continua sin interrupciones de cada servidor. Un aspecto que no se podr

3
cubrir en su totalidad es acerca de la confidencialidad de la ubicacin de los datos, ya que al
distribuir los mismos por idioma, los usuarios tendrn idea acerca de la regin en que se encuentra
la informacin, aunque no con total certeza.
Otro aspecto importante es la fragmentacin de los datos, ya que es fundamental que cada
servidor trabaje con informacin que sea utilizada de manera local, es decir, que no se requiera la
comunicacin con otros sitios y de esta manera evitar tanto trfico en la red, as mismo se
manejarn transacciones distribuidas junto con su respectiva optimizacin en sus consultas para
tambin ayudar a que el trfico en la red sea el mnimo posible. Tambin se usarn las rplicas que
contengan la informacin de usuarios ms no del videojuego, estas rplicas sern realizadas por el
SGBDD el cual ser igual para cada servidor o host.
Por ultimo cabe destacar que el SGBDD tendr la capacidad de ejecutarse en diferentes
plataformas de hardware y software, as como en cualquier tipo de red.
5. Anlisis Financiero
Para poder llevar a cabo el proyecto de distribucin, se requieren una serie de recursos tales
como: compra de bienes para que el host funcione de manera correcta.
Necesidad Descripcin Costo Unitario Costo Total
1
Software
(Licencias)
Se requiere el uso de un
sistema que administre
las bases de datos en cada
nodo, en este caso el
Oracle Database
Enterprise Edition, con
licencia por usuario (3).
$USD 13, 685.00 $USD 41,055.00
2
Servicio de
Redes
Se necesita una correcta
instalacin de las redes,
para que se puedan
comunicar de un host a
otro.
$USD 880,000.00
3
Compra de
Servidores
Comprar los servidores
adecuados para el
videojuego, en este caso
30 servidores, de 64 slots
cada uno.
$USD1,634.00 $USD 49,020.00
4
Instalacin de
Servidores
Se necesita el servicio de
la instalacin de los
servidores para que
funcionen correctamente.
$USD 120,000.00
5
Bienes
Se requieren ciertos
bienes para el
funcionamiento del host o
nodo.
$USD 320,000.00

4
Costo Total de Proyecto:
$USD
1,410,075.00
Costos Fijos
1
Mantenimiento
de Servidores
Se requiere el
mantenimiento cada mes
para que el servicio siga
funcionando.
$USD 1,000.00 $USD 24,000.00
Recuperacin
1
Venta de
Accesorios
Se requiere recuperar la
cantidad de dinero
invertida para el proyecto,
obtenindolo a lo largo de
2 aos despus del
trmino del proyecto.
$USD 80,000.00
$USD
1,920,000.00
2
Publicidad
A travs del juego, se
incluir publicidad de
juegos de otras
compaas.
$USD 1,500.00
(Costo por mes)
$USD 36,000.00

Total de Recuperacin en Bruto:
$USD
1,956,000.00
Total de Recuperacin:
$USD
1,932,000.00
Total de Ganancia en 2 aos: $USD 521,925.00

6. Anlisis de Riesgo
Los criterios o variables, junto con sus escalas de valoracin utilizados para establecer la clase de
riesgo son:
Criterio de funcin (F): Se valoran las consecuencias negativas o daos que pueden
alterar o afectar de forma diferente la actividad normal del edificio.
o Muy gravemente: 5
o Gravemente: 4
o Medianamente: 3
o Levemente: 2
o Muy levemente: 1
Criterio de sustitucin (S): Referido al grado de dificultad para sustituir los bienes.
o Mu difcilmente: 5
o Difcilmente: 4
o Sin muchas dificultades: 3
o Fcilmente: 2
o Muy fcilmente: 1
Criterio de profundidad (P): Se valora la perturbacin y los efectos psicolgicos que se
pueden producir en la propia imagen del Grupo y en las empresas ubicadas en el edificio.

5
o Perturbaciones muy graves: 5
o Graves perturbaciones: 4
o Perturbaciones limitadas: 3
o Perturbaciones leves: 2
o Perturbaciones muy leves: 1
Criterio de extensin (E): Referido al alcance que los daos o prdidas pueden causar.
o De carcter internacional: 5
o De carcter nacional: 4
o De carcter regional: 3
o De carcter local: 2
o De carcter individual: 1
Criterio de agresin (A): Se valora la probabilidad de que el riesgo se manifiesta.
o Muy alta: 5
o Alta: 4
o Normal: 3
o Baja: 2
o Muy baja: 1
Criterio de vulnerabilidad (V): Se valora la probabilidad de que se produzcan daos si el
riesgo se manifiesta.
o Muy alta: 5
o Alta: 4
o Normal: 3
o Baja: 2
o Muy baja: 1
La clasificacin del riesgo se da respecto a la siguiente tabla:
Valor ER Clase de Riesgo
1-200 Bajo
201-600 Mediano
A partir de 601 Alto

Riesgo Anlisis Riesgo Evaluacin Riesgo
Calculo de
Clase de
Riesgo

I D C PR ER


F S P E A V FxS PxE I+D AxV C*PR

Trfico Intenso de
Datos
4 4 3 1 1 3 16 3 19 3 6 Bajo
Falla en Login de
Usuarios
2 4 2 2 2 2 8 4 10 4 16 Bajo
Cada de servidores

5 4 5 3 2 4 20 15 24 8 120 Bajo
Cada de redes de
comunicacin
5 5 5 4 1 4 25 20 29 4 80 Bajo

6
Robo de servidores 3 4 4 5 1 5 12 20 17 5 100 Bajo
Robo de Informacin
de Usuarios
4 3 4 4 2 4 12 16 16 8 128 Bajo
Manipulacin Ilcita
de Datos
2 3 4 2 2 4 6 8 10 8 64 Bajo
Intrusin de usuarios
no permitidos
3 3 4 1 2 4 9 4 13 8 32 Bajo
Actividades: en caso de presentarse algn riesgo, las siguientes actividades se llevarn a cabo:
Trfico Intenso de Datos Realizar una inspeccin de las redes de comunicacin, as
como en los servidores donde se lleve a cabo el problema,
para de ah saber concretamente la falla y corregirla.
En caso de tratarse de los servidores se deber realizar un
mantenimiento correctivo para resolver errores del
mismo.
Falla en Login de Usuarios Contactar a Soporte Tcnico para que atienda en lnea a
cada uno de los usuarios afectados.
Cada de servidores Analizar cada servidor para determinar que falla ocasion
la cada del sistema, en el peor de los casos se deber
sustituir el servidor por uno nuevo.
Cada de redes de comunicacin Contactar al departamento correspondiente para que
realice una inspeccin en las comunicaciones de los sitios
y determine la causa y respuesta.
Robo de servidores Realizar una inspeccin en cmaras de seguridad del sitio
donde se suscit el robo, as como contactar a la
correspondiente autoridad policial del lugar.
Robo de Informacin de Usuarios Contactar al departamento de Seguridad para que
investigue el robo de informacin, as mismo establecer la
comunicacin con los usuarios afectados.
Manipulacin Ilcita de Datos Contactar al departamento de Seguridad para que
investigue la manipulacin de los datos, y realice un
retroceso en los cambios realizados de manera ilegal.
Intrusin de usuarios no permitidos Contactar al departamento de Seguridad para que
investigue y corrija el error en el sistema de seguridad.

7. RoadMap y Cronograma
RoadMap Estratgico

Mision:
Proveer sistemas de distribucin eficientes para videojuegos online.
Vision:
Ser el N 1 en proveedor de sistemas de distribucin especializados en
videojuegos.

7
Enero-Marzo Abril-Junio Julio-Diciembre
Objetivos Estratgicos Planificacin acorde
al Proyecto
Diseo acorde al
Proyecto
Implementacin
acorde al Diseo
Pilares:
Comunicacin Comunicacin entre
el equipo de trabajo
Comunicacin con el
cliente u organizacin
Correcta
comunicacin con el
rea de diseo
Conocimiento Difusin del Plan de
Trabajo
Definir
requerimientos con el
cliente u organizacin
Definir lo que se
implementar
Productividad Respetar tiempos
de actividades
Elaborar un correcto
diseo del sistema
Terminar el sistema
acorde al tiempo
establecido
Proyectos Planificacin Anlisis y Diseo Implementacin

Cronograma
Enero-Marzo Abril-Junio Julio-Diciembre
Meses
Proyecto/Actividades 1 2 3 4 5 6 7 8 9 10 11 12
Proyecto: Planeacin X
Obtener la informacin
acerca del sistema.
X
Analizar la posibilidad de
desarrollo
X X
Determinar la inversin y
costo del sistema
X
Definir tiempos de la
implementacin
X X
Firma del contrato legal X

Proyecto: Anlisis y
Diseo
X
Toma y anlisis de
requerimientos
X
Diseo de diagramas X X
Diseo de diccionario de
datos
X X

Proyecto:
Implementacin/desarro
llo
X
Compra de Servidores X
Compra del SGBD X
Instalacin de Redes X X X
Instalacin de Servidores X X
Instalacin y
Configuracin del SMGBD
X

8
Instalacin de bienes en
cada uno de los host
X
Prueba del sistema X X
Validacin del Sistema X X

Jorge Alberto Pitacua Prez: Encargado del rea de planeacin.
Esta persona estar coordinando todas las actividades que tengan que ver con la
direccin y coordinacin del plan para el proyecto, as como establecer si el proyecto es
viable o no.
Emmanuel Guzmn Lpez: Encargado del rea de Anlisis y Diseo.
Estar encargado de establecer la correcta comunicacin con el cliente u organizacin,
para poder llevar a buen trmino la toma de requerimientos y por ende una buena
definicin de lo que se quiere llegar con el sistema de distribucin.
Sergio Al Bejarano Hernndez: Encargado del rea de implementacin o desarrollo.
Encargado de llevar a buen trmino las actividades necesarias para que el sistema
distribuido funcione correctamente, as como los servidores y las redes de comunicacin.
Futuro del Proyecto
Se espera que despus de dar por concluido el proyecto y tambin de haber recuperado la
inversin, la siguiente etapa sea de expansin y evolucin del videojuego, es decir, implementar
ms servidores en distintas regiones, as como soportar ms idiomas e integrar nuevos elementos
dentro del juego para as seguir cumpliendo con nuestra visin y misin como empresa dedicada a
la distribucin de videojuegos online y lo ms importante: proveer una experiencia confortante a
la hora de interactuar con otros jugadores.
Propuesta de Diseo
1. Diagrama de Contexto



9
2. Diagrama Entidad Relacin

3. Criterios de Seleccin de SMBD
Algunos de los criterios para seleccionar el SMBD, son los siguientes:
Soporte: Se requiere un buen soporte por parte del propietario del SMBD, ya que en
caso de presentar alguna falla se necesita que alguien pueda orientar con
informacin acerca del problema, y de ser posible la solucin.
Base Instalada: Sera prudente que al elegir el SMBD sea de una organizacin que
tenga una experiencia y conocimiento en el campo de bases de datos.
Calidad: Se requiere calidad respecto al rendimiento y consumo de recursos del
SMBD, ya que se requiere eficiencia en el procesamiento de la maquina donde se
instale.
Multiplataforma: Se requiere que el SMBD pueda operar en distintos tipos de
hardware y software.

4. Eleccin del SMBD
SGBD Ventajas Desventajas
SQL Server
Viene en varias versiones o
paquetes segn la preferencia
del cliente.
Mejor utilizacin de la CPU.
Menor necesidad de limpieza de
las memorias intermedias
durante el procesamiento de las
transacciones.
Tiene soporte solo con el sistema
operativo Windows.
Tiene lmite de conexiones
simultneas.
Utiliza una enorme cantidad de
RAM.
Si se desea para prcticas no ser
til porque en l se prohben muchas
cosas.
MySQL
Tiene soporte para varios
sistemas operativos.
La funcin de conversin CAST() no
soporta la conversin a REAL o

10
No tiene lmite de conexiones
simultneas.
Integracin perfecta con el
lenguaje PHP.
Gran portabilidad entre distintos
sistemas o plataformas.
BIGINT.
El soporte para disparadores es
bsico por lo que hay ciertas
limitaciones en lo que pueda hacerse
con ellos.
Debe usarse explcitamente un
comando REVOKE para quitar
privilegios de una tabla.
Oracle
Es el motor de base de datos
relacional ms usado a nivel
mundial.
Un aceptable soporte.
El software del servidor puede
ejecutarse en multitud de
sistemas operativos.
El mayor inconveniente de Oracle es
quizs su precio.
Tambin es elevado el coste de la
formacin.
PostgreSQL
Posee manejo y control de
transacciones para asegurar la
consistencia de los datos.
Puede operar sobre distintas
plataformas incluyendo Linux,
Unix, MacOSX, Solaris y
Windows.
Es demasiado lento
Consume bastantes recursos por lo
que se necesita mayores
caractersticas de hardware para
ejecutarlo.
El motor MyISAM es instalado por
defecto y carece de capacidades de
integridad relacional.

Se ha elegido como Sistema Manejador de Bases de Datos, al producto Oracle Database 12c
Enterprise Edition, ya que al pertenecer a la empresa Oracle y ser de paga, nos provee un
soporte de calidad. Otro aspecto a favor es la experiencia que tiene la misma empresa Oracle en
el campo de las bases de datos, ya que tiene alrededor de 30 aos en el mercado ofreciendo
software y herramientas de calidad. Tambin cabe destacar que entre otros SMBD este cuenta
con un buen rendimiento en los recursos que utiliza, adems de las transacciones y operaciones.
5. Diagrama Relacional

11

6. Diccionario de Datos v1.0
Usuario
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id Integer



Identificador nico para el jugador o usuario.
Usuario Varchar(20)
Nombre o alias que se utiliza dentro del juego.
Contrasea Varchar(23)
Clave de acceso para el juego.
ImagenPerfil Blob Imagen representativa del jugador.
Id_pais Integer


Llave para relacionar el pas de residencia del
jugador.
enLinea Integer


Variable utilizada para establecer si el jugador
se encuentra en lnea o conectado, y controlar
el inicio de sesin siendo un 1 cuando est en
lnea y un 0 para cuando no.
La relacin usuarios representa a cada jugador junto con sus respectivos datos que se utilicen dentro del
videojuego o para acceder al mismo.
Estadstica
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id_usuario Integer
Identificador nico para establecer relacin con
Usuarios.
Experiencia Integer
Cantidad de experiencia del jugador dentro del
juego.
Victorias Integer
Cantidad de juegos ganados.
Derrotas Integer
Cantidad de juegos perdidos.
Nivel Integer
Nivel en el que se encuentra el jugador dentro
del juego.
La relacin estadsticas sirve para llevar un control acerca del tiempo que el jugador invierte en el juego, as como
darle informacin acerca de sus partidas.
Dato Personal
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id_usuario Integer
Identificador nico para establecer relacin con
Usuarios.
Nombre Varchar(20)
Nombre real del jugador.
Apellidos Varchar(23)
Apellidos reales del jugador.

12
FechaNacimiento Date
Fecha de nacimiento del jugador.
La relacin datos personales sirve para llevar un control acerca de ciertos datos pertenecientes al jugador.
Idioma
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id Integer
Identificador nico para cada idioma
soportado.
Nombre Varchar(20)
Nombre de cada idioma que se soporta.
La relacin idiomas sirve para saber que idiomas soporta el juego o cuales estn disponibles.
Correo
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id_usuario Integer
Identificador nico para establecer relacin con
Usuarios.
Correo Varchar(20)
Correos electrnicos que usa el jugador.
La relacin correos sirve para almacenar los correos electrnicos que utiliza cada jugador.
Usuario_Idioma
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id_Usuario Integer
Llave para relacionar con el usuario.
Id_Idioma Integer
Llave para relacionar con el idioma.
La relacin usuarios_idioma sirve para almacenar los distintos idiomas que puede dominar el jugador.
Pais
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id Integer Identificador nico para cada pas soportado.
Nombre Varchar(20)
Nombre del pas.
Id_Region Integer

Llave para relacionar cada pas con su
respectiva regin.
La relacin pases almacena todos los pases que son soportados por el juego.
Region
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id Integer Identificador nico para cada regin.
Nombre Varchar(20)
Nombre de cada una de las regiones.
La relacin regiones almacena las regiones de los pases soportados.
Servidor
Columna
Tipo de
Dato
Llave
Primaria
Llave
Fornea
No
Nulo
Descripcin
Id_Region Integer
Llave para relacionar la regin a la que
pertenece cada servidor.
La relacin servidores almacena a que regin pertenece cada servidor del juego.

7. Niveles de Transparencia
En cuanto a los niveles de trasparencia que se aplicaran o no, son los siguientes junto con su
respectiva explicacin:
Transparencia de Fragmentacin
Este criterio s ser aplicado, ya que el usuario aunque sepa que el videojuego est dividido
por idioma o regiones, no sabr qu tipo de fragmentacin se implement en el sistema.
Transparencia de Ubicacin

13
Este criterio de transparencia no podr ser aplicado en este proyecto, ya que se trata de
distribuir servidores del videojuego para que los clientes o usuarios se conecten en un mismo
servidor donde se hable un mismo idioma o que estn en la misma regin, por lo que los
usuarios al saber que es por idioma, sabrn que los servidores se encuentran en la misma
regin.
Transparencia de Replicacin
Ser aplicado pero para la informacin personal o de usuario, es decir, si un servidor est
fuera de lnea, los usuarios podrn acceder a su informacin debido a las rplicas que se
encuentren en los dems sitios, pero no podrn tener acceso al videojuego, ya que esto
rompe el objetivo de mantener la interaccin de los usuarios con un mismo idioma.


Transparencia de Transaccin
Sera aplicado ya que se tiene que garantizar la integridad y coherencia de los datos del
sistema distribuido, ya sea si se modificara informacin que se encuentra en varios sitios,
etc.
Transparencia Respecto a Fallos
Sera aplicado porque en caso de ocurrir un error en alguna transaccin, se tiene que notificar
al usuario acerca del fallo del sistema.
8. Fragmentacin
El tipo de fragmentacin a usar en este sistema distribuido, ser la horizontal, ya que en este caso
se quiere dividir la informacin de los usuarios y del juego por el idioma que se maneje por cada
uno de los usuarios, en la siguiente tabla se puede apreciar cmo sera la fragmentacin:

ID Usuario Nombre Idioma
01 BlackHawk Andres Espaol
02 Lycio Brandom Ingles
03 Storm Juan Espaol
04 Romeo Robert Ingles

ID Usuario Nombre Idioma ID Usuario Nombre Idioma
01 BlackHawk Andres Espaol 02 Lycio Brandom Ingles
03 Storm Juan Espaol 04 Romeo Robert Ingles

Como se puede observar se han dividido por filas, y utilizando el campo idioma, y as cada uno de
estos fragmentos ser utilizado en su correspondiente servidor.
9. Criterios de Distribucin de Datos

14
La manera en que se distribuirn los datos en el sistema distribuido, ser tomando el criterio del
idioma que cada usuario maneje o domine y tambin dependiendo en la regin en que se
encuentren. Ya que no habra motivo de que un usuario que se encuentra en Estados Unidos y que
lo ms probable es que hable el idioma Ingles se conecte a un servidor latino, por lo que se
requiere distribuir los datos respecto al idioma y regin, ya que as se garantiza que los datos sean
utilizados donde estn los usuarios, o sea, en la misma regin.
10. Diccionario de Datos v2.0
Servidor_Ingles Fragm_Ingles
Tablas
Transparencia Fragmentacin de
Tablas
Distribucin de Tablas
Ubicaci
n
Fragmentacin
Replic
a
Horizonta
l
Vertical
Usuario
Est distribuido en el servidor
americano o ingls, ya que es
ah donde se ocuparn con ms
frecuencia estos datos.
Estadstica
Dato_Personal
Idioma
Correo
Uusario_Idioma
Pais
Region
Servidor
Este fragmento contiene todos los usuarios que han decidido por jugar en el servidor donde dominen el idioma ingls y
que adems se encuentren en la regin de Norte Amrica, as mismo se almacenar en este servidor toda la
informacin que dieron al registrarse.
Servidor_Espaol Fragm_Espaol
Tablas
Transparencia Fragmentacin de
Tablas
Distribucin de Tablas
Ubicaci
n
Fragmentacin
Replic
a
Horizonta
l
Vertical
Usuario
Est distribuido en el servidor
latino o espaol, ya que es ah
donde se ocuparn con ms
frecuencia estos datos.
Estadstica
Dato_Personal
Idioma
Correo
Uusario_Idioma
Pais
Region
Servidor
Este fragmento contiene todos los usuarios que han decidido por jugar en el servidor donde dominen el idioma
espaol y que adems se encuentren en la regin latino y Sudamrica, as mismo se almacenar en este servidor toda
la informacin que dieron al registrarse.
Servidor_Portugus Fragm_Portugus
Tablas
Transparencia Fragmentacin de
Tablas
Distribucin de Tablas
Ubicaci
n
Fragmentacin
Replic
a
Horizonta
l
Vertical
Usuario
Est distribuido en el servidor
brasileo o portugus, ya que
es ah donde se ocuparn con
ms frecuencia estos datos.
Estadstica
Dato_Personal
Idioma
Correo

15
Uusario_Idioma
Pais
Region
Servidor
Este fragmento contiene todos los usuarios que han decidido por jugar en el servidor donde dominen el idioma
portugus y que adems se encuentren en la regin de Brasil, as mismo se almacenar en este servidor toda la
informacin que dieron al registrarse.

Captulo 3: Diccionario de Transacciones
Diccionario de Transacciones
No. Nombre Objetivo
1 Usuarios Obtener un listado de todos los usuarios.
Fragmentos:
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_Usuario
Frag3_Host_espaol_Usuario
Transaccin
BEGIN TRANSACTION

CREATE TEMP Usuario_Temp{
Id INT AUTO_INCREMENT;
Usuario VARCHAR(20);
Imagen_Perfil BLOB;
Id_pais INT
}
@Frag = SELECT Usuario,ImagenPerfil, id_pais FROM Frag1_Host_ingles_Usuario;
INSERT INTO Usuario_Temp (Usuario, Imagen_Perfil, Id_pais) SELECT * FROM Frag;

Frag = SELECT Usuario,ImagenPerfil, id_pais FROM Frag2_Host_portugues_Usuario;
INSERT INTO Usuario_Temp (Usuario, Imagen_Perfil, Id_pais) SELECT * FROM Frag;

Frag = SELECT Usuario,ImagenPerfil, id_pais FROM Frag3_Host_espaol_Usuario;
INSERT INTO Usuario_Temp (Usuario, Imagen_Perfil, Id_pais) SELECT * FROM Frag;

SELECT Usuario,Imagen_Perfil,Id_pais FROM Usuario_Temp;

END
No. Nombre Objetivo
2 Log in Obtener acceso al videojuego.
Fragmentos:
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_Usuario
Frag3_Host_espaol_Usuario
Transaccin
BEGIN TRANSACTION

IF (SELECT COUNT Usuario, Contrasea FROM Frag_Host_ingles_Usuario WHERE (Usuario = BINARY
nombreUsuarioIngresado AND Contrasea = BINARY contraseaIngresada AND enLinea = 0)) > 0 THEN
{ UPDATE Frag_Host_ingles_Usuario SET enLinea = 1 WHERE usuario = BINARY usuarioIngresado}


16
ELSIF (SELECT COUNT Usuario, Contrasea FROM Frag_Host_portugues_Usuario WHERE (Usuario =
BINARY nombreUsuarioIngresado AND Contrasea = BINARY contraseaIngresada AND enLinea = 0)) >
0 THEN
{ UPDATE Frag_Host_portugues_Usuario SET enLinea = 1 WHERE usuario = BINARY usuarioIngresado}

ELSE (SELECT COUNT Usuario, Contrasea FROM Frag_Host_espaol_Usuario WHERE (Usuario = BINARY
nombreUsuarioIngresado AND Contrasea = BINARY contraseaIngresada AND enLinea = 0)) > 0 THEN
{ UPDATE Frag_Host_espaol_Usuario SET enLinea = 1 WHERE usuario = BINARY usuarioIngresado}

END IF
END
No. Nombre Objetivo
3 Log out Cerrar sesin del videojuego.
Fragmentos:
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_Usuario
Frag3_Host_espaol_Usuario
Transaccin
BEGIN TRANSACTION

IF (SELECT COUNT Usuario FROM Frag_Host_ingles_Usuario WHERE (Usuario = BINARY usuarioActual
AND enLinea = 1)) > 0 THEN {UPDATE Frag_Host_ingles_Usuario SET enLinea = 0 WHERE usuario =
BINARY usuarioActual}

ELSIF (SELECT COUNT Usuario FROM Frag_Host_portugues_Usuario WHERE (Usuario = BINARY
usuarioActual AND enLinea = 1)) > 0 THEN {UPDATE Frag_Host_portugues_Usuario SET enLinea = 0
WHERE usuario = BINARY usuarioActual}

ELSE (SELECT COUNT Usuario FROM Frag_Host_espaol_Usuario WHERE (Usuario = BINARY
usuarioActual AND enLinea = 1)) > 0 THEN {UPDATE Frag_Host_espaol_Usuario SET enLinea = 0
WHERE usuario = BINARY usuarioActual}

END IF
END
No. Nombre Objetivo
4
Cambio de
Contrasea
Realizar de manera exitosa la modificacin de la contrasea del jugador.
Fragmentos:
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_Usuario
Frag3_Host_espaol_Usuario
Transaccin
BEGIN TRANSACTION

IF (SELECT COUNT Usuario FROM Frag_Host_ingles_Usuario WHERE (Usuario = BINARY usuarioActual) >
0 THEN {UPDATE Frag_Host_ingles_Usuario SET Contrasea = 'nuevaContrasea' WHERE usuario =
BINARY usuarioActual}

ELSIF (SELECT COUNT Usuario FROM Frag_Host_portugues_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_portugues_Usuario SET Contrasea = 'nuevaContrasea'
WHERE usuario = BINARY usuarioActual}


17
ELSE (SELECT COUNT Usuario FROM Frag_Host_espaol_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_espaol_Usuario SET Contrasea = 'nuevaContrasea'
WHERE usuario = BINARY usuarioActual}

END IF
END
No. Nombre Objetivo
5
Actualizar la
Informacin
Personal
Realizar una actualizacin de los datos personales del jugador, tales como el
nombre y apellidos.
Fragmentos:
Frag1_Host_ingles_Dato_Personal
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_ Dato_Personal
Frag2_Host_portugues_ Usuario
Frag3_Host_espaol_ Dato_Personal
Frag3_Host_espaol_ Usuario
Transaccin
BEGIN TRANSACTION

IF (SELECT COUNT Usuario FROM Frag_Host_ingles_Usuario WHERE (Usuario = BINARY usuarioActual) >
0 THEN {UPDATE Frag_Host_ingles_Dato_Personal SET Nombre = nuevoNombre, Apellidos =
nuevoApellido WHERE (id_usuario = idUsuarioActual )}

ELSIF (SELECT COUNT Usuario FROM Frag_Host_portugues_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_portugues_Dato_Personal SET Nombre = nuevoNombre,
Apellidos = nuevoApellido WHERE (id_usuario = idUsuarioActual )}

ELSE (SELECT COUNT Usuario FROM Frag_Host_espaol_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_espaol_Dato_Personal SET Nombre = nuevoNombre,
Apellidos = nuevoApellido WHERE (id_usuario = idUsuarioActual )}

END IF
END
No. Nombre Objetivo
6 Alta Regin
Realizar un alta de una nueva regin que ser soportada por el videojuego en
todas las tablas correspondientes del sistema distribuido.
Fragmentos:
Frag1_Host_ingles_Region
Frag2_Host_portugues_ Region
Frag3_Host_espaol_ Region
Transaccin
BEGIN TRANSACTION

INSERT INTO Frag1_Host_ingles_Region(nombre)
VALUES(nuevaRegion);

INSERT INTO Frag2_Host_portugues_Region(nombre)
VALUES(nuevaRegion);

INSERT INTO Frag3_Host_espaol_Region(nombre)
VALUES(nuevaRegion);

18

END
No. Nombre Objetivo
7
Actualizar
Experiencia
Realizar una actualizacin de la experiencia obtenida por el jugador.
Fragmentos:
Frag1_Host_ingles_Estadistica
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_Estadistica
Frag2_Host_portugues_Usuario
Frag3_Host_espaol_Estadistica
Frag3_Host_espaol_Usuario
Transaccin
BEGIN TRANSACTION

IF (SELECT COUNT Usuario FROM Frag_Host_ingles_Usuario WHERE (Usuario = BINARY usuarioActual) >
0 THEN {UPDATE Frag_Host_ingles_Estadistica SET Experiencia = cantidadExperiencia WHERE (id_usuario
= idUsuarioActual )}

ELSIF (SELECT COUNT Usuario FROM Frag_Host_portugues_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_portugues_Estadistica SET Experiencia =
cantidadExperiencia WHERE (id_usuario = idUsuarioActual )}

ELSE (SELECT COUNT Usuario FROM Frag_Host_espaol_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_espaol_Estadistica SET Experiencia = cantidadExperiencia
WHERE (id_usuario = idUsuarioActual )}

END IF
END
No. Nombre Objetivo
8
Actualizar
Victorias
Realizar una actualizacin de las victorias generadas por el jugador.
Fragmentos:
Frag1_Host_ingles_Estadistica
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_Estadistica
Frag2_Host_portugues_Usuario
Frag3_Host_espaol_Estadistica
Frag3_Host_espaol_Usuario
Transaccin
BEGIN TRANSACTION

IF (SELECT COUNT Usuario FROM Frag_Host_ingles_Usuario WHERE (Usuario = BINARY usuarioActual) >
0 THEN {UPDATE Frag_Host_ingles_Estadistica SET Victorias = cantidadVictorias WHERE (id_usuario =
idUsuarioActual )}

ELSIF (SELECT COUNT Usuario FROM Frag_Host_portugues_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_portugues_Estadistica SET Victorias = cantidadVictorias
WHERE (id_usuario = idUsuarioActual )}

ELSE (SELECT COUNT Usuario FROM Frag_Host_espaol_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_espaol_Estadistica SET Victorias = cantidadVictorias

19
WHERE (id_usuario = idUsuarioActual )}

END IF
END
No. Nombre Objetivo
9
Actualizar
Derrotas
Realizar una actualizacin de las derrotas que tiene un jugador.
Fragmentos:
Frag1_Host_ingles_Estadistica
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_Estadistica
Frag2_Host_portugues_Usuario
Frag3_Host_espaol_Estadistica
Frag3_Host_espaol_Usuario
Transaccin
BEGIN TRANSACTION

IF (SELECT COUNT Usuario FROM Frag_Host_ingles_Usuario WHERE (Usuario = BINARY usuarioActual) >
0 THEN {UPDATE Frag_Host_ingles_Estadistica SET Derrotas = cantidadDerrotas WHERE (id_usuario =
idUsuarioActual )}

ELSIF (SELECT COUNT Usuario FROM Frag_Host_portugues_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_portugues_Estadistica SET Derrotas = cantidadDerrotas
WHERE (id_usuario = idUsuarioActual )}

ELSE (SELECT COUNT Usuario FROM Frag_Host_espaol_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_espaol_Estadistica SET Derrotas = cantidadDerrotas
WHERE (id_usuario = idUsuarioActual )}

END IF
END
No. Nombre Objetivo
10 Actualizar Nivel Realizar una actualizacin del nivel en el que se encuentra el jugador.
Fragmentos:
Frag1_Host_ingles_Estadistica
Frag1_Host_ingles_Usuario
Frag2_Host_portugues_Estadistica
Frag2_Host_portugues_Usuario
Frag3_Host_espaol_Estadistica
Frag3_Host_espaol_Usuario
Transaccin
BEGIN TRANSACTION

IF (SELECT COUNT Usuario FROM Frag_Host_ingles_Usuario WHERE (Usuario = BINARY usuarioActual) >
0 THEN {UPDATE Frag_Host_ingles_Estadistica SET Nivel = numeroNivel WHERE (id_usuario =
idUsuarioActual )}

ELSIF (SELECT COUNT Usuario FROM Frag_Host_portugues_Usuario WHERE (Usuario = BINARY
usuarioActual) > 0 THEN {UPDATE Frag_Host_portugues_Estadistica SET Nivel = numeroNivel WHERE
(id_usuario = idUsuarioActual )}

ELSE (SELECT COUNT Usuario FROM Frag_Host_espaol_Usuario WHERE (Usuario = BINARY

20
usuarioActual) > 0 THEN {UPDATE Frag_Host_espaol_Estadistica SET Nivel = numeroNivel WHERE
(id_usuario = idUsuarioActual )}

END IF
END

Captulo 4: Control de Concurrencia y Confiabilidad
Control de Concurrencia
Algoritmo
Debido a que la mayora de las transacciones que se estarn manejando no afectan datos que
tiendan a ser usados por mltiples transacciones, se estar utilizando validaciones optimistas, sin
embargo para las transacciones que manipulen datos que puedan estar en uso al momento de
ejecutarse, se utilizaran algoritmos pesimistas.
Validaciones Optimistas
La mayora de los algoritmos usados para la concurrencia suelen ser pesimistas, ya que asumen
que los conflictos entre transacciones son muy frecuentes y no permiten el acceso a un dato si
existe una transaccin conflictiva que acceda al mismo dato. Por otro lado las validaciones
optimistas retrasan la fase de validacin de la transaccin justo antes de la fase de escritura, por
lo que una transaccin sometida a este tipo de validacin nunca es retrasada.
Este tipo de validacin encaja bien con la mayora de las transacciones que se manejaran en el
proyecto del videojuego en lnea, ya que dichas transacciones solo operan con datos nicos, es
decir, cada transaccin manipula datos que no son o no suelen ser manipulados por otros usuarios
o transacciones. De esta manera se espera que mejore el rendimiento en las transacciones ya que
no ser frecuente que se estn retrasando a causa de otra transaccin.
Algoritmos de Cerradura o Basados en Candados
En este algoritmo las transacciones solicitan candados al administrador de candados
(despachador) pasndole informacin acerca de la operacin que se realizar en la base de datos
(lectura o escritura), as como los datos que sern manipulados y el identificador de transaccin.
De esta manera el administrador de candados verifica si los elementos de la transaccin ya han
sido bloqueados por otro candado, y de ser as, la transaccin es retrasada hasta que el candado
relacionado al dato en uso sea desbloqueado o liberado. Esta liberacin es hecha cuando una
transaccin es hecha con xito.
Este algoritmo de candados presentar una gran ayuda para las transacciones que con ms
frecuencia accedan o manipulen datos que a la vez sean usados por otras transacciones, o incluso
usuarios. Tambin cabe aclarar que este algoritmo no ser usado con tanta frecuencia, ya que las
transacciones que puedan involucrar datos que sean usados por otras transacciones son mnimas.
Software

21
En cuanto al software que ser utilizado para tener un mayor control en la concurrencia de las
transacciones, ser con el mismo SGBDD, en este caso es Oracle el que nos proporcionar dicha
ayuda.
Dicha ayuda ser mediante el uso de bloqueos, que son la manera en que Oracle trabaja con las
transacciones, estos bloqueos los utiliza para evitar que dos transacciones accedan al mismo
recurso. Automticamente Oracle obtiene los bloqueos necesarios cuando ejecuta alguna
sentencia en SQL.

Para esto utiliza el nivel menos restrictivo guindose por las siguientes reglas:
Operaciones de lectura no esperan a las de escritura sobre los mismos datos.
Operaciones de escritura no esperan a las de lectura sobre los mismos datos.
Operaciones de escritura solamente esperan a otras operaciones de escritura que intentan
modificar la misma tupla.

Se utilizan bloqueos a nivel de fila: una transaccin espera cuando intenta modificar una fila
modificada por una transaccin no confirmada.
Oracle no escalona los bloqueos (Interbloqueos): ocurren cuando dos o ms usuarios estn
esperando datos bloqueados por los otros. Oracle automticamente detecta situaciones de
interbloqueo y los resuelve abortando una de las transacciones.

Para controlar el proceso de login o el inicio de sesin para cada usuario se utilizar la variable
enLinea declarada en la tabla Usuarios, en la cual se guarda un valor entero de 1 para indicar
que el jugador est en lnea y de esta manera bloquear otro inicio de sesin con la misma cuenta,
y un valor de 0 para indicar que el jugador se encuentra desconectado.

Por lo tanto el control de concurrencia de todo el sistema se asignar al SMBDD (Oracle) tomando
en cuenta los algoritmos y validaciones anteriores, de esta manera se pretende otorgar un sistema
eficiente a la hora de interactuar con el usuario o el videojuego.
Confiabilidad
En los escenarios donde el sistema se vea afectado de manera que deje de funcionar o como es
comnmente llamado cada de sistema los usuarios tendrn que esperar a que el sistema sea
atendido para solucionar el problema que haya ocasionado la cada. Esto debido a que la idea
original del proyecto es otorgar la interaccin de los jugadores que hablen o dominen el mismo
idioma, entonces si se quisiera trasladar temporalmente a los usuarios a otro servidor se rompera
con ese esquema con el que se ha estado trabajando, por lo que no ser posible el traslado de
jugadores a otro servidor cuando ocurra una situacin que impida el funcionamiento del sistema o
servidor.
Otro escenario a tratar es aquel en que el jugador pierde la conexin por alguna situacin, de
manera que pudiera quedar su sesin de manera conectada cuando en realidad el jugador no se
encuentra interactuando con el sistema. Para controlar esta situacin se utilizarn dos partes:
En el lado del cliente o el videojuego, la misma aplicacin detectar cuando se ha perdido la
conexin con el servidor y de esta manera el mismo jugador podr cerrar el programa o la
sesin sin problema alguno.

22
Y del lado del servidor, ste contar con el DBMS_SCHEDULER de Oracle, y con el cual se
pueden establecer tareas que se realicen cada cierto tiempo. Por lo que se podr detectar si se
perdi la conexin con el jugador y de esta manera se cierre la sesin del jugador en el
servidor.

Protocolos Redo y Undo
En caso de presentarse alguna falla en el sistema o servidores y que esta misma afecte a ciertas
transacciones que estuvieran en ejecucin durante la falla, se requiere el uso de ciertos protocolos
que brinden la forma de restablecer la base de datos a su forma correcta y funcional. Los
protocolos que sern usados son los siguientes:
Redo
Este protocolo ayudar en los escenarios donde una transaccin pudo terminar con xito (commit)
pero no alcanzo a realizar esos cambios en la base de datos estable sino solo en las copias locales
debido a una falla de sistema o servidor, por lo que este protocolo al detectar est problemtica,
realizar de nuevo las acciones de la transaccin en la base de datos estable, esto gracias al
registro de la base de datos.

Undo
Y en caso de que alguna transaccin se encuentre realizando los cambios o modificaciones en la
base de datos estable y se presente una falla en el sistema o en algn servidor, de manera que los
cambios queden incompletos y por lo tanto una inconsistencia en la base de datos, este protocolo
tendr la capacidad de deshacer los cambios realizados, por lo que puede dejar a la base de datos
en un estado previo en el que sea consistente, esto gracias al registro de la base de datos, que
contiene toda la informacin para realizar dicho procedimiento.



23

Puntos de Verificacin (Checkpoints)
Cuando ocurre una falla en el sistema es necesario consultar una bitcora para determinar cules
son las transacciones que necesitan volver a hacerse y cuando no necesitan hacerse, por lo que se
requiere el uso de puntos de verificacin o checkpoints. Estos puntos de verificacin nos ayudan
para reducir el gasto de tiempo consultando la bitcora. El punto de verificacin es un registro que
se genera en la bitcora para determinar que todo lo que se encuentra antes de ese punto est
correcto y verificado.
Los checkpoints ayudarn a agilizar los procedimientos del protocolo Undo, ya que as sabr en
qu punto la base de datos se encuentra de manera consistente y funcional.

S-ar putea să vă placă și