Está en la página 1de 16

Universidad de El Salvador Facultad Multidisciplinaria de Occidente

ENTITY FRAMEWORK Y MYSQL CLUSTER

1 de enero

2012

Docente : Ing. Alexander Caldern

Alumnos: Canales Mancia Guillermo Ernesto Flores Castro Francisco Alexander Marroqun Paniagua Kenny Guadalupe Rodriguez Umaa, Oscar Gustavo Salinas Rodrguez Arturo Ernesto

Entity Framework Entity Framework es un conjunto de tecnologas de ADO.NET que permiten el desarrollo de aplicaciones de software orientadas a datos. Los arquitectos y programadores de aplicaciones orientadas a datos se han enfrentado a la necesidad de lograr dos objetivos muy 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 propios protocolos; incluso las aplicaciones que funcionan con un nico sistema de almacenamiento deben equilibrar los requisitos del sistema de almacenamiento con respecto 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 y propiedades especficos del dominio, por ejemplo, con clientes y direcciones, sin tener que pensar en las tablas de las bases de datos subyacentes y en las columnas en las que se almacenan estos datos. Con Entity Framework, los desarrolladores de software pueden trabajar en un nivel ms alto de abstraccin cuando tratan con datos, y puede crear y mantener aplicaciones orientadas a datos con menos cdigo que en las aplicaciones tradicionales. Dado que Entity Framework es un componente de .NET Framework, las aplicaciones se pueden ejecutar en cualquier equipo en el que est instalado .NET Framework a partir de la versin 3.5 SP1. Adems permite a los desarrolladores crear aplicaciones de acceso a datos programando con un modelo de aplicaciones conceptuales en lugar de programar directamente con un esquema de almacenamiento relacional. El objetivo es reducir la cantidad de cdigo y el mantenimiento necesarios para

las aplicaciones orientadas a datos. Las aplicaciones de Entity Framework ofrecen las siguientes 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 dividir la 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 el rendimiento, pero los programadores que escriben el cdigo de la aplicacin principalmente se limitan a trabajar con el modelo lgico escribiendo consultas SQL y llamando a procedimientos almacenados. Los modelos de dominio se suelen usar como una herramienta para capturar y comunicar los requisitos de una aplicacin, con frecuencia como diagramas inertes que se ven y se explican en las primeras etapas de un proyecto, y a continuacin se abandonan. Muchos equipos de desarrolladores omiten la creacin de un modelo conceptual y comienzan especificando las tablas, columnas y claves en una base de datos relacional. Entity Framework da vida a los modelos conceptuales permitiendo a los programadores consultar las entidades y relaciones en el modelo de dominio (denominado modelo conceptual en Entity Framework) al tiempo que se basan para traducir esas operaciones en los comandos especficos del origen de datos. Esto libera a las aplicaciones de las

dependencias codificadas de forma rgida en un origen de datos determinado. El modelo conceptual, el modelo de almacenamiento y las asignaciones entre los dos se expresan en esquemas basados en XML y se definen en archivos que tienen extensiones de nombre 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 necesario sin requerir cambios en el modelo conceptual, las clases de datos o el cdigo de la aplicacin. 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 las operaciones de creacin, lectura, actualizacin y eliminacin de las entidades y relaciones del modelo conceptual en las operaciones equivalentes en el origen de datos. Entity Framework incluso permite asignar las entidades del modelo conceptual a los procedimientos almacenados en el origen de datos. Asignar objetos a datos La programacin orientada a objetos supone un desafo al interactuar con sistemas de almacenamiento de datos. Aunque la organizacin de clases suele reflejar la organizacin de las tablas de bases de datos relacionales, el ajuste no es perfecto. Varias tablas normalizadas suelen corresponder a una sola clase y las relaciones entre las clases se representan a menudo de forma diferente a las relaciones entre tablas. Por ejemplo, para representar el cliente de un pedido de ventas, una clase Order podra utilizar una propiedad que contiene una referencia a una instancia de una clase Customer, mientras que una fila de la tabla Order en una base de datos contiene una columna de clave externa con un valor que corresponde a un valor de clave principal en la tabla Customer (o conjunto de columnas). Una clase Customer podra tener una propiedad denominada Orders que contuviera una coleccin de instancias de la clase Order, mientras que la tabla Customer en una base de datos no tiene ninguna columna comparable.Entity Framework proporciona a los desarrolladores de software la flexibilidad para representar las relaciones de esta manera, o para modelar ms estrechamente las relaciones tal como se representan en la base de datos Las soluciones existentes han intentado cubrir este hueco, que se suele denominar "desigualdad de impedancia", asignando nicamente clases y propiedades orientadas a

objetos a las tablas y columnas relacionales. En lugar de seguir este enfoque tradicional, Entity Framework asigna las tablas relacionales, columnas y restricciones FOREIGN KEY de los modelos lgicos a las entidades y relaciones de los modelos conceptuales. Esto permite una mayor flexibilidad al definir los objetos y optimizar el modelo lgico. Las herramientas de Entity Data Model generan clases de datos extensibles segn el modelo conceptual. Se trata de clases parciales que se pueden extender con miembros adicionales que el programador agrega. De forma predeterminada, las clases que se generan para un modelo conceptual determinado derivan de las clases base que proporcionan servicios para materializar las entidades como objetos y para realizar un seguimiento de los cambios y guardarlos. Los desarrolladores pueden utilizar estas clases para trabajar con las entidades y relaciones como objetos relacionados mediante asociaciones. Los desarrolladores tambin pueden personalizar las clases que se generan para un modelo conceptual. Para obtener ms informacin, Obtener acceso a los datos de entidad y cambiarlos Como algo ms que otra solucin de asignacin objeto-relacional, Entity Framework trata fundamentalmente de permitir que las aplicaciones obtengan acceso y cambien los datos que estn representados como entidades y relaciones en el modelo conceptual. Entity Framework usa la informacin de los archivos del modelo y de asignacin para traducir las consultas de objeto con los tipos de entidad que se representan en el modelo conceptual en consultas especficas del origen de datos. Los resultados de la consulta se materializan en objetos que Entity Framework administra. Entity Framework proporciona las 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 proveedor administra las conexiones, traduce las consultas de entidad en consultas especficas del origen de datos y devuelve un lector de datos que Entity Framework usa para materializar los datos de la entidad en los objetos. Cuando no se requiere la materializacin de los objetos, el proveedor de EntityClient tambin se puede utilizar como un proveedor de datos ADO.NET estndar habilitando las aplicaciones para ejecutar consultas Entity SQL y usar el lector de datos de solo lectura devuelto

El diagrama muestra la arquitectura de Entity Framework para el acceso a datos. Las herramientas de Entity Data Model pueden generar una clase derivada de ObjectContext que representa el contenedor de entidades definido en el modelo conceptual. Este contexto del objeto proporciona los medios para realizar el seguimiento de los cambios y administrar las identidades, la simultaneidad y las relaciones. Esta clase tambin expone un mtodo SaveChanges que escribe las inserciones, actualizaciones y eliminaciones en el origen de datos. Al igual que las consultas, estas modificaciones son realizadas bien por los comandos que el sistema genera automticamente o bien por los procedimientos almacenados que el programador especifica. Consideraciones generales de seguridad Las consideraciones de seguridad siguientes se aplican a todas las aplicaciones que utilizan 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 del usuario se pasa al servidor a travs de las bibliotecas de red del origen de datos subyacente. 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 tienen acceso a los datos a travs de una red pblica, la aplicacin debera establecer una

conexin cifrada al origen de datos para aumentar la seguridad. Para obtener ms informacin, consulte la documentacin relacionada con la seguridad correspondiente al origen de datos. Para un origen de datos de SQL Server, vea Cifrar las conexiones a SQL Server. Proteger la cadena de conexin. La proteccin del acceso al origen de datos es uno de los objetivos ms importantes a la hora de proteger una aplicacin. Una cadena de conexin presenta una vulnerabilidad potencial si no se protege o si se construye incorrectamente. Al almacenar la informacin de conexin en texto sin formato o conservarla en la memoria, se pone en riesgo todo el sistema. A continuacin se enumeran mtodos recomendados para proteger las cadenas de 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

HOW TO CLUSTER MYSQL


El trmino Clster en Bases de Datos significa procesamiento paralelo, es decir como clientes nos conectamos a un servidor qu fsica y lgicamente est distribuido en varias PCs , aprovechando el performance de todas en conjunto como una sola mquina, esto es posible ya que el procesamiento se distribuye teniendo la administracin, las bases de datos y el servicio en nodos diferentes. Hay que distinguir ciertos conceptos, en muchos contextos, el trmino "nodo" se usa para indicar una mquina, pero cuando se discute MySQL Clster significa un proceso. Puede haber cualquier nmero de nodos en una mquina, para los que se usa el trmino mquina clster. MySQL Clster es una tecnologa que permite clustering de bases de datos en memoria en un entorno de no comparticin. La arquitectura de no comparticin permite que el sistema funcione con hardware barato, y sin ningn requerimiento especial de hardware o software. Tampoco tienen ningn punto nico de fallo porque cada componente tiene su propia memoria y disco. Hay tres tipos de nodos clster, y en una configuracin MySQL Clster mnima, al menos habr 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.

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 e inicializar los enlaces de comunicacin individual entre los nodos. MySQL Clster est diseado con la intencin que los nodos de almacenamiento son homogneos en trminos de procesador, espacio de memoria, y ancho de banda. Adems, para proporcionar un punto nico de configuracin, todos los datos de configuracin del clster entero se guardan en un nico fichero de configuracin. El servidor de administracin (nodo MGM) administra el fichero de configuracin del clster y el log. Cada nodo en el clster recibe los datos de configuracin del servidor de administracin, y necesita una forma de determinar dnde reside el servidor de administracin. Cuando ocurren eventos interesantes en los nodos de datos, los nodos transfieren informacin acerca de estos eventos al servidor de administracin, que guarda la 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 redes Una de las ventajas de MySQL Clster es que puede ejecutarse en hardware normal sin ningn requerimiento especial a parte de grandes cantidades de RAM, debido al hecho que todos los datos se almacenan en memoria Naturalmente, CPUs mltiples y ms rpidas mejoran el rendimiento. Los requerimientos de memoria para procesos clster son relativamente pequeos. Los requerimientos de software para Clster son modestos. Los sistemas operativos de las mquinas no requieren ningn modulo no usual, servicios, aplicaciones o configuracin extraa para soportar MySQL Clster. Para Mac OS X o Solaris, la instalacin estndar es suficiente. Para Linux, una instalacin estndar debe ser todo lo necesario.

Para una comunicacin entre nodos, el clster soporta red TCP/IP en cualquier topologa estndar, y como mnimo se espera una red 100 Mbps Ethernet, ms un switch, hub, o router para proporcionar conectividad de red al clster entero. Recomendamos que MySQL Clster se ejecute en su subred que no est compartida con mquinas no-clster por 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.

INSTALACION Y CONFIGURACION DE CLUSTER

192.168.1.5

192.168.1.9

192.168.1.6

192.168.1.4

Todos los ordenadores tienen instalado sistema operativo Linux

Instalacin de Nodo de Administracin: (MGM NODE):


1234Descargar archivo mysql-cluster-gpl-7.2.6-linux2.6-i686.tar Descomprimir archivo Ubicarse en el directorio del archivo recin descompreso 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 lucir de la siguiente manera:

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.6i686.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 muy largas #mv /usr/local/ mysql-cluster-gpl-7.2.6-linux2.6-i686 /usr/local/mysql

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 el encargado de dictar la direccin

Instalacin de nodo Mysql


1- 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.tar 2- Renombrar directorio # mv /usr/local/mysql-cluster-gpl-7.0.15-linux-i686-glibc23.tar.gz /usr/local/mysql 3- Agregar usuario y grupo mysql # groupadd mysql

# 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 de ejecucin # cp support-files/mysql.server /etc/init.d/mysql # chmod +x /etc/init.d/mysql ARRANCADO DE CLUSTER El 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

4- Verificar si en el nodo de administracin aparecen conectados los nodos de datos y mysql Iniciando conexiones con nodos de datos

Nodos de datos conectados

Nodo Mysql Conectado