¿Qué es una base de datos streaming -de transmisión-?
El Internet de las cosas está en todas partes y los datos se están acumulando. Las nuevas computadoras diminutas e integrables están energizando a los gerentes e ingenieros con la posibilidad de usar todos estos datos para controlar todo, desde plantas industriales hasta hogares. Los administradores de la base de datos, sin embargo, no están tan emocionados porque se esperad ellos que recopilen, almacenen y analicen esta incesante cantidad de bits.
Algunos programadores y administradores de bases de datos están desarrollando canalizaciones que pueden aceptar, analizar y almacenar los bits importantes. Estas llamadas bases de datos de transmisión son herramientas diseñadas para manejar tanto el imparable flujo entrante como las interminables consultas de herramientas que desean tomar decisiones basadas en los datos.
¿Qué es una base de datos de transmisión?
Las bases de datos de transmisión son primos cercanos a otras nuevas clases de herramientas como las bases de datos de series de tiempo o las bases de datos de registros. Todas están diseñadas para rastrear una serie de eventos y habilitar consultas que pueden buscar y producir perfiles estadísticos de bloques de tiempo. Las bases de datos de transmisión pueden responder a consultas de datos y también estadísticas sobre los datos, generar informes a partir de estas consultas y completar todos los paneles que rastrean lo que está sucediendo para permitir a los usuarios tomar decisiones inteligentes sobre la telemetría.
Las herramientas son esencialmente canalizaciones que comienzan analizando el flujo de datos entrantes y terminan almacenando datos agregados en una base de datos que se puede consultar fácilmente. Algunos piensan en la base de datos de transmisión como el sistema completo, y otros imaginan que el sistema se crea conectando la fuente de información a una base de datos más tradicional. En ambos casos, todo el sistema está listo para responder preguntas.
Algunos buenos ejemplos de casos de uso importantes incluyen:
- Servicios de tiempo crítico como Uber o Lyft
- Procesos industriales continuos como líneas de montaje
- Software para monitoizar videos u otros sensores mientras busca anomalía
- Experimentos científicos que deben ser analizados constantemente
- Cadenas de suministro
Cómo se dividen los datos
Los datos que contiene a menudo se dividen, al menos conceptualmente, en dos niveles. La entrada sin procesar, a menudo denominada «flujos» y son secuencias de eventos inmutables que solo se añaden. Están destinados a ser un registro histórico de lo que sucedió y cuándo.
El segundo nivel se construye observando las transmisiones y elaborando resúmenes, a menudo estadísticos, sobre los eventos. Podrían, por ejemplo, contar la cantidad de veces que sucedió un evento cada día durante el último mes o encontrar el valor promedio de cada semana en un año. El análisis generalmente se almacena en tablas que a menudo son similares en estructura y comportamiento a las bases de datos relacionales tradicionales. De hecho, no es raro que los desarrolladores conecten una base de datos tradicional para obtener estos resultados.
Algunas bases de datos de transmisión están diseñadas para reducir drásticamente el tamaño de los datos y ahorrar costos de almacenamiento. Pueden, por ejemplo, reemplazar un valor recopilado cada segundo con un promedio calculado durante un día. Almacenar solo el promedio puede hacer que el seguimiento a largo plazo sea económicamente viable.
La transmisión abre algunas de las entrañas de una base de datos tradicional. Las bases de datos estándar también rastrean un flujo de eventos, pero generalmente se limitan a cambios en los registros de datos. La secuencia de INSERTOS , ACTUALIZACIONES y ELIMINACIONES normalmente se almacena en un diario o libro mayor oculto en el interior. En la mayoría de los casos, los desarrolladores no tienen acceso directo a estas transmisiones. Solo se les ofrece acceso a las tablas que muestran los valores actuales.
Las bases de datos de transmisión abren este flujo y simplifican a los desarrolladores el ajuste de cómo se integran los nuevos datos. Los desarrolladores pueden ajustar la forma en que los flujos de datos nuevos se convierten en resúmenes tabulares, lo que garantiza que se calculen y guarden los valores correctos mientras se ignora la información innecesaria. La oportunidad de ajustar esta etapa de la canalización de datos permite que las bases de datos de transmisión manejen conjuntos de datos notablemente más grandes.
¿Cómo se están adaptando las bases de datos tradicionales?
Las bases de datos tradicionales están encontrando un papel en las aplicaciones de transmisión, pero generalmente como un destino que se encuentra aguas abajo. Los datos fluyen a través de otra herramienta que los analiza y genera valores más concisos para un almacenamiento más permanente en una base de datos tradicional. El software heredado y las herramientas de informes pueden funcionar fácilmente con él.
Por ejemplo, Oracle Streams se puede implementar como un servicio o como una instalación local. Recopilará y transformará datos de una variedad de fuentes y luego los depositará con otros servicios que pueden incluir sus propias bases de datos. El formato del mensaje está diseñado para ser compatible con Apache Kafka, un estándar abierto, lo que le permite integrarse con otras aplicaciones de Kafka.
El producto de IBM, también llamado Streams , enfatiza el poder analítico de la tubería integrada con algunos de los productos de aprendizaje automático. También es compatible con Kafka y puede depositar los resultados en varios destinos, incluidos los propios almacenes de datos de IBM.
Stream Analytics de Microsoft también enfatiza los análisis que pueden ocurrir a lo largo del camino desde la primera aparición del evento hasta su destino final, que puede ser cualquiera de las soluciones de almacenamiento de Azure, incluidas las bases de datos SQL. El procesamiento, que se puede escribir en un lenguaje similar a SQL e incorporar otros lenguajes comunes como JavaScript, también puede entrenar modelos de aprendizaje automático a través del servicio ML de Azure. El dialecto SQL incluye restricciones temporales que se utilizan para transformar los datos entrantes, que generalmente rastrea la hora y la fecha.
El servicio Azure Stream Analytics también está estrechamente integrado con los servicios de inteligencia artificial de Microsoft para utilizar el aprendizaje automático y el análisis de video para deconstruir el flujo de datos. Ofrece una sintaxis similar a SQL que se puede ampliar con código escrito en JavaScript o C #.
¿Y los advenedizos?
Las nuevas empresas están afrontando el desafío mediante la creación de herramientas completamente integradas o simplemente creando una capa de gestión de flujos que funcione con las bases de datos existentes. Aquellos que se integran con la infraestructura establecida pueden aprovechar todas las demás herramientas compatibles, mientras que las versiones completamente nuevas tienen la ventaja de construir todo desde cero.
Muchas de las herramientas que se integran con las bases de datos existentes se basan en Kafka de Apache, un marco de gestión de mensajes de código abierto que se utiliza a menudo para vincular varios paquetes de software. El propio Kafka se encarga de las tareas de almacenamiento en búfer y entrega de los mensajes que contienen los eventos. Este almacenamiento en búfer, dicho sea de paso, requiere almacenar el flujo de eventos, lo que convierte a Kafka en una especie de base de datos muy básica que finalmente entrega los datos a otra persona.
Equalum , por ejemplo, ofrece una herramienta para transformar un flujo de datos en ruta a un almacén de datos o lago de datos utilizando bases de datos más tradicionales. Está construido sobre una base de código abierto de Kafka y Spark de Apache y ofrece un marco de codificación visual simplificado que permite definir la ruta de datos como un diagrama de flujo.
Los desarrolladores que disfrutan trabajando en SQL apreciarán ksqlDB , una herramienta para ingerir y almacenar datos que usa una versión de SQL para especificar las tareas principales. «Utilice una sintaxis ligera y familiar para dar un gran impacto», promete la literatura de ventas. “Capture, procese y atienda consultas utilizando solo SQL. No se requieren otros idiomas o servicios «. La herramienta está estrechamente integrada con Kafka para garantizar que sea más sencilla de instalar en las aplicaciones existentes que la utilizan.
Amazon llama a su principal oferta Kinesis y ofrece vías especiales preconfiguradas para trabajar con transmisiones de video. Está integrado con algunas de las herramientas de inteligencia artificial de AWS, como Rekognition para análisis de video y SageMaker para aprendizaje automático básico.
Otros están comenzando a construir proyectos de código abierto como Debezium que pueden transformar datos de flujos de eventos administrados por Kafka u otras canalizaciones.
¿Hay algo que las bases de datos de transmisión no puedan hacer?
En muchos sentidos, las bases de datos de transmisión son simplemente superconjuntos del modelo tradicional. Si piensa en los INSERTOS y ELIMINOS estándar como eventos, los primos de transmisión pueden manejar cualquiera de las aplicaciones estándar. Sin embargo, gran parte de la sobrecarga puede desperdiciarse si la aplicación no requiere un análisis en constante evolución.
Muchas bases de datos de transmisión también ofrecen menos funciones o API tradicionales porque su primer trabajo es controlar el flujo interminable de datos. Es posible que no ofrezcan vistas complejas o combinaciones elaboradas, al menos no para los datos entrantes. Si los resultados se almacenan en una base de datos relacional más tradicional, tendrá todas las características asociadas.