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.