martes, 4 de octubre de 2016

Data Mining paso a paso - Visual Studio - Excel

En lo siguientes vídeos presento dos ejemplos sencillos para implementar un modelo de minería de datos, uno utilizando Visual Studio y otro con MS Excel.

1. Ejemplo Minería de Datos con Visual Studio, implementando un proyecto de Analysis Services, utilizando los datos de BikeBuyer de los datos de ejemplo de Adventure Works.



2. Ejemplo de Minería de Datos con MS Excel con el Addin Data Mining pre instalado, y teniendo disponible el servicio de Analysis Services en el equipo, se utilizan los datos de BikeBuyer de los datos de ejemplo de Adventure Works.



martes, 19 de julio de 2016

Migración LOB BasicFile a SecureFile

En este post se presenta un ejemplo sencillo del proceso de migración de BasicFile a SecureFile.

1.       Creación de la tabla destino y definición de los objetos a trabajar en este ejemplo guía

a.       Definición de la Tabla Origen BasicFile

CREATE TABLE BASICFILE_TAB (
  ID         NUMBER PRIMARY KEY,
  CLOB_DATA  CLOB
)
LOB(CLOB_DATA) STORE AS BASICFILE BASICFILE_LOB;

b.      Creación de la Tabla destino SecureFile

CREATE TABLE SECUREFILE_TAB (
  ID         NUMBER NOT NULL,
  CLOB_DATA  CLOB
)
LOB(CLOB_DATA) STORE AS SECUREFILE SECUREFILE_LOB (
  DEDUPLICATE COMPRESS MEDIUM
);


c.       A continuación, se presenta la definición resumen de las dos tablas:

SELECT OWNER, TABLE_NAME, COLUMN_NAME, SEGMENT_NAME, TABLESPACE_NAME, COMPRESSION, DEDUPLICATION, SECUREFILE
FROM ALL_LOBS WHERE TABLE_NAME IN ('SECUREFILE_TAB','BASICFILE_TAB');



d.      Se insertan datos en la tabla origen:

DECLARE
  l_clob CLOB := RPAD('X', 10000, 'X');
BEGIN
  FOR i IN 1 .. 1000 LOOP
    INSERT INTO BASICFILE_TAB VALUES (i, l_clob);
  END LOOP;
  COMMIT;
END;

e.      Revisamos el tamaño de las tablas en KB:

SELECT SEGMENT_NAME, BYTES/1024
FROM   USER_SEGMENTS
WHERE  SEGMENT_NAME IN ('BASICFILE_LOB','SECUREFILE_LOB');


2.       Se inicia la redefinición de tablas, donde se mapean los campos de las tablas:

BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE ('JMENDOZA', 'BASICFILE_TAB', 'SECUREFILE_TAB', 'ID ID, CLOB_DATA CLOB_DATA');
END;

Revisamos el tamaño de las tablas en KB, luego de la redefinición, que se observa que se hizo la copia de los datos de la tabla origen (BASICFILE) a la tabla destino (SECUREFILE), se redujo significativamente el espacio gracias a las propiedades definidas Deduplicate y Compression:

SELECT SEGMENT_NAME, BYTES/1024
FROM   USER_SEGMENTS
WHERE  SEGMENT_NAME IN ('BASICFILE_LOB','SECUREFILE_LOB');


3.       El siguiente paso es copiar las dependencias de la tabla origen:

DECLARE
ERROR_COUNT INTEGER := 0;
BEGIN
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS ('JMENDOZA', 'BASICFILE_TAB', 'SECUREFILE_TAB', 1, TRUE, TRUE, TRUE, FALSE, ERROR_COUNT);
END;

4.       Fin de la redefinición, se intercambian los nombres de las tablas, luego de este paso la tabla BASICFILE_TAB estará migrada, tendrá los datos y la definición de SecureFile:

EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE ('JMENDOZA', 'BASICFILE_TAB', 'SECUREFILE_TAB');

SELECT OWNER, TABLE_NAME, COLUMN_NAME, SEGMENT_NAME, TABLESPACE_NAME, COMPRESSION, DEDUPLICATION, SECUREFILE
FROM ALL_LOBS WHERE TABLE_NAME IN ('SECUREFILE_TAB','BASICFILE_TAB');


5.       Teniendo ya migrada nuestra tabla, podemos eliminar la tabla auxiliar:

DROP TABLE SECUREFILE_TAB;


viernes, 15 de julio de 2016

LOB BasicFile vs SecureFile


Desde la versión de base de datos Oracle 8i se definieron los tipos de datos LOB (Large Object Binary) que permite guardar datos desestructurados. Como opción de mejora en el rendimiento y ahorro de espacio en disco desde la versión 11g R1 se dispone de un nuevo tipo de almacenamiento para este tipo de dato, SecureFile.

Para cambiar el tipo de almacenamiento es necesario realizar una migración (proceso que mostraré de manera sencilla en un siguiente post).

LOB (NombreColumnaLOB) STORE AS [SECUREFILE | BASICFILE]
(
       OpcionesColumnaLOB
);

Mejoras en el rendimiento:
  • Mejora en caché: El SecureFile tiene un caché de escritura de 4 Mb, lo que mejora la velocidad de escritura de LOBs, cuando no se use esta opción de Cache Oracle 11g utiliza shared_io_pool para las operaciones de SecureFile.
  • LOB Centric Network Protocol: Securefiles tienen un nuevo protocolo TNS que permite rápida transmisión de datos LOB, mejorando el rendimiento de lectura y escritura.
  • Baja fragmentación: Oracle SecureFile utiliza Chunks continuos en disco (paginas dentro de un segmento) para reducir la fragmentación y de esta manera mejorar la velocidad de las lecturas físicas.

Requerimientos
  • Desde Oracle DB 11.1.0.0.0
  • Los tablespace de la columna LOB con SecureFiles sera ASSM (Automatic Segment Space Management)
  • Para el uso de Data Compression y Deduplication se requiere la licencia Oracle Advance Compression Option de Oracle Enterprise Edition.

Configuración

Se debe revisar la configuración en el motor de base de datos con el siguiente comando:

(SELECT * FROM V$PARAMETER WHERE NAME = 'db_securefile';)

Las posibles opciones a encontrar son las siguientes:

VALOR
EFECTO
PERMITTED
Es el valor por defecto, indica que los LOBs pueden ser creados con SecureFile
ALWAYS
Asegura que todos los LOBs serán de modo SecureFile asi no se especifique, de esta manera será un valor por defecto, teniendo en cuenta que se requiere Tablespace ASSM
PREFERRED
Los campos LOB son creados por defecto como SecureFile (Oracle 12c)
NEVER
Este valor define que no se pueda usar SecureFile, inclusive si se especifica en el momento de la creación del LOB
IGNORE
Todas las cláusulas de almacenamiento y la de SecureFile son ignoradas


BasicFile Vs SecureFile 

A continuación se presenta un ejemplo sencillo para comparar los dos tipos de almacenamiento:
·         Definición de tablas: Se crean 3 tablas para el ejercicio
o   BASIC_TAB: Tabla con almacenamiento BasicFile
o   DEDUP_TAB: Tabla con almacenamiento SecureFile y Deduplicate
o   DEDUCOMP_TAB: Tabla con almacenamiento SecureFile, Deduplicate y Compress

CREATE TABLE BASIC_TAB (
  id         NUMBER,
  clob_data  CLOB
)
LOB(clob_data) STORE AS BASICFILE BASIC_LOB;

CREATE TABLE DEDUP_TAB (
  id         NUMBER,
  clob_data  CLOB
)
LOB(clob_data) STORE AS SECUREFILE DEDUP_LOB(
  DEDUPLICATE
);

CREATE TABLE DEDUCOMP_TAB (
  id         NUMBER,
  clob_data  CLOB
)
LOB(clob_data) STORE AS SECUREFILE DEDUCOMP_LOB (
  DEDUPLICATE COMPRESS HIGH
);

·         En este paso se inserta la misma cantidad de datos en las 3 tablas:

DECLARE
  v_clob CLOB := RPAD('J', 10000, 'J');
BEGIN
  FOR i IN 1 .. 10000 LOOP
    INSERT INTO DEDUP_TAB VALUES (i, v_clob);
    INSERT INTO BASIC_TAB VALUES (i, v_clob);
    INSERT INTO DEDUCOMP_TAB VALUES (i, v_clob);
  END LOOP;
END;

En este proceso de inserción el resumen de duración fue:

  • BASIC_TAB: 19.765 segundos
  • DEDUP_TAB: 6.047 segundos
  • DECUCOMP_TAB: 4.647 segundos


·        Para terminar comparamos el tamaño de los segmentos de cada tabla con la siguiente consulta, donde podemos observar la disminución de tamaño en disco para cada caso:

SELECT SEGMENT_NAME, BYTES/1024 KB
FROM   USER_SEGMENTS
WHERE  SEGMENT_NAME IN ('DEDUP_LOB', 'DEDUCOMP_LOB','BASIC_LOB');




jueves, 19 de noviembre de 2015

Instalación Oracle Database 12c en Windows 10

En esta nueva entrada voy a presentar breve mente la instalación de la base de datos Oracle 12c en Windows 10.

Antes que todo debemos realizar la respectiva descarga del instalador de la pagina oficial de Oracle, buscando la versión 12c, y proceder a descargar los dos archivos comprimidos, como también la herramienta Sql Developer que es la interfaz gráfica para la base de datos.


Unas vez tengamos los archivos de base de datos, realizamos la extracción del archivo winx64_12102_database_1of2.zip.


Y luego hacemos la extracción de los datos del archivo winx64_12102_database_2of2.zip en la carpeta creada con el primer archivo (\stage\Components), de esta manera tendremos completos los datos para realizar la instalación.

Iniciamos la instalación ejecutando el archivo setup.exe (Ejecutar como Administrador).



Nos aparece la interfaz de instalación, en este primer paso desactivamos la opción de Oracle Support, dando clic luego en "Si" al mensaje de advertencia que aparecerá.



El siguiente paso es definir el tipo de instalación que vamos a realizar, en este caso Crear y configurar base de datos.

El tercer paso es Clase de Sistema, para el cual seleccionamos Clase Escritorio.


En el siguiente paso es donde se definen las credenciales de conexión a la base de datos, para lo cual elegimos la segunda opción Crear Nuevo Usuario de Windows, especificando el nombre de usuario y contraseña, esta cuenta sera la utilizada para la ejecución de los servicios y es preferible que no tenga privilegios de administración por seguridad.


Luego es necesario definir la ruta donde se realizara la instalación de la base de datos, solo sera necesario cambiar el campo de Directorio Base de Oracle, y los dos campos siguientes se actualizaran automáticamente. También debemos definir el Nombre de la Base de Datos Global y contraseña, por ejemplo como se ve en la siguiente imagen, que sera la contraseña para el usuario SYS.


Damos clic en el botón siguiente y saldrá un mensaje de advertencia, si es el caso, que nos indica que la contraseña definida no cumple con los estándares recomendados por Oracle, damos clic en Si para continuar con la instalación.


En este paso se realiza una validación de los requisitos mínimos de instalación.


Si se cumplen todos los requisitos de instalación, nos presentara un resumen del análisis, damos clic en el botón Instalar.


Luego de alcanzar cerca del 80% de la instalación nos aparecerá una ventana con los datos generales de configuración, donde ademas podremos editar las contraseñas de los usuarios del motor de base de datos si lo deseamos, damos clic en aceptar para que termine el proceso de instalación.


Una vez termine la instalación nos presenta esta información indicando que se termino el proceso y esta lista la base de datos, damos clic en Cerrar.


Ahora procedemos a extraer los datos del archivo Sql Developer, esta herramienta funciona directamente donde hagamos la extracción, así de elegimos el lugar donde queremos que queden los archivos de esta herramienta.


Para iniciar la herramienta ejecutamos el archivo sqldeveloper.exe, donde vamos a crear la conexión a la base de datos que acabamos de instalar, para esto damos clic en el botón + de color verde ubicado en la esquina superior izquierda para crear una nueva conexión.


Nos aparecerá una ventana de configuración, donde especificaremos los datos de conexión como aparece en la siguiente imagen, definimos un Nombre para la conexión, en primera instancia nos vamos a conectar con el usuario SYS y con contraseña definida en la instalación del motor de base de datos, Nombre de Host será Localhost, puerto 1522 y SID será orcl tal como se definió en la instalación, si todo esta bien nos podremos conectar sin problemas, dando clic en Conectar.


Luego procederemos a crear los usuario que necesitemos con los privilegios necesarios, evitando trabajar con el usuario SYS. Para esto damos clic derecho en Otros Usuarios y luego en la opción Crear Usuario, tal como se ve en la siguiente imagen.


Con estos pasos tendremos ya configurado el motor de base de dato Oracle 12c y lista la herramienta Sql Developer para iniciar el trabajo de base de datos.