martes, 29 de noviembre de 2011

TRIGGERS

Un disparador (trigger) es un objeto que automáticamente realice una operación sobre una tabla o vista. Una acción sobre un objeto donde se definió un disparador, provoca que el disparador se ejecute. Un disparador generalmente no es considerado un objeto de aplicación; por lo tanto, los desarrolladores de base de datos generalmente no codifican los disparadores, sino que lo hacen los administradores de bases de datos. Debido a que se requiere cierta habilidad para codificar.

Un trigger define un conjunto de acciones que se ejecutan en respuesta a una operación de inserción (INSERT), actualización (UPDATE) o supresión (DELETE) sobre una tabla especificada. Cuando se ejecuta dicha operación de SQL, se dice que el trigger se activa. El trigger se puede activar antes de la operación de SQL o después de ella. Puede definir un activador mediante la sentencia CREATE TRIGGER de SQL.

Las razones para usar un trigger antes de una actualización o inserción pueden ser las siguientes:

  • Para comprobar o modificar valores antes de que se actualicen o inserten realmente en la base de datos. Esto resulta útil si tiene que transformar datos desde el modo que el usuario los ve a otro formato interno de la base de datos.
  • Para ejecutar otras operaciones que no son de base de datos codificadas en funciones definidas por el usuario.

Y las razones para usar un trigger después de una actualización o inserción pueden ser las siguientes:

  • Para actualizar datos de otras tablas. Esta función resulta útil para mantener relaciones entre datos o para conservar información de seguimiento de auditoría.
  • Para comparar con otros datos de la tabla o de otras tablas. Esta función resulta útil para asegurar la integridad de los datos cuando no resulta adecuado.
  • Para ejecutar operaciones que no son de base de datos codificadas en funciones definidas por el usuario. Esta función resulta útil para emitir alertas o para actualizar información externa a la base de datos.

Referencia:

Recuperado de la pagina de desarrollo de IBM de http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/c0007038.htm

TRANSACCIONES

Una transacción o una unidad del trabajo consiste en una o más sentencias SQL que, cuando se ejecutan, se deben considerar como una sola unidad; es decir, si una de las sentencias en la transacción falla, la transacción entera falla, y cualquier sentencia ejecutada hasta el punto de la falla se restaura a un estado previo íntegro o consistente (se hace un rollback). Una transacción termina con una sentencia COMMIT, que también significa el comienzo de una nueva transacción. La siguiente figura proporciona un ejemplo de una transacción.

En la figura, por ejemplo, usted quiere transferir 100 dólares de su cuenta de ahorros a su cuenta de cheques. La siguiente secuencia de eventos puede ser requerida para completar esa tarea:

Realizar un débito de $100 de la cuenta de ahorros y luego acreditar este monto en la cuenta de cheques.

Si la secuencia de eventos no se trata como una sola unidad de trabajo, una transacción, se imagina qué sucedería si ocurriera un apagón después de la operación de débito de la cuenta de ahorros, pero antes de que se acredite la operación en la cuenta de cheques. ¡Usted perdería $100!

Referencia:

Libro "Getting Started with DB2 Express-C" por Raul F. Chong

PROCEDIMIENTO ALMACENADO

Un procedimiento almacenado es un objeto de aplicación de base de datos que puede encapsular sentencias SQL y lógica de negocio. Mantener parte de la lógica de la aplicación del lado de la base de datos provee mejoras en la performance debido a que la cantidad de tráfico de red entre la aplicación y la base de datos se reduce drásticamente.

Adicionalmente, los procedimientos almacenados proveen una ubicación centralizada para almacenar el código, de forma tal que otras aplicaciones puedan reutilizar los mismos procedimientos almacenados. Para invocar un procedimiento almacenado, hay que utilizar la sentencia CALL. En DB2 se pueden desarrollar procedimientos almacenados en varios lenguajes, incluyendo SQL PL, Java, C/C++, CLR, OLE, y COBOL. A continuación se muestra un simple ejemplo de cómo crear e invocar un procedimiento almacenado SQL PL desde la Ventana de Comandos de DB2 o en Linux:

-db2 create procedure P1 begin end //entre el begin y el end iría el proceso que deseamos

-db2 call P1

En el ejemplo, el procedimiento P1 no tiene contenido, lo cual provoca que no realice nada. El ejemplo muestra lo fácil que es crear un procedimiento almacenado. Para desarrollar procedimientos almacenados con lógica más compleja, se recomienda el uso de IBM Data Studio, el cual incluye la opción de rastrear el código (debugger), el cual es un programa usado para probar y depurar (eliminar los errores).

SEGURIDAD EN DB2 (TEORIA)

Autenticación

Este es el proceso mediante el cual se valida la identidad del usuario. La autenticación es realizada por una componente externo a DB2 mediante un conector de seguridad entre ambos.

Autorización

En esta etapa, DB2 verifica si el usuario ya autenticado puede realizar la operación solicitada. Esta información de autorización está almacenada en el catálogo DB2 y en el archivo de configuración DBM.

El proceso de autorización consiste de privilegios, autoridades, roles y credenciales de control de acceso basado en etiquetas las cuales están almacenadas en tablas del sistema DB2 y son administradas por él mismo.

Un privilegio le permite a un usuario ejecutar un único tipo de operación contra una base de datos, como ser CREATE, UPDATE, DELETE, INSERT, etc.

Un rol permite agrupar diferentes privilegios los que pueden ser otorgados a un usuario, un grupo o a otros roles.

Una autoridad es un rol predefinido que consiste de varios privilegios.

Algunos de los privilegios en DB2 es si un usuario o grupo recibe el privilegio CONTROL, ello implica que puede además otorgar este privilegio a otro usuario o grupo.

Los roles permiten al administrador de seguridad asignar privilegios o autoridades a varios usuarios o grupos conjuntamente. En ese aspecto, los roles son parecidos a los grupos, pero están definidos dentro de DB2, y por lo tanto este hecho da algunas ventajas. Por ejemplo, los privilegios y autoridades otorgados a los roles siempre se usa al crear objetos tales como vistas o activadores, lo que no ocurre en el caso de los grupos.

Las sentencias GRANT y REVOKE son parte del estándar SQL, y son usadas para otorgar y revocar privilegios a un usuario, a un grupo o a un rol.

Existen muchos temas relacionados al tema de la seguridad pero en esta publicación lo que intente fue recopilar los mas básicos para así comprender algunas de las funciones que se usan en DB2 para mantener la integridad y seguridad de la información.

Referencia:

Libro "Getting Started with DB2 Express-C" por Raul F. Chong

IBM Data Studio

Data Studio es la principal herramienta para la administración de base de datos hechas con db2, esta herramienta no tiene costo y se puede ejecutar es los sistemas operativos Windows y Linux. Data Studio esta basada en la plataforma Eclipse por lo que si usted la conoce notara que son similares. Generalmente se trabaja en la ventana de Perspectiva Administración de base de datos o Data (Ingles) pero también se puede cambiar a la perspectiva de Java para desarrollar un programa con este lenguaje de programación. Del lado izquierdo se encuentran dos vistas:

- Explorador de Administración o Data Proyect Explorer (Ingles)

- Explorador de Proyectos de Datos o Data Source Explorer (Ingles)

La vista Data Proyect se utiliza para desarrollar scripts SQL, XQuery, procedimientos almacenados y servicios Web. Mientras que en la vista Data Source se utiliza por los administradores de bases de datos (DBA) para gestionar instancias y las bases de datos DB2. Por medio de vista se pueden usar la mayoría de las funciones que antes se utilizaban en el Control Center herramienta ya casi obsoleta de la cual hablare al final de esta publicación.

Existen dos variantes de IBM Data Studio

-Stand-alone package

-IDE package

El stand-alone es mucho menos pesado que el IDE y no permite algunos servicios como son el Data Web, ni tampoco se puede emplear para otros servicios basados en eclipse que no mencionare en este momento. Fuera de eso, la interface y capacidades que tiene son las mismas.

Las ventajas de Data Studio es que puede trabajar con otros servidores de datos y las compañías que trabajan con varios servidores de datos y que cuentan con un pequeño equipo de desarrolladores y DBA´s ahora cuentan con esta herramienta que les permite administrar todo eso.

Control Center

Antes de que existiera el Data Studio la herramienta primaria para la administración de DB2 era el Contol Centerl, el cual todavía lo podemos encontrar en Inicioàtodos los programasàIBM DB2àDB2COPY1àHerramientas de administración generalàControl Center o ejecutando el comando db2cc desde la línea de comandos.

Básicamente lo que esta herramienta te permitía era:

· Ver el sistema, instancias, bases de datos y objetos de la base de datos;

· Crear, modificar y manejar objetos de las bases de datos;

· Lanzar otras herramientas gráficas de DB2

¿QUÉ ES UNA INSTANCIA?


Al instalar el DB2 en nuestras maquinas se crea una instancia por default llamada DB2 o db2inst1 en los sistemas operativos Linux pero ¿qué son estas instancias? Básicamente una instancia es un ambiente independiente donde pueden ejecutarse aplicaciones y en este caso crearse bases de datos. Para explicar mejor esto utilizare ejemplos de IBM db2 para que se comprenda mejor.

Una de las ventajas de las instancias es que se pueden crear varias en un servidor de datos pudiéndole dar un uso diferente a cada una. A que me refiero con esto pues un ejemplo es que una instancia puede tener las bases de datos que se usan para la producción, otra para los ambientes de pruebas y otra para el ambiente de desarrollo. Las instancias son independientes una de otra por lo que cualquier operación que se realice en una de ellas, no afectara a las otras.

En DB2 si deseamos crear una nueva instancia se usa el comando db2icrt *nombre de la instancia que le queremos dar* este nombre debe ser de máximo 8 caracteres. Por ejemplo para crear una nueva instancia con el nombre myinst tenemos que ejecutar el siguiente comando:

db2icrt myinst

Una vez hecho esto en la figura se muestra una representación de cómo se ven las instancias en nuestro servidor DB2 siendo el rectángulo de la izquierda la instancia que se crea por default y el rectángulo de la derecha la instancia creada por nosotros. Noten que cada instancia cuenta con su propio puerto lo que ayuda a distinguir entre las diferentes instancias cuando nos queremos conectar de forma remota a una de nuestras bases de datos.

A continuación listare algunos comandos básicos para el uso de las instancias:

· set db2instance=myinst àesto cambia a la instancia en la que queremos trabajar y recuerden no dejar espacios antes ni después del signo igual

· db2ilist à lista las instancias en nuestro sistema

· db2start à para iniciar la instancia actual

· db2stop à para detener la instancia actual

· db2idrop à elimina una instancia

· db2 get instance à muestra la instancia actual activa

Referencia:

Libro “Getting Started With DB2 Express –C” por Raul F. Chong

APLICACIÓN PARA ACCESO A TUS DATOS DB2

Db2 mobile Database Client es una aplicación para iphone y ipad que te permite navegar, buscar y actualizar todas las bases de datos DB2 en donde gustes desde tu gadget. Esta aplicación te permitirá tener acceso completo y flexible para los servidores DB2. Esta herramienta es muy útil para los DBA y profesionales de TI que necesitan hacer consultas todo el tiempo o incluso puede ser utilizada por ejecutivos que necesiten acceso inmediato de información sobre su organización e incluso para los analistas para que puedan crear y ejecutar informes sofisticados en todo momento y a cualquier hora y todo esto gracias a que es muy sencilla de utilizar y existen tutoriales en la web muy bien detallados sobre su manejo. Al final de esta publicación colocare el link de un video tutorial por si se animan a verlo.

Según yo no existe ninguna otra aplicación para estos gadgets que te permita conectarte directamente a tus datos. Esta accede a sus servidores de tu red local o remota a través de la VPN segura de tu organización y así contar en cualquier momento con la información que es el alma de la empresa moderna.

Link de descarga de la aplicación:

http://www.apple.com/itunes/affiliates/download/?id=403457407

Link de video tutorial:

http://db2-tour.impathic.com

INTALACIÓN SENCILLA RUBY ON RAILS

Para la instalación que vamos a realizar utilizaremos un kit llamado, RailsInstaller, es básicamente un programa de instalación, el cual obtiene todos los paquetes comunes que se necesitan para que Rails funcione correctamente. Los paquetes que contiene son los siguientes:


· Ruby 1.9.2-p290

· Rails 3.1.1

· Bundler 1.0.18

· Git 1.7.6

· Sqlite 3.7.3

· TinyTDS 0.4.5

· SQL Server support 3.3.3

· DevKit

Paso1

Lo primero que debes hacer es entrar al siguiente link en donde se encuentra el RailsInstaller http://railsinstaller.org/








Paso2

Deberás descargar el kit de instalación con todos los paquetes dándole las click en el gran botón verde y seguir las instrucciones como en cualquier instalación de Windows. Al final de la instalación se te abrirá una línea de comandos en la que se te pedirá tu nombre y correo electrónico, al hacer este paso se instala un SSH key la cual no explicare en este tutorial.

Paso3

Una vez hecho lo anterior deberás ir a: InicioàTodos los programas àRailsInstalleràGit Bash los que te abrirá una línea de comandos o también conocida como Terminal la cual se usara para todo lo relacionado con Rails.

Paso4

Por último checaremos que todo se haya instalado correctamente introduciendo los siguientes comandos:

1. ruby –v à mostrara la versión de ruby que se ha instalado

2. gem –v à mostara la versión de gems instalado

3. gem install rails à este comando es para instalar correctamente rails y que el cmd lo reconozca

4. rails –v àte mostrara la versión de rails instalada

LISTO AHORA CUENTAS CON RUBY ON RAILS EN TU MAQUINA!!

lunes, 28 de noviembre de 2011

Privilegios y Roles en db2

En la consola de administrador

connect to sample --> te conectas a la base de datos que quieres dar permisos

grant createtab, bindadd, connect on database to *nombre del usuario*

createtab--> permiso para crear tabla
bindadd --> procedimientos almacenados
connect --> es por default y es para que te puedes conectar a la base de datos

-------------------------------------------------------------------------------------------------

grant select, insert, update, delete on table *la tabla en la que le quieres dar esos permisos* to *nombre del usuario*

select --> seleccionar
insert --> insertar datos
delete --> borrar

-------------------------------------------------------------------------------------------------

create role *nombre del rol* --> para crear un nuevo rol

grant role programador to *nombre de usuario*

grant createtab, bindadd, connect on database to *nombre del rol*
grant select, insert, update, delete on table *la tabla en la que le quieres dar esos permisos* to *nombre del rol*


revoke role *nombre del rol* from *nombre del usuario* --> para quitarle el rol a un usuario

-------------------------------------------------------------------------------------------------

EN LA CONSOLA DE USUARIO

connect to *nombre base de datos* user *nombre de usuario* using *el password del usuario*