Internet of Things: Where Does the Data Go?

En el siguiente artículo http://www.wired.com/insights/2015/03/internet-things-data-go/ escrito por Patrik McFadin (Chief Evangelist for Apache Cassandra), se explica de una forma sencilla y de alto nivel el flujo de la información en el Internet of Things.

Siguiendo el articulo vamos a ver como todas las consideraciones que describe, son cubiertas en Sofia2.

En el post se considera que la información atraviesa por 3 estados:

“It is helpful to think about the data created by a device in three stages. Stage one is the initial creation, which takes place on the device, and then sent over the Internet. Stage two is how the central system collects and organizes that data. Stage three is the ongoing use of that data for the future.”

Esto es:

  • Fase 1: Creación o captación y envío a la correspondientes plataforma.
  • Fase 2: Recolección y organización, en la propia plataforma.
  • Fase 3: Utilización de los datos.

En Sofia2, estas tres fases están claramente definidas:

  • Fase 1: Apps Sofia2 (KPs) desplegados en dispositivos y gateways (https://about.sofia2.com/2015/08/20/gateways-en-una-arquitectura-iot/)
  • Fase 2: Conectores de protocolo de la plataforma, Plugins y Motores reglas
  • Fase 3: Motores de reglas y CEP, Motores de consultas y suscripciones, Procesos Map-Reduce en Base de datos de Tiempo Real y Ecosistema Hadoop en Base de datos Histórica con capacidades análiticas.

Siguiendo con el artículo, se profundiza en cada una de las fases de la información. Así podemos ver que en el apartado dedicado al envío de la información “Sending the Data”, se habla de la elección del protocolo de transporte a escoger para que dispositivos y aplicaciones envíen información a la plataforma, proponiendo como protocolos más comunes MQTT, HTTP y CoaP:

“For smart devices and sensors, each event can and will create data. This information can then be sent over the network back to the central application. At this point, one must decide which standard the data will be created in and how it will be sent over the network. For delivering this data back, MQTT, HTTP and CoAP are the most common standard protocols used. Each of these has its benefits and use cases.”

En Sofia2, los conectores de trasporte son plugins separados del core de la plataforma, de manera que se pueden desplegar de manera independiente. Existen plugins para MQTT, HTTP via REST, Ajax/Push, Websocket, Sockets TCP… No obstante, al tratarse de componentes separados, tal y como detallamos en este post: https://about.sofia2.com/2014/07/31/como-desarrollar-un-nuevo-gateway-de-protocolo-para-la-plataforma-sofia2/ es relativamente sencillo desarrollar y añadir nuevos conectores para nuevos protocolos.

En el siguiente apartado del articulo “Storing the Data” nos encontramos con las consideraciones del almacenamiento de la información y la especial importancia que tienen los datos que pertenecen a series de tiempo. A su vez, distingue entre información que tiene que ser procesada por la plataforma en Tiempo Real, y la que se puede enviar en bloques batch:

“Time-series data can be created as events take place around the device and then sent. This use of real-time information provides a complete record for each device, as it happens. Alternatively, it can be collated as data is sent across in batches

En Sofia2, los datos se modelan con la correspondiente ontología: https://about.sofia2.com/2014/06/12/gobierno-de-ontologias-en-sofia2-parte-i/, https://about.sofia2.com/2014/06/16/gobierno-de-ontologias-en-sofia2-parte-ii/, https://about.sofia2.com/2014/06/18/gobierno-de-ontologias-en-sofia2-parte-iii/

Siendo el tipo de ontologia Feed el más adecuado para modelar series de tiempo.

Asimismo, el protocolo de mensajería SSAP permite enviar un dato tan pronto como se produce mediante un mensaje de tipo INSERT, como enviar en batch un conjunto de datos agrupados mediante un mensaje de tipo .BULK

En el articulo también se hace incapié en las ventajas que proporcionan las bases de datos NoSQL para almacenar volúmenes de información tan grandes así como para dar soporte rápido a tantas operaciones de escritura.

En Sofia2, la base de datos subyacente es independiente de la distribución, pudiendo utilizar tanto Bases de datos NoSQL (MongoDB, Cassandra, HBase…), como relacionales (Oracle, PostgreSQL…).

Asimismo la información se almacena en dos niveles:

  • Base de datos de tiempo real (BDTR): Con la información más reciente.
  • Base de datos histórica BDH: Basada en Hadoop y con información consolidada desde la BDTR y almacenada con propósito histórico para ser sometida a análisis en el futuro.

Estos dos niveles de información proporcionan un mejor rendimiento, ya que mientras que los datos más recientes son mucho más susceptibles de ser consultados por elementos asociados al entorno IoT (actuadores, cuadros de mando, sistemas integrados…), los datos más antiguos y consolidados son susceptibles de ser utilizados por herramientas analíticas.

Finalmente, en el apartado “Analyzing the Data”, el articulo aborda como se analiza la información ya almacenada,:

“Once you have this store of time-series data, the next opportunity is to look for trends over time. Analyzing time-series data provides the opportunity to create more value for the owners of the devices involved, or carry out automated tasks based on a certain set of conditions being met.”

Separando entre análisis en Tiempo Real y análisis histórico:

“In this environment, it’s helpful to think about when the results of the analytics will be required: is there an immediate, near real-time need for analysis, or is this a historic requirement”

En Sofia2, esta separación se hace a través de los dos niveles de bases de datos (BDTR y BDH).

Sobre la BDTR es posible definir reglas de Scripting y CEP, que bien de manera temporizada o como respuesta a eventos en tiempo real, realizan lógica de procesamiento sobre la información almacenada y notifican el resultado a clientes y aplicaciones suscriptoras. Asimismo, es posible ejecutar programas en Python y R y si la base de datos subyacente lo permite, se pueden lanzar procesos Map-Reduce.

Sobre la BDH, la información ya consolidada se puede procesar de mediante Map-Reduce y dejarla disponible para sistemas BA mediante consultas a través de Impala o HBase.

Internet of Things: Where Does the Data Go?

2 comentarios en “Internet of Things: Where Does the Data Go?

  1. Hay un error de escritura “mientras mientras”. De resto es de mucha ayuda y clarifica bastante. ¿Podrías ampliarme la información de como “la base de datos subyacente es independiente de la distribución”, como se maneja esto?. De antemano gracias.

    1. Muchas gracias por el comentario, corregido! 😉
      Sofia2 independiza de las bases de datos en las que se persiste la información (BDTR y BDH), de modo que el desarrollador no necesite (salvo que quiera usar alguna funcionalidad específica de esta) conocer la base de datos en la que se almacena la información. La ontología abstrae de estos detalles y puede persistirse en BD como MongoDB, cualquier BD relacional, HBase,… además se ofrece un parser SQL de modo que siempre se pueda consultar en SQL sea cual sea la BD que haya debajo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s