April 12, 2016

No Comments

¿Qué es el Big Data?

Hoy en día y debido a los grandes avances en tecnología y la gran cantidad de personas que hacemos uso de ella, es una realidad que generamos una cantidad infinita de información que debe ser almacenada en algún lugar para poder hacer uso de ella.

Este nuevo concepto aparece cuando tenemos un volumen de datos de un petabyte, es decir, un millón de gigabytes de información, sin embargo, para que estos datos sean útiles y nos aporten conocimiento, es necesario analizarlos y darles el tratamiento adecuado para que sean útiles y el objetivo principal, sea fácil acceder a ellos en el momento que sea necesario.

 

 

Lo que vuelve interesante el concepto es la explotación que le podemos dar a la información ya que el análisis del big data puede proporcionar oportunidades a sectores tradicionales como el transporte, la salud o la fabricación, y puede mejorar la investigación y acelerar la innovación, además de influir en la productividad.

 

Existen 5 tipos de big data que son clasificados así debido al uso de la información:

 

  • Contenido Web y Social: En este apartado se encuentra toda la información que es obtenida de redes sociales, como: Facebook, Twitter, LinkedIn, etc.

     

  • Dispositivo a dispositivo: Se refiere a las tecnologías que permiten conectarse a otros dispositivos como sensores, medidores, etc., que traducen los eventos que captan en información significativa.

     

     

  • Datos de transacciones: Incluye los registros de facturación, de llamadas, etc.

     

  • Biométricos: Se refiere a toda la información biométrica en la que se incluyen huellas digitales, reconocimiento facial y genético, etc.

     

     

  • Datos generados por los humanos: Aquí se incluye toda la información personal, correos electrónicos, historiales médicos, documentos electrónicos, etc.

 

A continuación mostramos una lista de decisiones a tomar en cuenta para la aplicación de una solución de big data:

 

  • Análisis: Distinguir si la información se analizará en tiempo real o se organiza de tal manera que pueda analizarse posteriormente, es muy importante esta decisión, ya que afecta a otras como hardware, software, frecuencia de datos esperada, etc.

     

  • Metodologías de procesamiento: La elección de esta metodología ayuda a identificar las herramientas y técnicas apropiadas para nuestra solución.

     

  • Frecuencia y tamaño de los datos: La cantidad de información que se espera y con qué frecuencia llega, así como el tamaño de la misma, lo que nos ayudará a determinar el mecanismo y formato de almacenamiento.

     

  • Formato de la información: No será lo mismo planear nuestra arquitectura de big data para una tienda de música que para manejo de historiales clínicos.

     

  • Origen de datos: Identificar los orígenes de datos ayudará a determinar el ámbito desde una perspectiva empresarial

 

  • Consumidores de datos: Identificar a los consumidores nos da la ventaja de anticiparnos a detalles técnicos en nuestra arquitectura.

 

  • Hardware: Es una de los análisis más complicados y el que no se puede determinar si no tenemos claros los puntos anteriores, aquí se definen las limitaciones y el alcance que tendrá nuestra solución.

     

 

April 12, 2016

No Comments

CREAR JOBS EN SQL SERVER

En este breve tutorial realizaremos un pequeño ejemplo de los JOB’s en SQL para eso debemos conocer primero el significado de Job.

En SQL Server existe la posibilidad de automatizar tareas a través de proceso llamado Jobs el cual tiene un parecido a realizar una tarea programada en Windows en donde se pueden especificar los pasos y controlarlos.

Las ventajas de los Jobs es que guardan las modificaciones de la base de datos ya que todas las operaciones que se realizas sobre los datos que son usados para recuperación o restauración de una base de datos.

Resumiendo esto se puede programar una tarea que se ejecute a cierta hora del día y ejecute un proceso o sentencia SQL en la mayoría de los casos esto se usa para realizar BackUp a las tablas.

Para este ejemplo realizaremos un Job para ejecutar un SELECT a una hora determinada del día.

 

Pasos

Iniciamos SQL Server.

 

Al tener ejecutando SQL Server podemos apreciar del lado izquierdo el menú con las bases de datos disponibles así como la administración de seguridad etc. En la parte inferior de las opciones encontramos SQL Server Agent

Que en la mayoría de los casos esta deshabilitado. Para habilitarlo damos click derecho sobre el SQL Server Agent y seleccionamos Start (Iniciar) donde nos saldrá el siguiente mensaje que seleccionaremos la opción de Yes (Si)

 

Ya tendremos acceso a las opciones del agente y entre ellas la opción de Jobs

El siguiente paso es dar click derecho sobre la carpeta Jobs y seleccionar New Job en esta sección se ingresa el nombre del trabajo , el propietario , Categoría que sirve por si se tiene muchos Jobs en un mismo servidor se pueden agrupar para después filtrarlo. En mi caso creare un Job con el nombre Example sin categorizar y con mi usuario.

El siguiente paso es ir a Steps (Pasos) que se encuentra en el menú del lado izquierdo

En esta sección crearemos el paso a ejercer por nuestro Job al dar click en Add tendremos la siguiente ventana

En este caso se proporciona el nombre del paso así como lo que se ejecutara si es una sentencia Trans-SQL o un comando de powershell etc, así como la base de datos a la cual se le ejecutara dicha acción yo seleccionare la de NorthWind y en la sección de Command se proporciona el script a ejecutar que en mi caso es un simple SELECT a la tabla de Employees pero se puede cargar un TXT con las sentencias que deseamos ejecutar

Antes de terminar este paso nos dirigimos a la pestaña de advanced (Avanzadas) donde se le indica que paso seguir después de ejecutar el primer paso como por ejemplo de indicamos que sigua con el siguiente paso o salir del trabajo y notificar que fue concluido, al igual si el paso llegara a fallar se puede indicar que hacer. Y en la parte de output file se indica el archivo de salida de nuestro paso ya concluido aquí seleccionaremos el lugar donde se almacenara el resultado.

Para este caso lo almacenare en la carpeta de Project con el nombre de TestSelect

El último paso es programar la ejecución del Job y para eso damos click sobre la opción Schedules (Programación) donde nos pedirá el nombre del Schedule así como la recurrencia del mismo, la frecuencia, la hora de ejecución , duración.

Y listo tenemos nuestro Job listo para funcionar.

 

Resultado

En punto de las 04:15:17 Pm que se programó el Job obtuvimos el archivo con el resultado de nuestra prueba que es el siguiente

March 23, 2016

No Comments

CTE’S RECURSIVO EN SQL PARA PRINCIPIANTES

Este es el complemento del artículo anterior sobre los CTE en este conoceremos lo que son los Common Table Expressions Recursive. (expresión de la tabla común) donde los resultados del conjunto son temporales donde se puede hacer la referencia el ABC como son SELECT, UPDATE, DELETE, INSERT o también puede crear una vista dentro del CTE.

Una de las ventajas del CTE es que es una sentencia que puede ser no recursiva o recursiva lo cual muchas veces nos ayuda mucho al tratar con ciertos registros.

Estructura.

El CTE se define con una clausula WITH Antes de la consulta principal ya sea un SELECT o INSERT por ejemplo. La cláusula WITH puede incluir uno o más CTE’S

WITH <Common_Table_Expression>

<common_Table_Expression>

Cte_name [ (Column_name [….])]

AS(cte_query)

 

Creación de CTE recursivo.

Esto se refiere que no hace referencia a si misma dentro del CTE.

Para nuestro ejemplo usaremos una tabla que contiene la estructura recursiva simulando archivos dentro de archivos que se llama FolderFromUsers

 

 

En la tabla existe la columna Id que se genera al insertar un registro y la columna Parent que identifica a que carpeta padre pertenece.

 

Con esta consulta obtendremos la jerarquía de los folders según el usuario.

WITH
Folder_CTE
AS (

SELECT
Id, Parent, UserClient, Name
as
NombreCarpeta,
Year
as AnioCreacion,
Month
as MesCreacion

FROM
[MGCSDB_DEV].[dbo].[FolderFromUsers]

WHERE
Parent
IS
NOT
NULL
AND
UserClient
=
‘758d19d3-dd5b-46f4-8e66-c06fd280179e’

UNION
ALL

SELECT
e.Id, e.Parent, e.UserClient, e.Name
as
NombreCarpeta, e.Year
as
AnioCreacion, e.Month
as
MesCreacion

FROM
[MGCSDB_DEV].[dbo].[FolderFromUsers]
e

INNER
JOIN
Folder_CTE
ecte
ON
ecte.Id = e.Parent

)

SELECT
*

FROM
Folder_CTE

 

Donde en esta sección se identifica una unión de la misma tabla para realizar una recursividad donde el Id se une con el parent Id buscando la jerarquía que le corresponde.

SELECT
Id, Parent, UserClient, Name
as
NombreCarpeta,
Year
as AnioCreacion,
Month
as MesCreacion

FROM
[MGCSDB_DEV].[dbo].[FolderFromUsers]

WHERE
Parent
IS
NOT
NULL
AND
UserClient
=
‘758d19d3-dd5b-46f4-8e66-c06fd280179e’

UNION
ALL

SELECT
e.Id, e.Parent, e.UserClient, e.Name
as
NombreCarpeta, e.Year
as
AnioCreacion, e.Month
as
MesCreacion

FROM
[MGCSDB_DEV].[dbo].[FolderFromUsers]
e

INNER
JOIN
Folder_CTE
ecte
ON
ecte.Id = e.Parent

 

En la parte de abajo se manda a llamar la tabla recursiva que en este caso se declaro como Folder_CTE

)

SELECT
*

FROM
Folder_CTE

 

 

Esto es el resultado. Donde se puede apreciar que el registro 16 es el padre y de ahí se desprende el registro 17 que se repite dos veces con sus respectivos hijos.

 

October 29, 2015

No Comments

Mejoras SQL Server 2016

Actualmente se encuentran disponibles versiones preliminares de SQL Server 2016 y es que su lanzamiento promete debido a las grandes mejoras,  las cuales están orientadas a mejorar el rendimiento empresarial, la estabilidad, análisis de datos, etc.

Algunas de estas son:

 

  • Soporte nativo de JSON:

 

Lo que nos permitirá manipular datos en formato JSON mediante sentencias, lo que permitirá ampliar la comunicación entre la aplicación y los servicios Web.

 

  • Tablas en memoria:

 

Esta característica ha sido mejorada notablemente en esta versión ya que es posible la carga de datos de manera óptima, a alta velocidad y sin problemas por volumen de datos, esto había sido una complejidad en versiones anteriores, la diferencia es que ahora se integran un conjunto de verificaciones, restricciones únicas y paralelismo para lograrlo.

 

  • Mejoras en AlwaysOn:

 

Cuenta con un mecanismo más avanzado con replicas síncronas múltiples, para mayor disponibilidad de la información, fácil acceso y recuperación de información.

 

  • Polibase:

 

Permite consultar datos semi-estructurados y unirse a los resultados con los conjuntos de datos relacionales almacenados en SQL Server.

 

Polibase está optimizado para cargas de trabajo de almacenamiento de datos, destinada a escenarios de consultas analíticas y almacenamiento en la nube.

 

  • Seguridad:

 

Tiene un nuevo sistema de cifrado que a través del uso de una biblioteca de cliente mejorada que mantiene los datos de manera encriptada, ya sea en tránsito, en reposo y mientras el dato exista en la base.

 

  • Backups más rápidos:

 

Las restauraciones ahora serán más rápidas para recuperarse ante un desastre, amenaza de pérdida o robo de información, pudiendo hacer copias y restauraciones en Azure de bases de datos locales.

 

 

October 29, 2015

No Comments

Consultas espaciales en SQL Server

Una consulta espacial se realiza mediante un modelo de datos geográfico en donde se almacena una abstracción del mundo real para realizar el despliegue de mapas, consultas, edición y análisis.

A partir de la versión SQL Server 2008 tenemos la posibilidad de almacenar y manipular información espacial, con esto es posible el desarrollo de sistemas de información geográfica, mejor conocido como GIS y estos son basados en el gestor de bases de datos de Microsoft.

Para manejar esta información SQL Server ofrece 2 tipos de datos: geometry y geography, los cuales permiten representar figuras geométricas como puntos, líneas, polígonos y poder agruparlos a sí mismos.

La diferencia entre estos tipos de datos es que geometry representa sus objetos en un plano cartesiano mediante las coordenadas (x, y), mientras que geography lo hace mediante coordenadas geográficas, es decir, latitud y longitud, de tal manera que con esta información podemos obtener un modelo de todo el planeta.

El tipo geometry suele utilizarse para áreas geográficas reducidas y tipo geography ofrece mayor precisión sobre áreas de gran tamaño. Para almacenar estos objetos en una tabla basta con crear una o más columnas de tipo geometry o geography.

Además, SQL Server ofrece una variedad de funciones para llevar a cabo operaciones y transformaciones entre dos o más objetos y devolver valores escalares como el área o la longitud que existe de una distancia a otra en el mapa.

Ejemplo:

Para crear una tabla que funcione para almacenar un polígono:

CREATE TABLE Coordenadas

{

ID INT IDENTITY (1, 1) NOT NULL,

NOMBRE VARCHAR (100) NOT NULL,

GEOM GEOMETRY NOT NULL

}

 

Posteriormente generamos un polígono y lo insertamos en la tabla:

 

DECLARE @poligono1 geometry

 

SET @poligono1 = ‘POLYGON ((10 10, 40 10, 40 40, 10 40, 10 10))’

 

INSERT INTO Coordenadas (NOMBRE, GEOM) VALUES (‘figura1′,’@poligono1′)

 

De esta manera podemos generar polígonos y realizar acciones sobre ellos.