Consulta interactiva de datos de transmisión de mil millones de niveles, ¿por qué abandonar mysql y elegir voltdb?
Consulta interactiva de datos de transmisión de mil millones de niveles, ¿por qué abandonar mysql y elegir voltdb?
Los autores Tan Zhenghai y Wu Yi publicaron el 18 de agosto de 2016 Impulsados por los "100 millones" del hombre más rico. " ¿pantalla? ¿Por qué no establecer un pequeño objetivo y aprovechar primero los descuentos de QCon Shanghai? Discusión
Compartir en: Weibo WeChat Facebook Twitter Youdao Cloud Notes Compartir por correo electrónico
Leer más tarde
Mi lista de lectura
Grande en los datos En la era, con el crecimiento explosivo del volumen de datos, los requisitos de velocidad de procesamiento de datos son cada vez mayores. Las soluciones de procesamiento de datos anteriores basadas en MySQL ya no pueden cumplir con los escenarios de gran rendimiento, escritura de baja latencia y consultas de alta velocidad; resumen de puntos porcentuales Se ha desarrollado un conjunto completo de soluciones. Este artículo lo llevará a comprender la práctica de aplicación de VoltDB en consultas interactivas de transmisión de datos.
Escenario de consulta interactiva de transmisión de datos
En porcentaje, se generan mil millones de registros cada día. Para estas grandes cantidades de datos generados en tiempo real, no solo se debe lograr la escritura en tiempo real. , pero se deben realizar ajustes de recomendaciones similares. Las consultas como la optimización y la verificación de datos deben responderse en segundos. Hay verificaciones únicas simples, cálculos de agregación de varias horas o un día y consultas de agregación conjunta basadas en decenas de millones/cientos de millones de tablas de datos. Por ejemplo, la siguiente consulta SQL:
Para las primeras soluciones MySQL, aunque las subbases de datos manuales se crearon de acuerdo con ciertas reglas, la cantidad de datos que caían en una sola máquina para el evento de tabla en SQL Lo anterior alcanza decenas de millones. Hay casi 10 millones de tablas de resultados. Para realizar una consulta compleja de agregación conjunta entre tablas tan grandes, MySQL tardará unos 30 minutos, o incluso más, o no responderá.
Por lo tanto, en escenarios que requieren alto rendimiento, escritura de baja latencia y consultas de alta velocidad al mismo tiempo, las soluciones existentes basadas en MySQL son completamente inalcanzables. Para no renunciar a la conveniencia de las declaraciones SQL, realicé varias selecciones e investigaciones de soluciones y finalmente elegí VoltDB para resolver tales problemas.
Contenido de proveedores relacionados
Recomendaciones y práctica de Ctrip sobre algoritmos inteligentes y sistemas de arquitectura
Experiencia práctica de Autodesk en la construcción de su propia plataforma de big data basada en Spark
Los cuatro elementos centrales de big data y comercio electrónico
El establecimiento y gestión del sistema de I+D de datos de Alibaba
Práctica en tiempo real de Suning Cloud Commerce Data Platform p>
Patrocinadores relacionados
QCon Shanghai 2016, del 20 al 22 de octubre, Shanghai Baohua Marriott Hotel, ¡avance del interesante contenido! !
Como se muestra en la figura anterior, todo el tráfico en línea llega a las tablas VoltDB y Hive fuera de línea al mismo tiempo a través del bus Streaming. La diferencia es que los datos se escriben en VoltDB en tiempo real y en Hive en modo por lotes. Los datos nuevos deben escribirse en VoltDB inmediatamente para consultarlos en un plazo muy breve; los datos escritos en Hive en lotes también se pueden vaciar en la partición correspondiente en una hora.
Introducción a VoltDB
VoltDB es una base de datos relacional en memoria extremadamente rápida y de código abierto desarrollada por NewSQL dirigida por Ingres y el cofundador de Postgres, Mike Stonebraker. Proporciona versiones comunitarias y comerciales. . VoltDB adopta una arquitectura sin fragmentos, que no solo logra la buena escalabilidad y el procesamiento de datos de alto rendimiento de NoSQL, sino que no renuncia al soporte de transacciones de las bases de datos relacionales tradicionales: ACID.
Generalmente, un clúster de base de datos VoltDB consta de una gran cantidad de sitios (particiones), dispersos en varias máquinas, el almacenamiento y procesamiento de datos se distribuyen en cada sitio. El diagrama de arquitectura es el siguiente:
Como se muestra arriba, el clúster consta de 3 nodos y 1 sitio por nodo. Por lo tanto, las tablas en la figura solo están divididas en tres áreas. Por supuesto, también se pueden dividir en más áreas. Entonces una tabla tendrá múltiples particiones en un solo nodo.
El uso específico implica los siguientes conceptos:
El cliente puede conectarse a cualquier nodo del clúster. Todos los nodos del clúster son iguales y utilizan partición horizontal;
Cada tabla especifica un campo como clave de partición, y VoltDB usa esta clave para distribuir los datos de la tabla a cada partición usando un algoritmo hash.
De hecho, hay dos tipos de tablas en VoltDB, una es una tabla particionada y la otra se llama "tabla replicada". La "tabla replicada" no almacena parte de los datos de una determinada tabla en cada nodo, sino todos los datos, lo cual es adecuado para tablas con un volumen de datos pequeño.
Aquí nos centramos principalmente en la tabla de particiones. La selección de campos de partición en la tabla de particiones es muy importante. Debe intentar elegir campos que dispersen los datos de manera uniforme.
Idioma o interfaz del cliente soportado por VoltDB:
C++
C#
Erlang
Go
p>Java
Python
Node.js
Interfaz del controlador JDBC
Interfaz HTTPJSON (esto significa que todas las implementaciones El lenguaje de solicitud HTTP puede escribir programas cliente VoltDB y es muy intuitivo)