domingo, 23 de septiembre de 2012

conexión de java con sql 2008 mediante el jdbc.



Para establecer una conexión de base de datos SQL Server mediante NetBeans 7.0.1 a través de JDBC habrá que seguir los siguientes pasos en un sistema operativo Windows:
1. Descargarse el driver oficial de Microsoft SQL Server JDBC desde el siguiente enlace .
2. Una vez descargado, hay que establecer en las propiedades de nuestro proyecto el driver (Libraries> Compile) y pulsar sobre añadir JAR/Carpeta.

3. Buscar el archivo 'sqljdbc.jar' y seleccionarlo.
En estos tres pasos habremos establecido nuestro driver sql server para nuestro proyecto, de manera que ya se podrá establecer la conexión contra SQL Server a través de JDBC:
1. Importar la librería java.sql.*;
2. Establecer la cadena de conexión y demás parámetros:
JAVA:
1. try {
2.           Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
3.           String  connectionUrl = "jdbc:sqlserver://localhost:1433;" +
4.             "databaseName=Northwind;user=sa;password=123456;";
5.           Connection  con = DriverManager .getConnection(connectionUrl);
6.         } catch (SQLException  e) {
7.             System .out.println("SQL Exception: "+ e.toString());
8.         } catch (ClassNotFoundException  cE) {
9.             System .out.println("Class Not Found Exception: "+ cE.toString());
10.           }
En ciertas ocasiones será necesario establecer la conexión TCP/IP de nuestro servidor SQL Server, para ello seguir las indicaciones de esta página  (son para SQL Server 2005 pero aplicables).


PORTAFOLIO

1.    Arquitectura Cliente-Servidor:
Una arquitectura es un conjunto de reglas, definiciones, términos y modelos que se emplean para producir un producto.
La arquitectura Cliente/Servidor agrupa conjuntos de elementos que efectúan procesos distribuidos y computo cooperativo.
Un servidor es un conjunto de Hardware y Software que responde a los requerimientos de un cliente.
Un cliente es un conjunto de Software y Hardware que invoca los servicios de uno o varios servidores.
Un cliente realiza peticiones a otro programa
Consta de al menos tres niveles funcionales:
 Ø  Presentación: Se refiere a la interfaz entre el usuario y el sistema. Acepta datos de entrada.
Ø  Lógica de negocio: Valida los datos, se realizan cálculos, etc.
Ø  Nivel de acceso: almacenamiento físico y extracción de los datos.
Ejemplos:
La mayoría de los servicios de Internet son tipo de cliente-servidor. La acción de visitar un sitio web requiere una arquitectura cliente-servidor, ya que el servidor web sirve las páginas web al navegador (al cliente). Al leer este artículo en Wikipedia , la computadora y el navegador web del usuario serían considerados un cliente; y las computadoras, las bases de datos, y los usos que componen Wikipedia serían considerados el servidor. Cuando el navegador web del usuario solicita un artículo particular de Wikipedia, el servidor de Wikipedia recopila toda la información a mostrar en la base de datos de Wikipedia, la articula en una página web, y la envía de nuevo al navegador web del cliente.
Otro ejemplo podría ser el funcionamiento de un juego online. Si existen dos servidores de juego, cuando un usuario lo descarga y lo instala en su computadora pasa a ser un cliente. Si tres personas juegan en un solo computador existirían dos servidores, un cliente y tres usuarios. Si cada usuario instala el juego en su propio ordenador existirían dos servidores, tres clientes y tres usuarios.


2.    Tipos de estructuras:
Ø  Cliente-Servidor Tradicional:
Se carga una sola página a la vez, y se espera la respuesta de una solicitud para responder la otra.

Ø  Arquitectura en 2 niveles:
 La arquitectura en 2 niveles se utiliza para describir los sistemas cliente/servidor en donde el cliente solicita recursos y el servidor responde directamente a la solicitud, con sus propios recursos. Esto significa que el servidor no requiere otra aplicación para proporcionar parte del servicio.

Características:
Dos capas
• El cliente maneja la interfaz de usuario y lógica de aplicación
• El servidor maneja la base de datos y lógica transaccional
Ø  Cliente-Servidor de 3 capas:
En la arquitectura en 3 niveles, existe un nivel intermediario. Esto significa que la arquitectura generalmente está compartida por:
·         Un cliente, es decir, el equipo que solicita los recursos, equipado con una interfaz de usuario (generalmente un navegador Web) para la presentación
·         El servidor de aplicaciones (también denominado software intermedio), cuya tarea es proporcionar los recursos solicitados, pero que requiere de otro servidor para hacerlo
·         El servidor de datos, que proporciona al servidor de aplicaciones los datos que requiere.

Ø  Cliente-Servidor de N capas:
En la arquitectura en 3 niveles, cada servidor (nivel 2 y 3) realiza una tarea especializada (un servicio). Por lo tanto, un servidor puede utilizar los servicios de otros servidores para proporcionar su propio servicio. Por consiguiente, la arquitectura en 3 niveles es potencialmente una arquitectura en N-niveles

Ejemplos:
• WWW
• Web-browser
• Web-server (app server)

3.    Transact-SQL:
Transact-SQL es fundamental para trabajar con SQL Server. Todas las aplicaciones que se comunican con SQL Server lo hacen enviando instrucciones Transact-SQL al servidor, independientemente de la interfaz de usuario de la aplicación.
  • Transact SQL no es CASE-SENSITIVE, es decir, no diferencia mayúsculas de minúsculas como otros lenguajes de programación como C o Java.
  • Un comentario es una aclaración que el programador incluye en el código. Son soportados 2 estilos de comentarios, el de línea simple y de multilínea, para lo cual son empleados ciertos caracters especiales como son:
    • -- Para un comentario de linea simple
    • /* ... */ Para un comentario de varias lineas
  • Un literal es un valor fijo de tipo numérico, caracter, cadena o lógico no representado por un identificador (es un valor explícito).
  • Una variable es un valor identificado por un nombre (identificador) sobre el que podemos realizar modificaciones. En Transact SQL los identificadores de variables deben comenzar por el caracter @, es decir, el nombre de una variable debe comenzar por @.Para declarar variables en Transact SQL debemos utilizar la palabra clave declare, seguido del identificador y tipo de datos de la variable.
·         Un script de Transact SQL es un conjunto de sentencias de Transact SQL en formato de texto plano que se ejecutan en un servidor de SQL Server.
·             Un script está compuesto por uno o varios lotes. Un lote delimita el alcance de las variables y sentencias del script. Dentro de un mismo script se diferencian los diferentes lotes a través de las instrucción GO.
  En ocasiones es necesario separar las sentencias en varios lotes, porque Transact SQL no permite la ejecución de ciertos comandos en el mismo lote, si bien normalmente también se utilizan los lotes para realizar separaciones lógicas dentro del script.

  


6.    Arquitectura SMP:
Una arquitectura SMP es básicamente una expansión de una arquitectura tradicional pero con la adición de varios procesadores que comparten todos los demás recursos del sistema (memoria principal, almacenamiento secundario, periféricos de entrada y salida). En esta arquitectura no se establece distinción entre los procesadores; todos son jerárquicamente iguales y pueden ejecutar tareas indistintamente. De esta característica viene el nombre de ``simétrica''.
En general una arquitectura SMP tiene un equivalente en uniprocesador, y naturalmente un sistema SMP puede ejecutar simultáneamente varios programas o aplicaciones, que normalmente podrían ejecutarse en el sistema uniprocesador, de manera independiente. Sin embargo, para el uso de aplicaciones que aprovechen los múltiples procesadores para expeditar la realización de cálculos, nos interesa que dichos procesos no sean totalmente independientes, buscando entonces que cuenten con manera de comunicarse para distribuirse información, compartir y consolidar resultados.
Ya que un sistema SMP los procesadores comparten todos los periféricos y recursos, el esquema más obvio para comunicarse en una arquitectura SMP es el uso de memoria compartida. Como el nombre lo indica, en este esquema los procesadores tienen acceso a un espacio de direcciones común; esto puede ser todo el espacio de direcciones o únicamente un área designada para memoria compartida, permitiendo a cada proceso contar con un área exclusiva para sus requerimientos.
La memoria compartida es un esquema conceptualmente simple de utilizar. Sin embargo presenta ciertas limitaciones. Una de ellas, ya que se puede tener a dos o más procesadores manipulando la misma área de memoria, es que se puede caer en inconsistencias donde un procesador espera un dato que ha sido modificado por otro. Esto también puede provocar condiciones de competencia (``race conditions'') y atoramientos (``deadlocks''), que son problemas clásicos de la sincronización de procesos, pero que no pueden dejar de tomarse en cuenta en una arquitectura SMP. Estas condiciones pueden resolverse utilizando mecanismos de sincronización de procesos, como semáforos, monitores y secciones críticas.
La limitación más importante de la arquitectura SMP, en términos del rendimiento máximo que puede alcanzarse, es la posibilidad de saturación de los buses del sistema. Ya que todos los procesadores tienen acceso al mismo bus de memoria, y en general a todos los periféricos que se encuentran comunicados comúnmente por buses, conforme se incrementa el número de procesadores se incrementa también el tráfico en dichos buses. Esto causa una saturación que finalmente termina por negar el incremento de rendimiento obtenido teniendo varios procesadores. Por esta razón una arquitectura SMP difícilmente puede escalar más allá de algunas decenas de procesadores.


7  Arquitectura MPP:
Es un tipo de arquitectura de procesamiento paralelo en que cada procesador tiene su propia memoria local pero puede también tener acceso a la memoria de otros procesadores. Está es llamada no-uniforme porque un procesador puede acceder su propia memoria local más rápido que la memoria no local (memoria que está en otro procesador o compartida entre procesadores).
MPP o procesamiento paralelo masivo (Massively Parallel Processing) es un tipo de arquitectura que usa muchas CPUs separadas corriendo en paralelo para procesar un solo programa. MPP es similar a procesamiento simétrico (SMP: Symmetric Multiprocessing), con la principal diferencia que en los sistemas SMP.

   MSMQ:
La tecnología Microsoft Message Queuing (MSMQ) permite que aplicaciones que se ejecutan en momentos distintos puedan comunicarse a través de redes y sistemas heterogéneos que podrían estar temporalmente offline. MSMQ proporciona un medio de entrega de mensajes garantizada, encaminamiento eficaz, seguridad y mensajería basada en criterios de prioridad. Se puede utilizar para implantar soluciones para escenarios de mensajería asíncrona o síncrona.
MSMQ es una herramienta de Microsoft para realizar el manejo de colas de mensajes. La misma viene con Windows NT/2000 y cuenta con una interfaz que permite escribir programas en lenguaje C o utilizando componentes COM para realizar el envío y recepción de mensajes. Utilizando estas características se desarrolló un conjunto de funciones para el manejo de mensajes que pueden ser utilizadas desde GeneXus con el generador C/SQL.

La función principal de las colas de mensajes es la de permitir la comunicación asincrónica entre procesos. Muchas veces, se tiene un proceso que invoca una rutina que lleva mucho tiempo, pero que no interesa el resultado de la misma. En la programación tradicional, el proceso llamador queda esperando a que el invocado termine para poder continuar su ejecución, aunque no se vea afectado por los resultados. La ventaja que tienen los mensajes asincrónicos es que el llamador no sabe cuando se ejecuta el proceso y además puede continuar su ejecución una vez enviado el mensaje.
MSMQ provee otras funcionalidades como ser la autenticación y el encriptado de mensajes, y el uso de transacciones externas, por ejemplo administradas por SQL Server.
  
5.    Comunicación asíncrona:
Comunicación asíncrona. Es la conexión que se establece entre el cliente y el servidor que permite la transferencia de datos no sincrónica, o sea el cliente puede realizar varias peticiones al servidor sin necesidad de esperar por la respuesta de la primera.
A diferencia, las conexiones sincrónicas solo pueden realizar una petición al servidor y hasta que esta no sea respondida no se puede realizar la siguiente.

Ventajas de la comunicación asíncrona:

El uso de las conexiones asíncronas para la transmisión de datos está justificada en gran medida por la facilidad que brinda de realizar peticiones y obtener respuestas del servidor sin necesidad de recargar la página web, esto permite que el sitio web gane en velocidad reduciendo el consumo de ancho de banda. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones.