En una publicación de blog anterior, Supervisión de registros y datos de registro no estructurados, yendo más allá de tail -f , hablamos sobre la recopilación y el trabajo con datos de registro no estructurados. Aprendimos que es muy fácil agregar datos al Elastic Stack. Hasta ahora, el único análisis que hicimos fue extraer la marca de tiempo de estos datos, por lo que los datos más antiguos se rellenan correctamente.
También se ha hablado sobre la búsqueda de estos datos no estructurados hacia el final del blog. Si bien los datos no estructurados pueden ser increíblemente útiles cuando se combinan con la funcionalidad de búsqueda de texto completo, hay casos en los que necesitamos un poco más de estructura para usar los datos para responder a nuestras preguntas.
Esquema al escribir o esquema al leer, ¿por qué no ambos?
Schema on write sigue siendo la opción predeterminada que usa Elasticsearch para manejar los datos entrantes. Todos los campos de un documento se indexan a medida que se ingieren, lo que también se conoce como esquema al escribir. Esto es lo que hace que la ejecución de búsquedas en Elastic sea tan rápida, independientemente del volumen de datos devueltos o la cantidad de consultas ejecutadas. También es una gran parte de lo que a nuestros usuarios les encanta de Elastic.
Schema on write funciona muy bien si conoce sus datos y cómo están estructurados antes de la ingesta. De esa manera, el esquema (vista lógica de la estructura de datos) se puede definir completamente en el mapeo de índice. También requiere apegarse a ese esquema definido cuando las consultas se ejecutan en el índice. Sin embargo, en el mundo real, los datos de monitoreo y telemetría a menudo pueden cambiar. Por ejemplo, pueden aparecer nuevas fuentes de datos en su entorno. Una capa adicional de flexibilidad para extraer o consultar dinámicamente nuevos campos después de que los datos se hayan indexado agrega un valor tremendo, incluso si tiene un pequeño costo para el rendimiento.
Ahí es donde entra en juego el esquema de lectura. Los datos se pueden ingerir rápidamente en forma sin procesar sin ningún tipo de indexación, a excepción de ciertos campos necesarios, como la marca de tiempo o los códigos de respuesta. Se pueden crear otros campos sobre la marcha cuando se ejecutan consultas en los datos. No necesita tener un conocimiento íntimo de sus datos con anticipación, ni tiene que predecir todas las formas posibles en que los datos pueden eventualmente ser consultados. Puede cambiar la estructura de datos en cualquier momento, incluso después de que se hayan indexado los documentos, un gran beneficio del esquema en lectura.
Esto es lo que es único acerca de cómo Elastic implementó el esquema en la lectura. Creamos campos de tiempo de ejecución en la misma plataforma de Elastic: la misma arquitectura, las mismas herramientas y las mismas interfaces que ya está utilizando. No hay nuevos almacenes de datos, idiomas o componentes, y no hay sobrecarga de procedimientos adicional. El esquema de lectura y el esquema de escritura funcionan bien juntos y se complementan a la perfección, de modo que puede decidir qué campos calcular cuando una consulta los requiere y qué campos indexar cuando sus datos se ingieran en Elasticsearch.
Más información y nota completa desde el Blog de Elastic.