entity framework y cluster en mysql

of 16 /16
ENTITY FRAMEWORK Y MYSQL CLUSTER 1 de enero 2012 Docente : Ing. Alexander Calderón Universidad de El Salvador Facultad Multidisciplinaria de Occidente Alumnos: Canales Mancia Guillermo Ernesto Flores Castro Francisco Alexander Marroquín Paniagua Kenny Guadalupe Rodriguez Umaña, Oscar Gustavo Salinas Rodríguez Arturo Ernesto

Author: arturo-salinas

Post on 25-Jun-2015

1.740 views

Category:

Education


5 download

Embed Size (px)

DESCRIPTION

Este documento contiene una introduccion al paradigna Entity Framework de Microsoft, ademas incluye un How To para el montaje de un Cluster en MySql.Universidad de El Salvador, Facultad Multidisciplinar de Occidente, Bases de Datos 2012.-

TRANSCRIPT

  • 1. Universidad de El SalvadorFacultad Multidisciplinaria de Occidente ENTITY FRAMEWORK Y1 de enero MYSQL2012 CLUSTER Docente : Ing. Alexander CaldernAlumnos: Canales Mancia Guillermo Ernesto Flores Castro Francisco Alexander Marroqun Paniagua Kenny Guadalupe Rodriguez Umaa, Oscar Gustavo Salinas Rodrguez Arturo Ernesto

2. Entity FrameworkEntity Framework es un conjunto de tecnologas de ADO.NET que permiten el desarrollode aplicaciones de software orientadas a datos. Los arquitectos y programadores deaplicaciones orientadas a datos se han enfrentado a la necesidad de lograr dos objetivosmuy diferentes: modelar las entidades, las relaciones y la lgica de los problemas empresariales que resuelven. trabajar con los motores de datos que se usan para almacenar y recuperar los datos.Los datos pueden abarcar varios sistemas de almacenamiento, cada uno con sus propiosprotocolos; incluso las aplicaciones que funcionan con un nico sistema dealmacenamiento deben equilibrar los requisitos del sistema de almacenamiento conrespecto a los requisitos de escribir un cdigo de aplicacin eficaz y fcil de mantener.Entity Framework permite a los programadores trabajar con datos en forma de objetos ypropiedades especficos del dominio, por ejemplo, con clientes y direcciones, sin tenerque pensar en las tablas de las bases de datos subyacentes y en las columnas en las quese almacenan estos datos. Con Entity Framework, los desarrolladores de software puedentrabajar en un nivel ms alto de abstraccin cuando tratan con datos, y puede crear ymantener aplicaciones orientadas a datos con menos cdigo que en las aplicacionestradicionales. Dado que Entity Framework es un componente de .NET Framework, lasaplicaciones se pueden ejecutar en cualquier equipo en el que est instalado .NETFramework a partir de la versin 3.5 SP1. Adems permite a los desarrolladores crearaplicaciones de acceso a datos programando con un modelo de aplicacionesconceptuales en lugar de programar directamente con un esquema de almacenamientorelacional. El objetivo es reducir la cantidad de cdigo y el mantenimiento necesarios para 3. las aplicaciones orientadas a datos. Las aplicaciones de Entity Framework ofrecen lassiguientes ventajas: Las aplicaciones pueden funcionar en trminos de un modelo conceptual ms centrado en la aplicacin, que incluye tipos con herencia, miembros complejos y relaciones. Las aplicaciones estn libres de dependencias de codificacin rgida de un motor de datos o de un esquema de almacenamiento. Las asignaciones entre el modelo conceptual y el esquema especfico de almacenamiento pueden cambiar sin tener que cambiar el cdigo de la aplicacin. Los desarrolladores pueden trabajar con un modelo de objeto de aplicacin coherente que se puede asignar a diversos esquemas de almacenamiento, posiblemente implementados en sistemas de administracin de base de datos diferentes. Se pueden asignar varios modelos conceptuales a un nico esquema de almacenamiento. La compatibilidad con Lenguaje Integrated Query (LINQ) proporciona validacin de la sintaxis en el momento de la compilacin para consultas en un modelo conceptual.Un enfoque de diseo habitual para crear una aplicacin o un servicio consiste en dividirla aplicacin o el servicio en tres partes: modelo de dominio: define las entidades y relaciones del sistema que se est modelando. modelo lgico: relacional normaliza las entidades y relaciones en tablas con restricciones de claves externas. modelo fsico: abarca las capacidades de un motor de datos determinado especificando los detalles del almacenamiento en forma de particiones e ndices.Los administradores de bases de datos refinan el modelo fsico para mejorar elrendimiento, pero los programadores que escriben el cdigo de la aplicacinprincipalmente se limitan a trabajar con el modelo lgico escribiendo consultas SQL yllamando a procedimientos almacenados. Los modelos de dominio se suelen usar comouna herramienta para capturar y comunicar los requisitos de una aplicacin, confrecuencia como diagramas inertes que se ven y se explican en las primeras etapas de unproyecto, y a continuacin se abandonan. Muchos equipos de desarrolladores omiten lacreacin de un modelo conceptual y comienzan especificando las tablas, columnas yclaves en una base de datos relacional.Entity Framework da vida a los modelos conceptuales permitiendo a los programadoresconsultar las entidades y relaciones en el modelo de dominio (denominado modeloconceptual en Entity Framework) al tiempo que se basan para traducir esas operacionesen los comandos especficos del origen de datos. Esto libera a las aplicaciones de las 4. dependencias codificadas de forma rgida en un origen de datos determinado. El modeloconceptual, el modelo de almacenamiento y las asignaciones entre los dos se expresanen esquemas basados en XML y se definen en archivos que tienen extensiones denombre correspondientes: El lenguaje de definicin de esquemas conceptuales (CSDL) define el modelo conceptual. CSDL es la implementacin de Entity Framework del Entity Data Model. La extensin de archivo es .csdl. El lenguaje de definicin de esquemas de almacenamiento (SSDL) define el modelo de almacenamiento, que tambin se denomina modelo lgico. La extensin de archivo es .ssdl. El lenguaje de especificacin de asignaciones (MSL) define las asignaciones entre los modelos conceptuales y de almacenamiento. La extensin de archivo es .msl.El modelo de almacenamiento y las asignaciones pueden cambiar segn sea necesariosin requerir cambios en el modelo conceptual, las clases de datos o el cdigo de laaplicacin. Dado que los modelos de almacenamiento son especficos del proveedor,puede trabajar con un modelo conceptual coherente a travs de varios orgenes de datos.Entity Framework utiliza estos modelos y archivos de asignacin para transformar lasoperaciones de creacin, lectura, actualizacin y eliminacin de las entidades y relacionesdel modelo conceptual en las operaciones equivalentes en el origen de datos. EntityFramework incluso permite asignar las entidades del modelo conceptual a losprocedimientos almacenados en el origen de datos.Asignar objetos a datosLa programacin orientada a objetos supone un desafo al interactuar con sistemas dealmacenamiento de datos. Aunque la organizacin de clases suele reflejar la organizacinde las tablas de bases de datos relacionales, el ajuste no es perfecto. Varias tablasnormalizadas suelen corresponder a una sola clase y las relaciones entre las clases serepresentan a menudo de forma diferente a las relaciones entre tablas. Por ejemplo, pararepresentar el cliente de un pedido de ventas, una clase Order podra utilizar unapropiedad que contiene una referencia a una instancia de una clase Customer, mientrasque una fila de la tabla Order en una base de datos contiene una columna de claveexterna con un valor que corresponde a un valor de clave principal en latabla Customer (o conjunto de columnas). Una clase Customer podra tener unapropiedad denominada Orders que contuviera una coleccin de instancias de laclase Order, mientras que la tabla Customer en una base de datos no tiene ningunacolumna comparable.Entity Framework proporciona a los desarrolladores de software laflexibilidad para representar las relaciones de esta manera, o para modelar msestrechamente las relaciones tal como se representan en la base de datosLas soluciones existentes han intentado cubrir este hueco, que se suele denominar"desigualdad de impedancia", asignando nicamente clases y propiedades orientadas a 5. objetos a las tablas y columnas relacionales. En lugar de seguir este enfoque tradicional,Entity Framework asigna las tablas relacionales, columnas y restricciones FOREIGN KEYde los modelos lgicos a las entidades y relaciones de los modelos conceptuales. Estopermite una mayor flexibilidad al definir los objetos y optimizar el modelo lgico. Lasherramientas de Entity Data Model generan clases de datos extensibles segn el modeloconceptual. Se trata de clases parciales que se pueden extender con miembrosadicionales que el programador agrega. De forma predeterminada, las clases que segeneran para un modelo conceptual determinado derivan de las clases base queproporcionan servicios para materializar las entidades como objetos y para realizar unseguimiento de los cambios y guardarlos. Los desarrolladores pueden utilizar estas clasespara trabajar con las entidades y relaciones como objetos relacionados medianteasociaciones. Los desarrolladores tambin pueden personalizar las clases que segeneran para un modelo conceptual. Para obtener ms informacin,Obtener acceso a los datos de entidad y cambiarlosComo algo ms que otra solucin de asignacin objeto-relacional, Entity Framework tratafundamentalmente de permitir que las aplicaciones obtengan acceso y cambien los datosque estn representados como entidades y relaciones en el modelo conceptual. EntityFramework usa la informacin de los archivos del modelo y de asignacin para traducirlas consultas de objeto con los tipos de entidad que se representan en el modeloconceptual en consultas especficas del origen de datos. Los resultados de la consulta sematerializan en objetos que Entity Framework administra. Entity Framework proporcionalas maneras siguientes de consultar un modelo conceptual y devolver objetos: LINQ to Entities. Proporciona compatibilidad con Language-Integrated Query (LINQ) para consultar los tipos de entidad que se definen en un modelo conceptual. Para obtener ms informacin, vea LINQ to Entities. Entity SQL . Un dialecto de SQL, independiente del almacenamiento, que trabaja directamente con entidades del modelo conceptual y que admite conceptos de Entity Data Model. Entity SQL se utiliza tanto con consultas de objeto como con consultas que se ejecutan utilizando el proveedor EntityClient. Para obtener ms informacin, vea Informacin. Mtodos del generador de consultas Estos mtodos permiten construir consultas de Entity SQL utilizando mtodos de consulta del estilo de LINQ. .El Entity Framework incluye el proveedor de datos de EntityClient. Este proveedoradministra las conexiones, traduce las consultas de entidad en consultas especficas delorigen de datos y devuelve un lector de datos que Entity Framework usa para materializarlos datos de la entidad en los objetos. Cuando no se requiere la materializacin de losobjetos, el proveedor de EntityClient tambin se puede utilizar como un proveedor dedatos ADO.NET estndar habilitando las aplicaciones para ejecutar consultas Entity SQLy usar el lector de datos de solo lectura devuelto 6. El diagrama muestra la arquitectura de Entity Framework para el acceso a datos.Las herramientas de Entity Data Model pueden generar una clase derivadade ObjectContext que representa el contenedor de entidades definido en el modeloconceptual. Este contexto del objeto proporciona los medios para realizar el seguimientode los cambios y administrar las identidades, la simultaneidad y las relaciones. Esta clasetambin expone un mtodo SaveChanges que escribe las inserciones, actualizaciones yeliminaciones en el origen de datos. Al igual que las consultas, estas modificaciones sonrealizadas bien por los comandos que el sistema genera automticamente o bien por losprocedimientos almacenados que el programador especifica.Consideraciones generales de seguridadLas consideraciones de seguridad siguientes se aplican a todas las aplicaciones queutilizan Entity Framework.Usar solo proveedores de orgenes de datos de confianza.Para comunicarse con el origen de datos, un proveedor debe hacer lo siguiente: Recibir la cadena de conexin de Entity Framework . Traducir el rbol de comandos al lenguaje de consultas nativo del origen de datos. Ensamblar y devolver los conjuntos de resultados.Durante la operacin de inicio de sesin, la informacin que se basa en la contrasea delusuario se pasa al servidor a travs de las bibliotecas de red del origen de datossubyacente. Un proveedor malintencionado puede robar las credenciales del usuario,generar consultas malintencionadas o alterar el conjunto de resultados.Cifrar la conexin para proteger los datos confidenciales.Entity Framework no administra el cifrado de datos directamente. Si los usuarios tienenacceso a los datos a travs de una red pblica, la aplicacin debera establecer una 7. conexin cifrada al origen de datos para aumentar la seguridad. Para obtener msinformacin, consulte la documentacin relacionada con la seguridad correspondiente alorigen de datos. Para un origen de datos de SQL Server, vea Cifrar las conexiones a SQLServer.Proteger la cadena de conexin.La proteccin del acceso al origen de datos es uno de los objetivos ms importantes a lahora de proteger una aplicacin. Una cadena de conexin presenta una vulnerabilidadpotencial si no se protege o si se construye incorrectamente. Al almacenar la informacinde conexin en texto sin formato o conservarla en la memoria, se pone en riesgo todo elsistema. A continuacin se enumeran mtodos recomendados para proteger las cadenasde conexin: Utilice la autenticacin de Windows con un origen de datos de SQL Server. Al utilizar la autenticacin de Windows para conectarse a un origen de datos de SQL Server, la cadena de conexin no contiene informacin de contraseas ni del inicio de sesin. Cifre las secciones del archivo de configuracin mediante una configuracin protegida. ASP.NET incluye una caracterstica denominada configuracin protegida, que permite cifrar la informacin confidencial en un archivo de configuracin. Si bien se ha diseado principalmente para ASP.NET, la configuracin protegida tambin puede usarse para cifrar secciones de los archivos de configuracin en aplicaciones Windows Para consultar una descripcin detallada de las posibilidades de la nueva configuracin protegida, vea Encrypting Configuration Information Using Protected Configuration. Almacene las cadenas de conexin en archivos de configuracin protegidos. Nunca debera incrustar las cadenas de conexin en el cdigo fuente. Las cadenas de conexin tambin se pueden almacenar en archivos de configuracin, lo que elimina la necesidad de incrustarlas en el cdigo de la aplicacin. De forma predeterminada, el Asistente para Entity Data Model almacena las cadenas de conexin en el archivo de configuracin de la aplicacin. Debe proteger este archivo para evitar el acceso no autorizado. Utilice generadores de cadenas de conexin al crear dinmicamente las conexiones. Si debe construir las cadenas de conexin en tiempo de ejecucin, utilice la clase EntityConnectionStringBuilder. Esta clase de generador de cadenas ayuda a evitar los ataques de inyeccin en las cadenas de conexin validando y anulando la informacin de entrada no vlida. Para obtener ms informacin, vea Cmo generar una cadena de conexin EntityConnection (Entity Framework). Use igualmente la clase de generador de cadenas adecuada para construir la cadena de conexin a un origen de datos que forme parte de la cadena de conexin de Entity Framework 8. HOW TO CLUSTER MYSQLEl trmino Clster en Bases de Datos significa procesamiento paralelo, es decir comoclientes nos conectamos a un servidor qu fsica y lgicamente est distribuido en variasPCs , aprovechando el performance de todas en conjunto como una sola mquina, estoes posible ya que el procesamiento se distribuye teniendo la administracin, las bases dedatos y el servicio en nodos diferentes.Hay que distinguir ciertos conceptos, en muchos contextos, el trmino "nodo" se usa paraindicar una mquina, pero cuando se discute MySQL Clster significa un proceso. Puedehaber cualquier nmero de nodos en una mquina, para los que se usa el trminomquina clster.MySQL Clster es una tecnologa que permite clustering de bases de datos en memoriaen un entorno de no comparticin. La arquitectura de no comparticin permite que elsistema funcione con hardware barato, y sin ningn requerimiento especial de hardware osoftware. Tampoco tienen ningn punto nico de fallo porque cada componente tiene supropia memoria y disco.Hay tres tipos de nodos clster, y en una configuracin MySQL Clster mnima, al menoshabr tres nodos, uno de cada tipo: El nodo de administracin (MGM) : El rol de este tipo de nodo es administrar los otros nodos dentro del MySQL Clster, tal como proporcionar datos de configuracin, iniciar y parar nodos, ejecutar copias de seguridad, y as. Como este tipo de nodo administra la configuracin de otros nodos, un nodo de este tipo debe arrancarse primero, antes de cualquier otro nodo. Un nodo MGM se arranca con el comando ndb_mgmd. El nodo de datos: Este es el tipo de nodo que almacena los datos del clster. Hay tantos nodos de datos como rplicas, multiplicado por el nmero de fragmentos. Por ejemplo, con dos rplicas, cada uno teniendo dos fragmentos, necesita cuatro nodos de datos. No es necesario tener ms de una rplica. Un nodo de datos se arranca con el comando ndbd. 9. El nodo SQL: Este es el nodo que accede a los datos del clster. En el caso de MySQL Clster, un nodo cliente es un servidor MySQL tradicional que usa el motor NDB Clster . Un nodo SQL tpicamente se arranca con el comando mysqld -- ndbcluster o smplemente usando mysqld con ndbcluster aadido a my.cnf.La configuracin de un clster implica configurar cada nodo individual en el clster einicializar los enlaces de comunicacin individual entre los nodos. MySQL Clster estdiseado con la intencin que los nodos de almacenamiento son homogneos entrminos de procesador, espacio de memoria, y ancho de banda. Adems, paraproporcionar un punto nico de configuracin, todos los datos de configuracin del clsterentero se guardan en un nico fichero de configuracin.El servidor de administracin (nodo MGM) administra el fichero de configuracin delclster y el log. Cada nodo en el clster recibe los datos de configuracin del servidor deadministracin, y necesita una forma de determinar dnde reside el servidor deadministracin. Cuando ocurren eventos interesantes en los nodos de datos, los nodostransfieren informacin acerca de estos eventos al servidor de administracin, que guardala informacin en el log del clster.Adems, puede haber cualquier nmero de procesos clientes del clster o aplicaciones.Hay de dos tipos: Clientes MySQL estndar: No son diferentes para MySQL Clster que para cualquier MySQL (no clster). En otras palabras, MySQL Clster puede ser accedido para aplicaciones MySQL existentes escritas en PHP, Perl, C, C++, Java, Python, Ruby, y as. Clientes de administracin: Estos clientes conectan al servidor de administracin y proporcionan comandos para arrancar y parar nodos, arrancar y parar traceo de mensajes (slo en versiones de depuracin), mostrar versiones y estatus de nodos, arrancar y parar copias de seguridad, y as.Hardware, software y redesUna de las ventajas de MySQL Clster es que puede ejecutarse en hardware normal sinningn requerimiento especial a parte de grandes cantidades de RAM, debido al hechoque todos los datos se almacenan en memoria Naturalmente, CPUs mltiples y msrpidas mejoran el rendimiento. Los requerimientos de memoria para procesos clster sonrelativamente pequeos.Los requerimientos de software para Clster son modestos. Los sistemas operativos delas mquinas no requieren ningn modulo no usual, servicios, aplicaciones oconfiguracin extraa para soportar MySQL Clster. Para Mac OS X o Solaris, lainstalacin estndar es suficiente. Para Linux, una instalacin estndar debe ser todo lonecesario. 10. Para una comunicacin entre nodos, el clster soporta red TCP/IP en cualquier topologaestndar, y como mnimo se espera una red 100 Mbps Ethernet, ms un switch, hub, orouter para proporcionar conectividad de red al clster entero. Recomendamos queMySQL Clster se ejecute en su subred que no est compartida con mquinas no-clsterpor las siguientes razones: Seguridad: La comunicacin entre nodos del clster no estn cifradas. La nica forma de proteger transmisiones dentro de un MySQL Clster es ejecutar su clster en una red protegida. Si trata de usar MySQL Clster para aplicaciones Web, el clster debe residir detrs de un firewall y no en su DMZ (DMZ) o en otro lugar. Eficiencia: Inicializar un MySQL Clster en una red privada o protegida permite que el clster haga uso exclusivo del ancho de banda entre mquinas del clster. Usar un switch esperado para su MySQL Clster no slo ayuda a protegerse de accesos no autorizados a los datos del clster, tambin asegura que los nodos del clster estn protegidos de interferencias causadas por transmisiones entre otras mquinas en la red. Para mayor confianza puede usar switches duales y tarjetas duales para eliminar la red como punto nico de fallo; varios dispositivos soportan fallos para estos enlaces de comunicacin.Arquitectura de un Clster. 11. INSTALACION Y CONFIGURACION DE CLUSTER 192.168.1.5 192.168.1.9192.168.1.6192.168.1.4Todos los ordenadores tienen instalado sistema operativo LinuxInstalacin de Nodo de Administracin: (MGM NODE): 1- Descargar archivo mysql-cluster-gpl-7.2.6-linux2.6-i686.tar 2- Descomprimir archivo 3- Ubicarse en el directorio del archivo recin descompreso 4- Copiar los binarios en la carpeta /usr/local/bin de la siguiente manera:cp bin/ndb_mgm* /usr/local/bin 5- Ubicarse en el directorio /usr/local/bin 6- Dar permisos de ejecucin a los binarios recin copiados:chmod +x ndb_mgm* 7- Crear en /var/lib/mysql_cluster un archivo llamado config.ini, el cual tiene que lucirde la siguiente manera: 12. Instalacin de Nodos de datos: 1-Agregar un usuario y un grupo llamado mysql al sistema operativo: #groupadd mysql #useradd -g mysql mysql 2-Descargar y descomprimir archivo archivo mysql-cluster-gpl-7.2.6-linux2.6-i686.tar: #tar -C /usr/local -xzvf mysql-cluster-gpl-7.2.6-linux2.6-i686.tar 3-Renombrar directorio recin descompreso a mysql para evitar sentencias muylargas#mv /usr/local/ mysql-cluster-gpl-7.2.6-linux2.6-i686 /usr/local/mysql 13. 4-Situarse en directorio recin descompreso:#cd /usr/local/mysql 5-Instalar bases de datos del sistema (propias de mysql): #scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql 6-Aplicar permisos al usuario mysql para la ejecucin:#cd /usr/local/mysql # chown -R root . # chown -R mysql data # chgrp -R mysql . 7-Crear en el directorio /etc un archivo llamado my.cnf, este archivo es elencargado de dictar la direccin Instalacin de nodo Mysql1- Descargar y descomprimir archivo mysql-cluster-gpl-7.2.6-linux2.6-i686.tar #tar -C /usr/local -xzvf mysql-cluster-gpl-7.2.6-linux2.6-i686.tar2- Renombrar directorio# mv /usr/local/mysql-cluster-gpl-7.0.15-linux-i686-glibc23.tar.gz /usr/local/mysql3- Agregar usuario y grupo mysql # groupadd mysql 14. # useradd -g mysql mysql 4- Moverse al directorio recin descompreso y darle permisos al usuario mysql # cd /usr/local/mysql # chown -R root . # chown -R mysql data # chgrp -R mysql 5- Crear entrada en registro de servicios de Linux para mysql y darle permisos deejecucin# cp support-files/mysql.server /etc/init.d/mysql# chmod +x /etc/init.d/mysqlARRANCADO DE CLUSTEREl proceso de arranque de un clster consta de los siguientes pasos: 1- Iniciar nodo de Administracin 2- Iniciar nodos de datos: 3- Iniciar nodo Mysql 15. 4- Verificar si en el nodo de administracin aparecen conectados los nodos de datos y mysql Iniciando conexiones con nodos de datosNodos de datos conectados 16. Nodo Mysql Conectado