martes, 27 de septiembre de 2011

DB2 de IBM

DB2

Un poco de historia
1970: Se da el origen del DB2, y pertenece a la firma IBM.
1994:DB2 UDB (DB2 Universal Database) fue construido en base a dos productos incluidos en el DB2 de AIX, DB2 Common Server, que para propósitos generales incluía funciones avanzadas para el mercado de servidores de bases de datos, con soporte de hardware SMP y OLTP; y el DB2 Parallel Edition, que fue desarrollado para soportar aplicaciones de gran escala, como Data Warehousing y Data Mining.

Características
Permite el manejo de objetos grandes (hasta 2 GB), la definición de datos y funciones por parte del usuario, el chequeo de integridad referencial, SQL recursivo, soporte multimedia: texto, imagenes,video, audio; queries paralelos, commit de dos fases, backup/recuperación on−line y offline.

Mediante los extensores se realiza el manejo de los datos no tradicionales.

Internet es siempre la gran estrella, con DB2 es posible acceder a los datos usando JDBC (tan potente como escribir directamente C contra la base de datos), Java y SQL (tanto el SQL estático, como complementa el SQL dinámico).

Ventajas

  1. permite agilizar el tiempo de respuestas de esta consulta
  2. Recuperación utilizando accesos de sólo índices.
  3. Predicados correlacionados.
  4. Tablas de resumen
  5. Tablas replicadas
  6. Uniones hash
  7. DB2 utiliza una combinación de seguridad externa y control interno de acceso a proteger datos.
entre otras..

Compatibilidad
Las plataformas que admite el producto son en principio OS/2, Windows NT y UNIX. Esta última versión del software del servidor, ha sido adaptado para funcionar también con OS/2 WARP, HP−UX, AIX, SCO−UNIX UE7, Windows 98, NT y Solaris.

DB2 es el sistema relacional de IBM y es una de las bases de datos relaciónales más antiguas en el mercado. Se usa principalmente en sistemas de computadoras mainframe como AS/400 y RS/6000. Esta base de datos proporciona características avanzadas y se usa principalmente para soluciones de base de datos a gran escala.


Bibliografia

jueves, 22 de septiembre de 2011

Lenguaje SQL

SQL

Es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en éstas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencilla- información de interés de una base de datos, así como también hacer cambios sobre ella.


DDL


El lenguaje de definición de datos es el que se encarga de la modificación de la estructura de los objetos de la base de datos.Incluye ordenes para modificar,borrar o definir las tablas en las que se almacenan las base de datos. Existen cuatro operaciones básicas:

  • Create

Este comando crea un objeto dentro de la base de datos. Puede ser una tabla.

Ejemplo:

CREATE OR REPLACE FUNCTION 'NOMBRE FUNCION'('PARAMETROS')  RETURNS 'TIPO RETORNO' AS $BODY$ BEGIN 'INSTRUCCIÓN SQL' --por Ejemplo: DELETE FROM con empleado WHERE id empleado = 'ANY' (ids); END; $BODY$ LANGUAGE 'plpgsql';

  • Alter

Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger etc.

Ejemplo:

ALTER TABLE 'TABLA_NOMBRE' (    ADD NUEVO_CAMPO INT UNSIGNED meel )

  • Drop

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

Ejemplo:

ALTER TABLE ''TABLA_NOMBRE''  (     DROP COLUMN ''CAMPO_NOMBRE1''  )

  • Truncate

Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE.

Ejemplo:

TRUNCATE TABLE ''TABLA_NOMBRE1''

DML

Es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.

  • Insert

Agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.

Ejemplo:

INSERT INTO ''tabla'' (''columna1'', [''columna2,... ''])
 VALUES (''valor1'', [''valor2,...''])

  • Update:

Es utilizada para modificar los valores de un conjunto de registros existentes en una tabla.

Ejemplo:

UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N';

  • Delete:

Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.

Ejemplo:

DELETE FROM My_table WHERE field2 = 'N';

martes, 20 de septiembre de 2011

Lenguaje SQL

Hola a todos

A continuación hablaremos de las sentencias mas usadas en SQL, es decir, CREATE, DROP y ALTER.

Comencemos por CREATE: como su nombre lo dice esta sentencia se utliza para la creación de bases de datos, tablas, entre otras.
  • por ahora nos concentraremos solo es esas dos opciones, bases de datos tablas.
un ejemplo de la sentencia CREATE:

create database basedatos ;
donde las palabras en negrita son palabras reservadas en el lenguaje, ojo con el punto coma del final, algunas veces no es necesario ponerlo ya que se pone como predefinido.

create table tabla (especificaciones)
donde las palabras en negrita son palabras reservadas en el lenguaje
las especificaciones son las variables contenidas en la tabla seguidas del tipo de dato que son. por ejemplo: (id (nombre de la variable) int(tipo de dto) not null, nombre (nombre variable) varchar(10) (tipo de dato, con su longitud))
las palabras not null quieres decir que al llenar esta tabla esos espacios no pueden ser nulos o marcara un error.

para escribir cual será la llave primaria o la llave foránea seria de la siguiente manera:

primary key(id), foreing key(id_foranea) references tabla2(id)


DROP: esta sentencia se utiliza para borrar la base de datos o la table previamente creada, por ejemplo vamos a borrar la base de datos y la tabla que creamos unas lineas arriba:

drop database basedatos;
drop table tabla;

donde las palabras en negritas son palabras reservadas

  • es mu importante estar seguros de que queremos borrar cualquiera de las dos a que sera imposible deshacer la sentencia DROP.
Por ultimo pero no menos importante esta la sentencia ALTER: esta sentencia nos ayuda a modificar la base de datos o tabla a creadas. se pude cambiar los nombres de la base de datos, table, o columnas o también se puede agregar o quitar algo

alter table tabla add column apellido varchar(10), drop column edad

Ahora pondre un ejemplo de una base de datos sencilla con una table

create database ejemplo;

create table personas (id int not null, nombre varchar(10) not null, edad int, primary key (id).

Con eso terminamos.



jueves, 8 de septiembre de 2011


Ruby

Ruby es un lenguaje de programación creado por: Yukihiro “matz” Matsumoto, quien mezcló partes de sus lenguajes favoritos (Perl, Smalltalk, Eiffel, Ada, y Lisp) para formar un nuevo lenguaje que incorporara tanto la programación funcional como la programación imperativa.

"Ruby es simple en apariencia, pero complejo por dentro, como el cuerpo humano". 1

Ruby es considerado un lenguaje flexible, ya que permite a sus usuarios alterarlo libremente. Las partes esenciales de Ruby pueden ser quitadas o redefinidas a placer. Se puede agregar funcionalidad a partes ya existentes. Ruby intenta no restringir al desarrollador.

Por ejemplo, la suma se realiza con el operador suma (+). Pero si prefieres usar la palabra sumar, puedes agregar un método llamadosumar a la clase Numeric que viene incorporada.



A pesar de que Ruby utiliza la puntuación muy limitadamente y se prefieren las palabras clave en inglés, se utiliza algo de puntuación para decorar el código. Ruby no necesita declaraciones de variables. Se utilizan convenciones simples para nombrar y determinar el alcance de las mismas.
  • var puede ser una variable local.
  • @var es una variable de instancia.
  • $var es una variable global.

Estos detalles mejoran la legibilidad permitiendo que el desarrollador identifique fácilmente los roles de las variables.


Ruby tiene un conjunto de otras funcionalidades entre las que se encuentran las siguientes:

  • manejo de excepciones, como Java y Python, para facilitar el manejo de errores.
  • un verdadero mark-and-sweep garbage collector para todos los objetos de Ruby. No es necesario mantener contadores de referencias en bibliotecas externas. Como dice Matz, “Esto es mejor para tu salud”.
  • escribir extenciones en C para Ruby es más fácil que hacer lo mismo para Perl o Python, con una API muy elegante para utilizar Ruby desde C. Esto incluye llamadas para embeber Ruby en otros programas, y así usarlo como lenguaje de scripting. También está disponible una interfaz SWIG.
  • puede cargar bibliotecas de extensión dinámicamente si lo permite el sistema operativo.
  • tiene manejo de hilos (threading) independiente del sistema operativo. De esta forma, tienes soporte multi-hilo en todas las plataformas en las que corre Ruby, sin importar si el sistema operativo lo soporta o no, ¡incluso en MS-DOS!
  • Ruby es fácilmente portable: se desarrolla mayoritariamente enGNU/Linux, pero corre en varios tipos de UNIX, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, etc.




Bibliografia

Matz. (12 de mayo de 200). la lista de correo Ruby-Talk. miembros de la comunidad Ruby. (s.f.). Ruby. Recuperado el 8 de septiembre de 2011, de http://www.ruby-lang.org/es/about/#fn1



martes, 6 de septiembre de 2011

MS SQL

MS SQL Server organiza los información de la base de datos en tablas de valores visibles al usuario; las operaciones de la base de datos operan sobre estas tablas. A esto se le conoce como el modelo relacional.

El lenguaje de definición de datos es aquel que permite a los usuarios del sistema de gestión de base de datos llevar a cabo las tareas de definición de las estructuras que van a almacenar los datos al igual que las funciones o procedimientos que les permitirán consultar dichos datos.

MS SQL Server utiliza Transact-SQL para administrar instancias del motor de base de datos de SQL Server, para crear y administrar objetos de base de datos, al igual que para insertar, recuperar, modificar y eliminar datos.

SQL Server utiliza el lenguaje MDX (expresiones multidimensionales) para definir, manipular y recuperar datos de objetos multidimensionales. El lenguaje DMX (extensiones de minería de datos) es utilizado para crear y trabajar con modelos de minería de datos.

Los requerimientos de software y hardware necesarios para instalas SQL Server varían dependiendo de la versión. En este caso, se muestran los requerimientos para SQL Server 2008 Standard (32-bit):

  • Procesador Pentium III (velocidad mínima de 1.0 GHz)
  • Windows XP u otra versión más reciente
  • 512 Mb de memoria RAM
  • Pantalla con resolución de 1,024x768 pixeles
  • Drive de CD o DVD
  • Mouse

“Un tipo de datos describe los elementos del dominio de una variable junto con las operaciones y relaciones que pueden establecerse entre ellos.” (Berlanga Llavori & Iñesta Quereda, 2000)

SQL Server provee un conjunto de tipos de datos que define todos los tipos de datos que se pueden utilizar, sin embargo, también es posible definir tipos de datos en Microsoft .NET Framework o Transact-SQL.

Los tipos de datos se organizan en estas categorías:

  • Numéricos exactos: bigint, int, smallint, tinyint, bit, decimal, numeric, money, smallmoney.
  • Numéricos aproximados: float, real.
  • Fecha y hora: datetime, smalldatetime.
  • Cadenas de caracteres: char, varchar, text.
  • Cadenas de caracteres Unicode: nchar, nvarchar, ntext.
  • Cadenas binarias: binary, varbinary, image.
  • Otros tipos de datos: cursor, sql_variant, table, timestamp, uniqueidentifier, xml.

El principal objetivo de los algoritmos de búsqueda es ubicar un objeto dentro de un conjunto de datos existentes y determinar la ubicación de dicho objeto dentro del conjunto. SQL cuenta dispone de varios algoritmos, entre los cuales están:

  • Árboles de Decisiones: hace predicciones basándose en las relaciones entre las columnas de entrada de un conjunto de datos. Utiliza los valores, conocidos como estados, de estas columnas para predecir los estados de una columna que se designa como elemento de predicción.
  • Reglas de Asociación: este algoritmo ayuda a identificar relaciones entre varios elementos.
  • Bayes Naive: es menos complejo que otros algoritmos de Microsoft por lo que resulta útil para generar rápidamente modelos de minería de datos para descubrir relaciones entre columnas de entrada y columnas de predicción.
  • Clústeres de Secuencia: se utiliza para explorar los datos que contienen eventos que pueden vincularse mediante rutas o secuencias; encuentra las secuencias más comunes mediante la agrupación, o agrupación en clústeres, de las secuencias que son idénticas.
  • Serie Temporal: crea modelos de minería de datos y predice columnas continuas, como ventas de productos, en un escenario de predicción.
  • Red Neuronal: crea modelos de minería de datos de clasificación y regresión mediante la generación de una red de neuronas de tipo perceptrón multicapa.

Control de concurrencia se refiere a las técnicas que se utilizan para preservar la integridad de una base de datos cuando varios usuarios se encuentran actualizando filas al mismo tiempo. Fallas en concurrencia pueden causar varios problemas e incluso destruir información valiosa en una base de datos. Estos son algunos mecanismos que utiliza SQL Server para controlar la concurrencia:

  • CONCUR_READ_ONLY: No se permite actualizar con el cursor y no se mantienen bloqueos en las filas que conforman el resultado.
  • CONCUR_UPDATABLE: Se asume que la contención en una fila es improbable pero posible. La integridad en cada fila se verifica con una marca de tiempo.
  • CONCUR_SS_SCROLL_LOCKS: Se asume que la contención en una fila es probable. La integridad de las filas se garantiza con bloqueo de filas.
  • CONCUR_SS_OPTIMISTIC_CC: Se asume que la contención en una fila es improbable pero posible. La integridad en cada fila se verifica con una marca de tiempo.
  • CONCUR_SS_OPTIMISTIC_CCVAL: Se asume que la contención en una fila es improbable pero posible. La integridad se verifica comparando la información en las filas.

En la siguiente tabla, obtenida de MSDN, se muestran las limitaciones en cuanto almacenamiento, basados en SQL Server 2005 de 32-bits.

Objeto de Motor de base de datos de SQL Server 2005

Tamaños/números máximos SQL Server 2005 (32 bits)

Tamaño de lote

65.536 * Tamaño de paquete de red

Bytes por columna de cadenas cortas

8,000

Bytes por GROUP BY y ORDER BY

8,060

Bytes por clave de índice

900

Bytes por clave externa

900

Bytes por clave principal

900

Bytes por fila

8,060

Bytes por columna varchar(max), varbinary(max), xml, text o image

2^31-1

Caracteres por columna ntext onvarchar(max)

2^30-1

Índices agrupados por tabla

1

Columnas en GROUP BY y ORDER BY

Limitado sólo por el número de bytes

Columnas o expresiones en una instrucción GROUP BY WITH CUBE o WITH ROLLUP

10

Columnas por clave de índice

16

Columnas por clave externa

16

Columnas por clave principal

16

Columnas por tabla base

1,024

Columnas por instrucción SELECT

4,096

Columnas por instrucción INSERT

1,024

Conexiones por cliente

Valor máximo de conexiones configuradas

Tamaño de la base de datos

524.258 terabytes

Bases de datos por instancia de SQL Server

32,767

Grupos de archivos por base de datos

32,767

Archivos por base de datos

32,767

Tamaño de archivo (datos)

16 terabytes

Tamaño de archivo (registro)

2 terabytes

Referencias a tabla de claves externas por tabla

253

Longitud del identificador (en caracteres)

128

Instancias por equipo

50 instancias en un servidor independiente.

25 instancias en un clúster de conmutación por error.

Longitud de una cadena que contiene instrucciones SQL (tamaño de lote)

65.536 * Tamaño de paquete de red

Bloqueos por conexión

Máximo de bloqueos por servidor

Bloqueos por instancia de SQL Server

Hasta 2.147.483.647

Niveles de procedimientos almacenados anidados

32

Subconsultas anidadas

32

Niveles de desencadenadores anidados

32

Índices no agrupados por tabla

249

Parámetros por procedimiento almacenado

2,100

Parámetros por función definida por el usuario

2,100

REFERENCES por tabla

253

Filas por tabla

Limitado por el espacio de almacenamiento disponible

Tablas por base de datos

Limitado por el número de objetos de la base de datos

Particiones por tabla o índice con particiones

1,000

Estadísticas en columnas no indizadas

2,000

Tablas por instrucción SELECT

256

Desencadenadores por tabla

Limitado por el número de objetos de la base de datos

Índices o restricciones UNIQUE por tabla

249 no agrupados y 1 agrupado

Conexiones de usuario

32,767

Índices XML

249

Bibliografía

Berlanga Llavori, R., & Iñesta Quereda, J. M. (2000). Introducción a la programación con Pascal. Castelló: Universitat Jaume.

Date, C. J. (2001). Introducción a los Sistemas de Bases de Datos. México: Pearson Educación.

Kowalski, R. (1986). Lógica, Programación e Inteligencia Artificial. Madrid: Díaz de Santos.

Microsoft. (2008). Microsoft Developer Network. Retrieved 20 de Agosto de 2011 de Microsoft SQL Server: http://msdn.microsoft.com/en-us/library/bb545450.aspx

Pons Capote, O. (2005). Introducción a las Bases de Datos. Madrid: Paraninfo.

Rob, P., & Coronel, C. (2003). Sistemas de Bases de Datos. México: Cengage Learning.