Ir al contenido principal

Un Poco de Bases de Datos y Analisis




Un Poco de Analisis de datos

    Los tiempos cambian, y las cosas no son como las de antes y hasta la idiosincrasia de las personas cambian. La tecnología no se queda atrás, es más, avanza más rápido de lo que podemos digerir, la Internet cambio nuestro mundo y nuestra sociedad, y esto recién empieza.

    El BigData es una de la tecnologías realmente joven y que apunta a cambiar nuevamente nuestra sociedad, como lo hicieron los PC en la década de los 80', actualmente ya lo está cambiando, está creando nuevos puestos de trabajo, el estudio del mismo tiene un abanico muy amplio de nuevas y punteras tecnologías como el Machine Learning, la Inteligencia Artificial (IA) por nombrar algunas.

    Esta nueva tecnología nace por la necesidad de administrar y analizar, la gran cantidad de información que hemos estado generando desde el inicio de la computación, y esto termino de explotar con el Internet, donde las fuentes e información más importantes son todas las redes sociales que conocemos. Gracias al análisis de esta información, podemos comprender mejor nuestro pasado y el porqué sucedían o no las cosas, podemos controlar nuestro presente y tomar decisiones en tiempo real, decisiones que antes no podíamos hacer, podemos "predecir" movimientos del futuro, gracias al conocimiento y patrones de nuestro pasado, cual será la tendencia de un color para la moda, podemos deducir cuales son los gustos de las personas, y así poder preparan un plan de negocio para la próxima campaña de Navidad, o que tipo de canción del verano podría ser un éxito estás vacaciones.

    Netflix es un gran ejemplo de ello, aprovechando de los gustos de sus clientes y con los estudios pertinentes, pudieron realizar series que fueron éxitos rotundos, Amazon es otro gran ejemplo, y por supuesto Google con su navegador que nos predice y nos muestra la información mas relevante de acuerdo a nuestros gustos, y así una gran cantidad de grandes empresas que utilizan está tecnología.

    Como Analista de Datos y Diseñador de Base de Datos, es de gran importancia, a la hora de diseñar una base de Datos para nuestra empresa, o para un desarrollo de una aplicación, un proyecto de IoT y/o cualquier otro tipo de proyecto donde debemos guardar información, el que se haga un análisis previo de la información que se va a guardar y tener muy claro que queremos hacer con esos datos, aparte de tenerlos guardados. Es muy importante la elección del sistema de base de datos, dependiendo del proyecto a emprender, posiblemente necesitemos una Base de Datos Relacional, por ejemplo para la administración de una empresa. banco o cualquier tipo de entidad por el estilo, los DRMS relacionales mas populares son, Oracle, PostgreSQL, Server SQL, MariaDB, MySQL entre otros, si nuestro proytecto es un sistema de redes sociales en internet, como algun programa de mensajería, o un FaceBook, esta misma LinkedIN y varios cientos mas, por el volumen de datos a utilizar es recomendable utilizar un systema NoSQL como pueden ser MongoDB, Redis, Casandra CouchDB y varias mas, en este tipo de base de datos no todas funcionas igual y todas tienen un fin muy concreto y forma en la manera de guardar los datos, es imprescindible que el diseñador de la base de datos opte por la opción mas adecuada.

    Por ultimo si nuestro proyecto es del tipo IoT en donde tenemos una serie de sensores tomando muestras continuamente, adquirimos en poco tiempo una ola de información que debemos manejar y guardar correctamente para un futuro análisis, en este caso debemos omitir las Base de Datos Relaciones y las NoSQL, en estos casos sin ninguna duda es fundamental el uso de una base de datos de series de tiempo (TSDB), este es un sistema de software que está optimizado para almacenar y servir series de tiempo a través de pares asociados de tiempo y valor. No es nada recomendable usar DRMS Relacionales para esto, ya que las TSDB están optimizadas para guardar entre 100000 y 200000 registros o puntos por segundo, y cuando hablamos de sensores tomando muestras, como puede ser la temperatura de un chip, o la medición de humedad de la tierra, o un sensor de CO2, no podemos arriesgarnos a perder datos. Una de las base de datos lideres en este campo es InfluxDB.

    De la misma manera que es de vital importancia la elección del DRMS adecuado para nuestro proyecto, una vez elegido, el buen diseño de la base de datos hará que la búsqueda de información y la manera en la que podamos acceder las estadísticas deseadas sea de una forma simple y clara.

Puntos que debemos tener en cuenta:
 
  1. Atomizar al máximo los datos a guardar, por ejemplo si queremos guardar el nombre de un cliente, si lo separamos en Nombres y Apellidos, sera mucho mas fácil poder buscar por uno u otro, otro ejemplo es la dirección lo ideal es pones cada dato por separado, calle, numero, puerta, piso, planta, escalera, CP, ciudad, provincia, pais etc.
  2. Los Indices, esto sera fundamental para agilizar las búsquedas, pero siempre con precaución, si ponemos muchos, terminamos ralentizando el sistema y generando cuellos de botella, si ponemos pocos, después de unos miles de registros las búsquedas se harán cada vez mas lentas, yo recomiendo siempre y de a primeras, indices en las claves primarias y luego en todas las foráneas, y después dependiendo de las necesidades del sistema, verificar cuales son las búsquedas mas comunes e ir añadiendo indices según la demanda.
  3. Cuanto mas datos mejor, para análisis posteriores que queramos hacer es importante siempre guardar toda la información posible, pero con cabeza y un buen análisis previo, por ejemplo guardar siempre un timestamp de todo tipo de movimiento, por ejemplo la compra de un producto, el alta en el almacén, el cambio de almacén, cuando entra una avería, cuando esta en estado de reparación, cuando una orden de trabajo esta en incidencia, todo ese tipo de documentación es muy importante guardarla para posteriores análisis y seguimiento del modelo de negocio.

    Es importante tener muy claro el modelo de negocio de la empresa para poder diseñar un modelo de base de datos adecuado.

    Es importante guardar la máxima cantidad de datos/información no redundante y posible que podamos.

    Siempre debemos pensar en lo que nos puedan llegar a pedir el día de mañana.

    Siguiendo todos estos pequeños consejos, tendremos un sistema optimizado, y robusto para el análisis de datos y a si con estos, poder presentarlos y diseñar las estrategias y modificaciones necesarias al modelo de negocio.

Comentarios

Entradas populares de este blog

Servo Driver PCA9685

PCA9685 Servo Driver 16 Canales Adafruit con Raspberry PI     Los servomotores se controlan utilizando las salidas PWM disponibles en la mayoría de las MCU incorporadas. Pero como lamentablemente nuestra Raspi no tiene soporte nativo para PWM... simplemente se nos complica un poco la cosa.  Afortunadamente nuestra Raspi tiene, HW I2C disponible, que podemos usar para comunicarnos con un PWM ¡como el Servo Driver PCA9685,   de 12 canales de Adafruit! (u otras marcas) De esta manera, podemos manejar fácilmente hasta 16 servomotores con nuestra Raspberry Pi utilizando la biblioteca Python de Adafruit y este tutorial. Comprobar si la RaspBerry Pi tiene configurado I2C  Si tiene la Raspberry Pi Original (vendida antes de octubre de 2012), el puerto I2C es 0: sudo i2cdetect -y 0 Si Ud tiene la la segunda revisión de RaspBerry Pi, el Puerto I2C es 1: sudo i2cdetect -y 1 Dependiendo de que tenga una versión u otra esto es lo que debería...

Servomotores con Raspberry Pi

Cómo funcionan los servomotores: Los servomotores son ampliamente utilizados en juguetes controlados por radio (automóviles, aviones, etc.), pero también en aplicaciones industriales donde se necesita una posición de rotación precisa (por ejemplo, en robótica). Una alternativa (y una solución a menudo mejor) para lograr el control de la dirección es el motor paso a paso, pero hoy hablaremos de los Servos Normalmente, un servomotor se construye a partir de un motor estándar de CC con un control interno de re-alimentación (un potenciómetro conectado a un engranaje reductor y algunos componentes electrónicos). Su uso principal es girar el eje del engranaje a una dirección predefinida. El motor tiene 3 terminales de entrada, GND, POWER y SIGNAL. Figura 1 El funcionamiento es el siguiente, aplicamos una señal modulada por ancho de pulso (PWM) a la entrada SIGNAL, y la dirección del eje se determina por la duración del pulso. Tenga en cuenta que la dirección no está de...

Controlar motores de CC con RaspBerry PI (1ra Parte)

Figura 1 Voy a intentar de explicar como controlar un motor de CC “digital-mente”, para poder usarlo con un micro-controlador, una placa Arduino u una RaspBerry Pi. Todo de la manera mas llana posible, para esto intentare asumir que el lector tiene unos conocimientos mínimos de electrónica, principalmente que sabe o tiene noción de como funciona un transistor. Vamos a ello, un Motor de CC, funciona de la siguiente manera, como podemos ver en la figura 1. Dependiendo de la polaridad que le apliquemos éste girara en un sentido o en otro, esto creo que no es ninguna novedad verdad?, si a este circuito añadimos un interruptor pues ya podemos controlar el arranque y la parada del mismo. Pero eso seria "analógico" y dependeríamos de un humano para arrancar y parar el motor. Veamos el siguiente circuito: Figura 2  Ahora si, de esta manera podremos controlar el arranque y la parada de forma digital, en en la entrada PIN, ponemos un 1 lógico el transi...