Contribuciones de los usuarios: explicar en detalle lo que sé sobre TEngine y el "campo de batalla" de su base de datos de series temporales

Autor: Modelo de Big Data

Este artículo es de la actividad de envío de ensayos "Use TEngine, Write TEngine" de 2022.


Debido al trabajo, he estado expuesto a varias bases de datos nacionales en los últimos años, pero no puedo olvidarme de TEngine. Entre muchas bases de datos, se destaca TiDB, OceanBase proviene de una familia famosa, openGauss está respaldado por Huawei y solo TEngine brinda a las personas la sensación de ser un héroe. En términos de desarrollo, TiDB toma prestado el rendimiento de rocksDB y openGauss se desarrolla en postgreSQL 9.2.4 Incluso OceanBase se creó en función de los requisitos de la aplicación interna, solo TEngine fue desarrollado por sí mismo sin depender de ningún software de código abierto o de terceros. Además, no es una base de datos de propósito general, tiene sus propios escenarios de aplicación social únicos, principalmente sirviendo a la red industrial.

Basado en la definición y comprensión de TEngine, el autor explicará qué problemas puede resolver TEngine, sus ventajas y aspectos destacados, y sus diferencias con otras bases de datos en este artículo, con la esperanza de ayudar a aquellos que estén interesados ​​en TEngine buddy.

"A diferencia de las bases de datos de uso general, TEngine desecha el equipaje inútil"

Si la base de datos quiere lograr una excelente lectura y escritura, la capacidad principal es la indexación.Generalmente, los productos de bases de datos tienen capacidades de indexación directa. El llamado índice directo consiste en usar los identificadores en los registros del documento como palabras clave, y los identificadores clave ya no necesitan escanear todo el disco. Aunque existen diferencias entre el índice de árbol B, el índice hash y el índice de mapa de bits, la dirección general pertenece al índice directo.

Además del índice directo, también hay un índice inverso [también conocido como índice invertido].El índice inverso se utiliza principalmente para la recuperación de texto completo, como ElasticSearch, y la mayoría de las bases de datos son índices directos. TEngine también utiliza un índice directo. Su característica especial es que el identificador debe contener una marca de tiempo, además de datos de indicador de dimensión, para formar una descripción clara del valor de datos: cuál es el valor de datos de un determinado objeto indicador en un momento determinado.

Desde la perspectiva del motor de almacenamiento de la organización de datos, la capa inferior de la base de datos se puede dividir en el mecanismo de árbol B y el mecanismo LSM. Los dos mecanismos no son los mejores y cada uno tiene sus propias ventajas y desventajas:

La mayor ventaja del B-tree radica en su capacidad para aumentar continuamente el rendimiento de lectura de datos Incluso si el nivel de datos aumenta, su lectura no se ampliará. El secreto radica en el último almacenamiento persistente de datos, el árbol B se almacena en el disco duro en una estructura de datos ordenada y regular . De esta manera, a medida que los datos se vuelven más y más grandes, aún mantiene una característica ordenada y regular, y ante miles de operaciones de lectura, puede ejecutarse de acuerdo con las condiciones, reduciendo o evitando el comportamiento de amplificación de lectura.

A diferencia del mecanismo de árbol B, el mecanismo LSM reduce y evita la amplificación de escritura. El mecanismo LSM hace un uso completo de la memoria, abre un espacio en la memoria, primero escribe datos en la memoria, escribe y devuelve directamente el éxito del usuario, en lugar de escribir uno como un árbol B, quiero saber quién es mayor que yo y que es más grande que yo Pequeño, siempre que haya suficiente memoria, simplemente llénelo directamente en la memoria. Cuando la memoria alcanza un cierto umbral, los datos en la memoria se escribirán en el disco duro en lotes y secuencialmente a la vez, y la memoria se restablecerá y se borrará para servir a los nuevos .

Las bases de datos tradicionales MySQL y Oracle usan el mecanismo B-tree, mientras que TiDB y OceanBae usan el mecanismo LSM optimizado, mientras que TEngine usa el mecanismo B-tree + LSM, donde el B-tree almacena metadatos [principalmente sello de tiempo + datos de índice], el El mecanismo LSM almacena datos específicos, los metadatos se almacenan en una estructura de tabla ordenada y los datos específicos se escriben de manera adjunta, evitando así lecturas grandes y amplificación de escritura.

En términos generales, para mejorar el rendimiento del control de concurrencia, los productos OLTP deben tener opciones de función de copia en escritura o MVCC Aunque la copia en escritura y MVCC garantizan la consistencia de los datos, conllevan una mayor carga de IO . TEngine no necesita modificar los datos, por lo que no es necesario considerar el problema de la consistencia de los datos. Los datos se escriben en forma ordenada y adjunta. Debido a que solo hay lectura y escritura, no hay necesidad de protección de bloqueo, y algunos elementos inútiles se tiran La carga, puede centrarse en optimizar otros lugares, como tablas de columnas.

Las bases de datos comunes en la industria tienen tablas basadas en filas, tablas basadas en columnas e incluso bibliotecas de memoria completas para varios negocios. Para el almacenamiento de datos específicos, TEngine usa almacenamiento completo basado en columnas en el disco duro, mientras que los indicadores de dimensión se almacenan en filas. memoria basada . Debido a que TEngine está frente a los datos de la máquina, la máquina trabaja las 24 horas para producir datos cada milisegundo.Para almacenar más datos, TEngine utiliza el método de coexistencia de filas y columnas y separación de propósitos.

En términos generales, los registros de documentos de cada línea en la base de datos son muy importantes, incluso si la información registrada en esta línea no tiene nada que ver con las transacciones, sino que es solo la información básica de un usuario, su densidad de valor es muy alta. Pero la base de datos de series temporales (Base de datos de series temporales) es diferente. La densidad de valor de los registros de documentos de una sola línea es baja, porque se pueden generar 10.000 registros en un segundo y los datos deben agregarse para reflejar el valor de los datos. Agregue de forma rápida y efectiva datos ordinarios para convertirlos en datos con alta densidad de valor, que también es una característica importante que distingue a las bases de datos de series temporales de otras bases de datos.

TEngine ofrece actualmente tres versiones de productos: versión comunitaria, versión empresarial y versión en la nube para satisfacer las necesidades del mercado y de los desarrolladores individuales.

"Desmantelamiento de la base de datos de series temporales, análisis de varias características importantes del producto"

Técnicamente, TEngine es una plataforma distribuida de análisis de datos masivos que se enfoca en el campo de las series temporales. Sus competidores se pueden dividir en competidores directos y competidores indirectos.Los competidores indirectos incluyen TiDB, OceanBase, GaussDB nacionales y Oracle, MySQL, etc. extranjeros. utilizado y tiene una relación con la serie temporal, aquí es donde TEngine resulta útil. Los competidores que compiten directamente con TEngine incluyen Druid, OpenTSDB e InfluxDB, todos los cuales son predecesores del análisis de series temporales.

Druid es un sistema distribuido que adopta la arquitectura Lambda, que favorece el uso completo de la memoria, y también guarda datos históricos en el disco duro, agrega datos de acuerdo con una determinada granularidad de tiempo y desacopla el procesamiento en tiempo real y el procesamiento por lotes de datos. . El procesamiento en tiempo real es para escenarios con más escrituras y menos lecturas, y procesa principalmente datos incrementales de forma continua. El procesamiento por lotes es para escenarios con más lecturas y menos escrituras, y procesa principalmente datos sin conexión de esta manera. Druid confía en Hadoop. La arquitectura Share Nothing se adopta en el clúster. Cada nodo tiene sus propias capacidades informáticas y de almacenamiento. Todo el sistema se coordina a través de Zookeeper. Para mejorar el rendimiento informático, utilizará métodos informáticos aproximados, incluido HyperLoglog, algunos cálculos básicos de DataSketches.

OpenTSDB es una base de datos de series temporales de código abierto que admite el almacenamiento de cientos de miles de millones de puntos de datos y proporciona consultas precisas. Está escrito en lenguaje Java y logra una expansión horizontal a través del almacenamiento basado en HBase. OpenTSDB se usa ampliamente para el monitoreo y la medición de servidores, incluidos Red y monitoreo en tiempo real de servidores, sensores, IoT y datos financieros. La idea de diseño de OpenTSDB es usar la clave de HBase para almacenar información de etiquetas y almacenar los datos de la misma hora en una fila, para mejorar la velocidad de consulta. OpenTSDB predefine etiquetas de dimensión, etc., y las coloca en HBase en un formulario de organización de datos sofisticado. Se pueden realizar consultas rápidas a través del rango de claves de HBase. Sin embargo, la eficiencia de OpenTSDB disminuirá con consultas de organización de cualquier dimensión.

InfluxDB es una base de datos de series temporales muy popular, desarrollada en lenguaje Go, la comunidad es muy activa, las características técnicas admiten cualquier cantidad de columnas, eliminación de patrones, recopilación de datos integrada, almacenamiento y almacenamiento visual, y utiliza algoritmos de alta relación de compresión para admitir almacenamiento eficiente, adopta el motor de almacenamiento interno de TIME SERIES MERGE TREE y admite lenguajes similares a SQL (la versión 2.0 ya no lo admite) .

Para el entorno empresarial de las series temporales, la agregación previa generalmente se realiza en escenarios OLAP para reducir la cantidad de datos Los principales factores que afectan la agregación previa se pueden resumir de la siguiente manera:

  • El número de indicadores de dimensión.

  • Cardinalidad de las métricas de dimensión

  • Grado de combinación de indicadores de dimensión

  • Métricas de dimensión de tiempo de grano grueso y grano fino

Para lograr una agregación previa eficiente, el secreto de TEngine es la supertabla. Druid definirá el cálculo previo por adelantado. InfluxDB también tiene su propio método de consulta continua, que solo se empalma cuando se usa HBase. Por lo tanto, HBase será más lento cuando involucre diferentes consultas de índice de dimensión.

Se entiende que el informe de prueba basado en TSBS de TEngine se publicará en un futuro próximo. El primer informe realiza un análisis comparativo detallado del nivel de rendimiento de InfluxDB y TimeScaleDB . Los socios interesados ​​pueden prestar más atención al contenido de la cuenta oficial recientemente.

"Hoy, TEngine debe ser la primera opción"

Mi conocimiento y comprensión de TEngine parte de la experiencia en proyectos anteriores. Con 2018 como telón de fondo, les contaré una historia sobre la predicción de piezas malas y defectuosas en la industria.

Con el rápido crecimiento del negocio de la empresa y el aumento continuo de nuevas fábricas en un grupo bien conocido, todo tipo de datos valiosos no se pueden integrar, analizar y excavar bien para obtener su valor debido. En este momento, el desarrollo de la empresa ha entrado en la siguiente ronda de la estrategia de "lucha". La respuesta rápida y la predicción precisa son la clave para el desarrollo empresarial. Los grandes datos juegan un papel fundamental en él. Los métodos de análisis científico se utilizan para integrar datos de varios sistemas. y promover la inteligencia de fabricación de fábrica.El desarrollo de la modernización se ha convertido en una tarea urgente.

La identificación de vidrio del mismo problema especial ha aparecido en el proceso de producción actual de la fábrica.La calidad del vidrio es desigual debido a varias razones, e incluso puede haber vidrio de calidad anormal. Durante el proceso de detección de estos vidrios anormales, es imposible detectar la causa de la anormalidad.Si la causa de la anormalidad no se puede localizar rápidamente, se generarán más vidrios anormales, lo que afectará seriamente la producción. Los medios específicos de respuesta incluyen:

  1. A través del vidrio con calidad anormal, encuentre el factor de correlación que produce esta anormalidad. Tales como: máquinas, materiales, vehículos, parámetros, etc.

  1. Detección de vidrio anormal y alerta temprana, a través de modelos matemáticos de factores que producen calidad anormal, predice vidrio anormal que se desvía del rango normal y alerta temprana.

  1. 分析 glass 的特征值与特征值之间的关联关系,并建立预测模型,提前预测出 glass 的特征值。

  1. 分析 glass 相关的电压、电阻、电流、温度、湿度影响。

很明显这是数据挖掘的项目,要分析以上 glass 在生产过程中的环境信息、检测机台资料、量测机台资料、制程参数信息,以及 FDC、OEE 系统的数据,才能找出产生这种问题的原因。第一步是数据收集整合,第二步是数据探索,第三步是模型调校——找出可能性、影响最大的因素的特征因素,第四步是投入生产验证,通过 spark ml 提供预测动力。

当时的技术栈用的是 CDH,首先要通过 Kafka 采集数据,Spark对接 Kafka 进行初步计算去噪并汇总到 Hadoop 里面,以 parquet 的格式保存,如果需要进一步的加工,就通过 impala 进行。这样每天挂起 N 个任务,不停的调度计算。

CDH Hadoop 虽然无法做到实时数据分析,但是也还能做些事,聊胜于无,就继续用着。当时这个坏件故障件预测项目有以下痛点,主要是及时性、有效性、准确性的问题:

  • 难以满足用户需求,某些机器数据的聚合计算需要第二天才能出结果,甚至更多的时间才能出来。

  • 经济成本的费用较高,CPU、磁盘、网络都在一个高段的使用状态,针对越来越多的数据需要投入新机器。

  • 维护成本高,你需要维护 Hadoop 所有的机器,各种 HBase、Spark、Zookeeper、HDFS 之类,不但对工程师要求高,而且工作量巨大。

  • 低质量数据,因为数据流程或者错误的逻辑整合,导致机器传感器聚合后数据模型无法正常使用。

  • 无法做到实时监测,机器数据作为宝贵的自变量因素无法及时传输并进行计算,自然会影响因变量。

笔者经历了这个项目,知道这个坏件故障预测与时间序列有紧密的关系。时至今日,时间序列分析也是重要的数据分析技术,尤其面对季节性、周期性变化数据时,传统的回归拟合技术难以奏效,这时就需要复杂的时间序列模型,以时间为特征作为抓手点。这样即使你不太懂业务的前提下,也可以进行数据挖掘的工作。

那这个项目与 TDengine 有什么关系呢? 实际上,这个项目并没有用上 TDengine,后来集团搭建了一个 Hadoop集群试点,这次居然用了 HDP,理由很简单,因为 HDP 默认搭载了时序数据库 Druid

当时技术负责人认为坏件故障预测模型的数据库基座应该是时序数据库,而不是 Hadoop 不停的进行数据采集、数据转换以及各种批计算,通过时序数据库不但可以实时计算,而且输出的数据质量高。至于选择哪个时序数据库,彼时考虑平稳过渡替换以及学习成本综合因素后他们选择了 Druid。

但当时是 2017 年,TDengine 也还没有面世,如果放到今天,TDengine 必定是选型考虑的首选。

要知道,TDengine 的优势相对 Druid 要多了去了,首先 Druid 不是一个经过开源版本 1.00 正式发布的软件,虽然发展多年,直至 HDP 与 CDH 两家公司融合,HDP 搭配的 Druid 也不是 1.00 版;其次 Druid 依赖 Hadoop,动辄就使用大量的资源以及各种复杂的 Hadoop 组件,最后 Druid 只提供 json 的方式,对传统的 DBA 使用十分不友好。

TDengine 有一个我认为很秀的功能,就是它的超级表的跨指标维度建模思想,目前它仅用于自由组合维度指标,拼接不同的时间粒度进行聚合。在我看来,将来应用于时间序列机器学习模型也会是它的一个亮点,在数据建模方面,针对工厂的设施、设备、机床、机房、车间、测台等必须要做高效准确的定义。我们进行项目规划建设时,都会做大量的数据治理工作,但是在具体实施工作上,还是要使用这些传统工具和技术。TDengine 可以有效汇集各种机器数据源,并且能够高质量的提炼,这个是过去的时序数据产品所不具备的。

“是提速,更是赋能”

中国有句话叫做“长江后浪推前浪,一代新人胜旧人”,IT 世界千变万化,如果你和我一样,一直在关注着 TDengine,就会发现,它这几年崛起的非常迅速。去年 TDengine 推出 3.0 版本,新版本升级成为了一款真正的云原生时序数据库,优化了流计算功能,而且还重新设计了计算引擎,优化工程师对 SQL 的使用,另外增加了 taosX,利用自己的数据订阅功能来解决增量备份、异地容灾,更加方便了企业应用。我对 TDengine 未来的期望是,希望它增加库内机器学习函数,增加 ARIMA 模型、MA 模型等时间相关功能,TDengine 的未来是一个智能学习时间序列数据库,对工业 4. 0 来说不仅是提速,更是赋能。


想了解更多TDengine Database的具体细节,欢迎大家在GitHub上查看相关源代码。

Supongo que te gusta

Origin blog.csdn.net/taos_data/article/details/129166318
Recomendado
Clasificación