En el curso de los últimos decenios, las bases de datos y los exámenes de la información han cambiado significativamente.

Las organizaciones tienen necesidades cada vez más complejas para investigar y utilizar la información, y requisitos cada vez más exclusivos para la ejecución de las investigaciones.

La memoria se ha vuelto barata, lo que permite otro arreglo de los procedimientos de ejecución que dependen del examen de la memoria.

Las CPU y las GPU se han expandido en la ejecución, sin embargo, han avanzado adicionalmente para mejorar el manejo de la información en paralelo

Han surgido nuevos tipos de bases de datos para diversos casos de uso, cada uno con su propia manera específica de guardar y ordenar la información. Por ejemplo, ya que los artículos genuinos son más simples de hablar como varias estructuras de información niveladas y asentadas, las bases de datos JSON y de informes se han hecho famosas.

Han surgido nuevos profesores, incluyendo el diseño de información y la ciencia de la información, ambos con muchos nuevos dispositivos para lograr objetivos científicos explícitos.

Las representaciones de información en columnas se han convertido en un estándar para el diagnóstico de las cargas restantes, ya que dan puntos de interés sensacionales en cuanto a velocidad y destreza.

En vista de estas pautas, se levantó una inconfundible puerta abierta para una representación estándar en memoria que cada motor puede utilizar; una que es actual y que explota todas las nuevas metodologías de exhibición que son accesibles actualmente; y una que hace que el intercambio de información a través de las etapas sea consistente y competente. Este es el objetivo de Apache Bolt. Familiarizarse con las causas y la historia de Apache Bolt.

Para utilizar una relación, piense en aventurarse en Europa en medio de una escapada ante la UE. Para visitar 5 naciones en 7 días, podrías confiar en la forma en que pondrías un par de horas en las afueras para el control de visados, y perderías una parte de tu dinero en el comercio de dinero. Esta es la manera en que el trabajo con la información en memoria funciona sin Bolt: existen tremendos aspectos de desperdicio para serializar y des-serializar las estructuras de información, y se hace un duplicado todo el tiempo, desperdiciando valiosa memoria y activos de la CPU. Curiosamente, Bolt se parece a visitar Europa después de la UE y el Euro: no te quedas al margen, y hay un dinero que se utiliza por todas partes.

Bolt consolida las ventajas de las estructuras de información columnar con la figuración en memoria. Le da a la presentación las ventajas de estas estrategias de vanguardia mientras que también le da la adaptabilidad de la información compleja y los esquemas dinámicos. Además, hace todo esto de una manera abierta e institucionalizada.

Avances del Centro Apache Bolt

El Apache Bolt en sí mismo no es un motor de capacidad o ejecución. Está destinado a llenar como un establecimiento mutuo para los tipos de marcos que lo acompañan:

Motores de ejecución SQL, (por ejemplo, Drill e Impala)

Marcos de examen de la información, (por ejemplo, Pandas y Sparkle)

Marcos de derrame y colas, (por ejemplo, Kafka y Tempest)

Marcos de capacidad, (por ejemplo, Parquet, Kudu, Cassandra, y HBase)

El perno comprende varios avances asociados destinados a ser incorporados en los motores de capacidad y ejecución. Las partes clave de Bolt incluyen:

Conjuntos de tipos de información caracterizados que incluyen tanto los tipos SQL como los JSON, por ejemplo, Int, BigInt, Decimal, VarChar, Guide, Struct y Exhibit.

Retratos sancionados: Representaciones columnares en memoria de la información para ayudar a una estructura de registro discretamente desconcertante basada en los tipos de información caracterizados.

Estructuras de información regulares: Estructuras de información de amigos atornillados, incluyendo registros de selección, tablas de hash y líneas.

Entre Procedimiento Correspondencia realizada dentro de la memoria compartida, TCP/IP y RDMA.

Bibliotecas de información para examinar y componer información en columnas en varios dialectos, incluyendo Java, C++, Python, Ruby, Rust, Go y JavaScript.

Cálculos de tuberías y SIMD para diferentes actividades, incluyendo la determinación de mapas de bits, hashing, sifting, bucketing, arreglo y coordinación.

Presión Columnar en la memoria, incluyendo un surtido de métodos para construir la habilidad de la memoria.

Aparatos de Memoria Incansable para la labor momentánea a través de la memoria no impredecible, SSD o HDD.

Considerando todo, Bolt no rivaliza con ninguna de estas actividades. Su objetivo central es trabajar dentro de cada una de ellas para dar una ejecución más amplia y una interoperabilidad más fundamentada. A decir verdad, Bolt está siendo trabajado por los principales diseñadores de un número significativo de estas empresas.

Ejecución

Cuanto más rápido un cliente pueda encontrar la solución, más rápido podrá hacer diferentes preguntas. El superior trae más exámenes, más casos de uso y más desarrollo. A medida que las CPU se hacen más rápidas y modernas, una de las principales dificultades es asegurar que la preparación de la innovación utilice las CPU de manera efectiva.

Bolt tiene la intención explícita de amplificar:

Área de la tienda: Los cojines de memoria son representaciones conservadoras de la información destinada a las CPU actuales. Las estructuras se caracterizan por la coordinación de los diseños de lectura normales. Eso implica que la información de tipo comparativo es co-situada en la memoria. Esto hace que la búsqueda previa de la tienda sea cada vez más potente, limitando las ralentizaciones de la CPU que se producen por fallos en la reserva y en la memoria principal. Estas estructuras de información productiva de la CPU y los diseños de acceso se extienden tanto a las estructuras sociales de nivel convencional como a las complejas estructuras de información actuales.

Tuberías: Los diseños de ejecución están destinados a explotar la naturaleza superescalar y pipelizada de los procesadores actuales. Esto se termina limitando el control de guía en círculo y la naturaleza multifacética del círculo. Estos círculos estrechos conducen a una mejor ejecución y a menos decepciones en las previsiones de las ramas.

Direcciones de SIMD: Las directrices de la Guía Única de Información Numerosa (SIMD) permiten que los cálculos de ejecución funcionen de manera más productiva al ejecutar diferentes actividades en un ciclo de reloj solitario. Bolt dispone la información para que sea apropiada para las actividades SIMD.

La región de la reserva, la canalización y las actividades superescalares habitualmente dan una ejecución 10-100 veces más rápida. Dado que numerosas tareas lógicas que quedan por hacer están ligadas a la CPU, estas ventajas se convierten en ganancias emocionales de ejecución para el cliente final. He aquí algunos modelos:

PySpark: IBM estimó una aceleración de 53 veces en la información preparada por Python y Sparkle al incluir soporte para Bolt en PySpark

Parquet y C++: Añadiendo información al parquet desde C++ hasta 4GB/s

Pandas: Añadiendo algo extra a los pandas hasta 10GB/s

Bolt además adelanta el intercambio de información cero duplicado. Como Bolt es considerado como el retrato interior en cada marco, un marco puede entregar información directamente al siguiente marco para su utilización. Es más, cuando estos marcos están situados en un centro similar, el duplicado representado arriba puede igualmente ser evitado usando la memoria compartida. Esto implica, en general, que el traslado de información entre dos marcos no tendrá ningún coste.

Productividad de la memoria

La ejecución en memoria es extraordinaria, sin embargo, la memoria puede ser rara. El cerrojo está pensado para funcionar independientemente de si la información no cabe completamente en la memoria. La estructura central de información incorpora vectores de información y surtidos de estos vectores (también llamados grupos de registros). Los grupos de registros son regularmente de 64KB-1MB, dependiendo de la carga restante, y generalmente se limitan a 2^16 registros. Esto mejora la región de almacenamiento, pero además, hace que el registro en memoria sea concebible incluso en circunstancias de baja memoria.

Con numerosos y enormes paquetes de información que van de 100 a 1000 servidores, los marcos deben tener la opción de explotar la memoria total de un grupo. Bolt tiene la intención de limitar el gasto de mover información en el sistema. Utiliza disipar/ensamblar perusa y compone e incluye una configuración de cero serialización/deserialización, permitiendo un mínimo esfuerzo de desarrollo de información entre los centros. Además, Bolt funciona legítimamente con interconexiones competentes en RDMA para dar una red de memoria solitaria a las cargas pendientes más grandes de la memoria.

Lenguaje de programación de respaldo

Otra ventaja importante de recibir Apache Bolt, además de una ejecución e interoperabilidad más fundamentada, es la igualdad de condiciones entre los diversos dialectos de programación. El intercambio de información convencional depende de las conciliaciones de los niveles de la interfaz de programación y del IPC. Si bien esto suele ser sencillo, perjudica la ejecución cuando el lenguaje del cliente no es exactamente el mismo que el del marco fundamental. Dependiendo del lenguaje y de la disposición de los cálculos actualizados, el cambio de lenguaje causa la mayor parte del tiempo de manipulación.

Apache Bolt actualmente soporta C, C++, Java, Javascript, Go, Python, Rust y Ruby.