MXPA06009355A - Base de datos paralela ultra - nada compartida. - Google Patents

Base de datos paralela ultra - nada compartida.

Info

Publication number
MXPA06009355A
MXPA06009355A MXPA06009355A MXPA06009355A MXPA06009355A MX PA06009355 A MXPA06009355 A MX PA06009355A MX PA06009355 A MXPA06009355 A MX PA06009355A MX PA06009355 A MXPA06009355 A MX PA06009355A MX PA06009355 A MXPA06009355 A MX PA06009355A
Authority
MX
Mexico
Prior art keywords
slave
partitioned
tables
slave nodes
dimension
Prior art date
Application number
MXPA06009355A
Other languages
English (en)
Inventor
Stuart Frost
Original Assignee
Datallegro Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=35125731&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=MXPA06009355(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Datallegro Inc filed Critical Datallegro Inc
Publication of MXPA06009355A publication Critical patent/MXPA06009355A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

Se describe un sistema de bases de datos paralelas, ultra-nada compartidas que incluye por lo menos un nodo amo y multiples nodos esclavo. Una base de datos consistente en por lo menos una tabla de hechos y multiples tablas de dimension se particiona y distribuye a lo largo de los nodos esclavo del sistema de bases de datos para que las consultas sean procesadas en paralelos sin requerir de la transferencia de datos entre los nodos esclavo. La tabla de hechos y una primera tabla de dimension de la base de datos se particionan a lo largo de los nodos esclavo. Las demas tablas de dimension de la base de datos se duplican en cada uno de los nodos esclavo y por lo menos una de estas otras tablas de dimension se particiona a lo largo de los nodos esclavo.

Description

BASE DE DATOS PARALELA ULTRA-NADA COMPARTIDA Esta solicitud reclama el beneficio ante la solicitud provisional US No. 60/546,428, presentada el 21 de febrero de 2004, la cual se incorpora para referencia en la presente.
Campo de la invención La presente invención se refiere a los sistemas de bases de datos paralelas, y en particular se refiere a un sistema de bases de datos paralelas nada compartidas .
Antecedente de la invención Los sistemas de bases de datos paralelas diseñados utilizando arquitectura nada compartida consisten en múltiples nodos, cada uno con sus propios recursos de procesamiento, memoria y disco. En estos sistemas, las tablas de una base de datos se distribuyen a lo largo de lo nodos del sistema. Las consultas contra la base de datos entonces se corren- en paralelo en múltiples nodos al mismo tiempo. Los sistemas de bases de datos nada compartidas están destinados a proporcionar escalamiento lineal donde al aumentar la cantidad de nodos del sistema se mejora el desempeño y permite manejar series de datos más grandes. Sin embargo, los diseños convencionales no proporcionan un escalamiento lineal por problemas como puede ser el sesgo de la consulta.
El sesgo de la consulta se observa cuando dos consultas diferentes de un nivel de complejidad semejante contra la misma base de datos tardan tiempos muy diferentes para ejecutarse. En los sistemas de bases de datos paralelas, nada compartidas, normales, el sesgo de •la consulta es el resultado de tener que transferir cantidades grandes de datos entre nodos para procesar algunas consultas, mientras que otras consultas son procesadas con poca o ninguna transferencia de datos. Esta transferencia de datos hace más lento el procesamiento de la consulta y crea cuellos de botella en los sistemas tradicionales.
Por ejemplo, en un sistema tradicional que tiene 4 nodos, las tablas de las bases de datos muchas veces se distribuyen igualmente cinco una cuarta parte de cada tabla almacenada en cada nodo. Las consultas comunes a la base de datos pueden ser uña o más "uniones" que barren las tablas de las bases de datos buscando coincidencias entre una primera clave de una tabla y una clave ajena de otra tabla. Para procesar una unión de dos tablas de bases de datos, cada nodo debe transferir su parte de una de las tablas de la base de datos a los demás nodos . Dependiendo de las tablas de base de datos que se estén uniendo y cuantas uniones estén incluidas- en una consulta, esta transferencia de datos pueden necesitar tiempo significativo el cual retarda el procesamiento de la consulta. A medida que las series de datos se hacen más grandes y la cantidad de cesiones, de consulta crece, el sesgo de la consulta reduce cada vez más la eficacia del sistema. De acuerdo con el carácter de este problema, la incorporación de otros nodos en estos sistemas tradicionales no superar este cuello de botella en el procesamiento de las consultas.
Por consiguiente, existe la necesidad de un sistema de bases de datos paralelas, nada compartidas, mejorado que mitigue el sesgo de la consulta. Además, el sistema mejorado debe llevar al mínimo los gastos administrativos necesarios para operar el sistema y debe proporcionar protección segura contra relevos .
Compendio de la invención La presente invención se dirige a las deficiencias antes mencionadas de los sistemas de bases de datos nada compartidas, convencionales, proporcionando un sistema de bases de datos paralelas, ultra nada compartidazas . El sistema de bases de datos paralelas, ultra nada compartidas de la invención particiona y distribuye las tablas de una base de datos a través de múltiples nodos esclavos en una forma que permite que las consultas a la base de datos sean procesadas en paralelo sin requerir mucho que los datos sean transferidos entre los nodos como en la técnica anterior. La base de datos se distribuye de acuerdo con una serie de reglas que se refieren a la estructura de los esquemas de las bases de datos y el tamaño relativo de las tablas. Al reducir significativamente la necesidad de transferir datos entre nodos, la presente invención mejora significativamente el desempeño del sistema reduciendo el tráfico de red y el sesgo de la consulta resultante.
Para una base de datos determinada, la tabla de hechos y una de las tablas de dimensiones se particionan en una clave común y se distribuyen a través de múltiples nodos esclavos. Las tablas de dimensión pequeña en la base de datos se duplican en todos los nodos esclavos del sistema. Las tablas de dimensión restantes se particionan a través de los nodos esclavos y se duplican en todos los nodos esclavos. Esto permite que el sistema de las bases de datos ejecute la mayor, parte de las consultas sin ocasionar significativo tráfico de red entre los nodos esclavos o entre el nodo amo y los nodos esclavos.
De acuerdo con un aspecto de la invención, se proporciona ' un sistema de bases de datos paralelo que incluye un nodo amo y múltiples nodos esclavos. Una base de datos, que incluye una tabla de hechos y múltiples tablas de dimensiones, se distribuye a través de los nodos esclavos del sistema de bases de datos. Para distribuir las tablas de la base de datos, la tabla de hechos y una primera tabla de dimensiones se particiona a través de los nodos esclavos. Las tablas de dimensiones restantes se duplican en cada uno de los nodos esclavos y, si tienen un tamaño mínimo, también se particionan a través de los nodos esclavos.
Preferentemente, la tabla de hechos y la primera tabla de dimensiones se particionan en una clave común. Las tablas de dimensiones restantes se particionan, como una opción, por fila o por columna a través de los nodos esclavos del sistema. Las consultas contra la base de datos se traducen en por lo menos una subsconsulta que puede ser ejecutada por los nodos esclavos del sistema de bases de datos paralelas sin transferir datos entre los nodos esclavos.
De acuerdo con otro aspecto de la invención, el sistema de bases de datos paralela almacena en caché los resultados de la consulta producidos por el sistema de bases de datos. Preferentemente, el nodo amo incluye un caché de consulta para cachetizar los resultados de la consulta producidos por el nodo amo y los nodos esclavo cada uno incluye un caché de consulta para cachetizar los resultados de la subconsulta producidos por los nodos esclavos respectivos.
De acuerdo con otro aspecto de la invención, a cada uno de los nodos esclavos del sistema de bases de datos se asigna uno o más contra partes de relevo. La invención resumida antes proporciona un sistema de bases de datos paralelas eficiente y confiable. Se elimina el sesgo de la consulta del procesamiento de las consultas de la base de datos con lo que se permite escalamiento casi lineal del sistema de bases de datos. Una memoria caché de consulta binivel reduce el procesamiento de consultas repetitivas sin intervenir en cambios a las tablas subyacentes de las consultas. Por último, el uso de contrapartes de relevo entre los nodos esclavo proporciona una solución con una buena relación costo eficacia para proporcionar operación continua en el caso de falla del nodo.
El resumen anterior de la invención ha sido proporcionado de modo que se pueda comprender rápidamente el carácter de la invención. Una comprensión más detallada y completa de las modalidades preferidas de la invención se puede obtener haciendo referencia a la siguiente descripción detallada de la invención y los dibujos asociados.
Breve' descripción de los dibujos La Figura 1 es un diagrama esquemático que representa la arquitectura del Hardware de un sistema de bases de datos paralelas nada compartidas.
La Figura 2 es un diagrama esquemático que representa la arquitectura del software de un sistema de bases de datos paralelas ultra nada compartidas de acuerdo con una modalidad de la invención.
La Figura 3 es un diagrama de flujo que representa un proceso que se utiliza para generar un esquema esclavo.
La Figura 4 es un diagrama que representa un ejemplo de un esquema hospedero .
La Figura 5 es un diagrama de flujo que representa un proceso para ordenar las tablas de un esquema hospedero .
La Figura 6 es un diagrama de flujo que representa un proceso para másica de las tablas de una base de datos al sistema de bases de datos de acuerdo con una modalidad de la invención.
La Figura 7 es un diagrama de flujo que representa un proceso para cargar tablas de bases de datos en nodos esclavo de un sistema de bases de datos.
La Figura 8 es un diagrama de flujo que representa un proceso para la carga másica de los datos previamente clasificados directamente en los nodos esclavos.
La Figura 9 es un diagrama de flujo que representa un proceso efectuado luego de recibir una nueva instrucción desde un sistema hospedero externo.
La Figura 10 es un diagrama de flujo que representa un proceso para el análisis y procesamiento de una instrucción SQL.
La Figura 11 es un diagrama de flujo que representa un proceso para alterar una tabla de base de datos.
La Figura 12 es un diagrama de flujo que representa un proceso para actualizar o insertar datos en las tablas de la base de datos.
La Figura 13 es un diagrama de flujo que representa un proceso de paralelización de la consulta.
La Figura 14 es un diagrama de flujo que representa un proceso para gestionar una consulta en un solo paso .
La Figura 15 es un diagrama de flujo que representa un proceso para sustituir nombres de tabla en una consulta con los nombres de las tablas utilizadas en un esquema esclavo.
La Figura 16 es un diagrama de flujo que representa un proceso realizado en un nodo esclavo para gestionar una consulta.
La Figura 17 es un diagrama de flujo que representa un proceso de consulta en múltiples pasos.
La Figura 18 es un diagrama de flujo que representa un proceso de relevo realizado en el caso de una falla del nodo amo .
La Figura 19 es un diagrama de flujo que representa un proceso de relevo realizado en el caso de una talla de no nodo esclavo.
Descripción detallada de la invención La presente invención es un sistema de bases de datos paralelas, nada compartidas, mejorado, que se conoce como un sistema de bases de datos paralelas, ultra nada compartidas . El sistema de bases de datos paralelas ultra nada compartidas esta configurado en una forma semejante a los sistemas de bases de datos paralelas nada compartidas, tradicionales, utilizando por lo menos un nodo amo y múltiples nodos esclavos . La Figura 1 es un diagrama esquemático que representa la arquitectura del Hardware de una modalidad del sistema de bases de datos paralelas, ultra nada compartidas.
La Figura 1 representa la configuración del sistema de bases de datos 10, el cual incluye el nodo amo 11 y nodos esclavos 12a a 12n. Para simplificar el diagrama, la Figura 1 incluye solo un nodo amo 11. Sin embargo, como se describe con mayor detalle más adelante, otras modalidades de la invención incorporan múltiples nodos amo 11 en el sistema de bases de datos 10. El nodo amo 11 y los nodos esclavos 12a a 12n están interconectados a través de la red 13. Preferentemente, la red 13 es una red redundante que se utiliza para mejorar la confiabilidad del sistema de bases de datos 10. En otra versión, es posible utilizar una red no redundante para aplicaciones no cruciales. La red 13 se implementa utilizando cualquiera de un número de técnicas de disposición de red y protocolos bien conocidos para los expertos en la técnica. Las redes ejemplares pueden ser, pero no se limitan a, TCP/IP sobre Ethernet y MPI (interfaz de paso de mensajes) sobe Infiniband.
Cada nodo del sistema de la bases de datos 10 incluye sus propios recursos de procesamiento, memoria y disco. Específicamente, el nodo amo 11 incluye la unidad de procesamiento central (CPU) 14, memoria de acceso aleatorio (RAM) 15 y el disco 16. Los nodos esclavos 12a a 12n incluyen las CPU 17a a 17n, RAM 18a a 18n y los discos 19a a 19n, respectivamente. Las CPU ejecutan instrucciones de programas de módulos de Software almacenados en los discos respectivos. Las CPU utilizan la RAM como espacio de trabajo o cargar secuencias de instrucciones y almacenar y manipular datos. Si bien cada nodo esta representado como que incluye una sola CPU y un solo disco, un experto en la técnica se dará cuenta que cada nodo puede incluir múltiples CPU y múltiples discos para mejorar el desempeño del sistema. Por ejemplo, una instrumentación de la invención utiliza nodos que tienen procesadores dobles y arreglos de 12 discos duros.
Además de los componentes básicos de Software, como puede ser un sistema operativo y controladores de dispositivos, cada nodo del sistema de bases de datos 10 almacena y ejecuta módulos de Software que se utilizan para implementar la presente invención. La Figura 2 es un diagrama esquemático que representa la arquitectura del Software del sistema de bases de datos 10. El nodo amo lia incluye Software de manejo de flujos 20, Software del caché de consulta 21, Software de análisis del Lenguaje Estructurado de Consulta (SQL) 22, el Software para la generación de esquemas esclavos 23, Software para actualización e inserción 24, Software de paralelización y optimización de consultas 25, Software para la ejecución de consultas en múltiples pasos 26, Software para el análisis de las series de resultados 28, Software para el mantenimiento de la partición de las fechas 29, Software para la carga másica 30, Sistema de Manejo de Bases de Datos (DBMS) 31 y Software para la gestión del sistema 32. En modalidades que utilizan nodos amo, múltiples, cada nodo amo esta configurado con los módulos de Software antes descritos . Cada nodo esclavo incluye un DBMS (los DBMS 33a a 33n) y Software para la gestión de los esclavos 34a a 34n, respectivamente. Por último, el Software de la consola de gestión 35 esta instalado en uno o más nodos amos y se puede acceder a este a través de una terminal conectada al nodo amo o a través de un programa cliente que corra en un sistema de computo independiente del sistema de bases de datos 10.
Los módulos de Software antes mencionados se almacenan en los discos respectivos de los nodos del sistema de bases de datos y se ejecutan a través de las CPU respectivas de estos nodos. En una modalidad preferida, todos los nodos tienen una configuración de Hardware idéntica y pueden funcionar como un nodo amo o un nodo esclavo cargando y ejecutando módulos de Software apropiados en un nodo específico. De acuerdo con una modalidad de la invención, los módulos de Software se implementan utilizando el lenguaje de programación Java. No obstante, un experto en la técnica se dará cuenta que es posible utilizar otros lenguajes de programación para poner en práctica uno o más de los módulos de Software .
Una descripción detallada del funcionamiento de estos módulos de Software se proporciona más adelanté en la descripción de la operación de la invención.
Un mejoramiento significativo de la invención sobre los diseños de las bases de datos paralelas, nada compartidas, tradicionales es una reducción importante en la necesidad de transferir datos entre los nodos para gestionar consultas de las bases de datos como pueden ser las uniones. Este mejoramiento se logra utilizando una serie de reglas para la partición automática y distribución de las tablas de las bases de datos a través de los nodos esclavos del sistema de bases de datos 10. La partición y distribución de las tablas de las bases de datos se realiza de acuerdo con un esquema esclavo generado .
Un sistema hospedero externo envía metadatos que definen un esquema hospedero al sistema de bases de datos 10. El Software de gestión de flujos 20 recibe un flujo que contiene los metadatos y envía los metadatos al DBMS 31. Para generar un esquema esclavo para el esquema hospedero enviado, el DBMS 31 envía los metadatos del esquema hospedero hacia el Software que genera los esquemas esclavos 23. Luego de recibir el esquema hospedero, el Software que genera los esquemas esclavos 23 aplica a la serie de reglas para generar un esquema esclavo. El esquema esclavo define como se particionan y distribuyen las tablas de las bases de datos a través de los nodos esclavos 12a a 12n. La Figura 3 es un diagrama de flujo que representa un proceso que realiza el Software que genera los esquemas esclavos 23 para generar el esquema esclavo de acuerdo con una modalidad de la invención. Los pasos que se muestran en la Figura 3 incorporan la serie de reglas que se utilizan para generar el esquema esclavo.
En el paso 300, el Software que genera los esquemas esclavos 23 recibe un esquema hospedero proporcionado por un sistema hospedero externo conectado al sistema de la bases de datos 10. Los esquemas hospederos posibles incluyen, pero no se limitan a, esquemas de estrella, esquemas de copos de nieve y esquemas normalizados. La Figura 4 es un ejemplo de un esquema de copo de nieve utilizado como una referencia normal para los sistemas de bases de datos creados por el Transaction Processing Council (consejo de procesamiento de transacciones) . Este esquema incluye una tabla de hechos (LINEITEM) y múltiples tablas de dimensiones (ORDERS, CUSTOMER, PART, PARTSUPP, SUPPLIER, NATION y REGIÓN) . Una tabla de hechos se define como una tabla que no tiene relaciones padre- hijo con otras tablas de las cuales es el precursor. Una tabla de dimensiones se define como aquella que tiene una relación padre-hijo con otras tablas de las que es el precursor. Si bien el esquema representado en la Figura 4 incluye solo una tabla de hechos, se entiende que los esquemas de las bases de datos pueden incluir múltiples tablas de hechos .
En el paso S301, las tablas del esquema hospedero se orden en preparació -para generar los esquemas esclavos. La Figura 5 es un diagrama de flujo que representa un proceso para ordenar las tablas de los esquemas hospederos. En el paso S500, todas las tablas de hechos dentro del esquema hospedero están identificadas. Para cada una de las tablas de hechos identificadas, las relaciones de las tablas definidas en los esquemas hospederos son seguidas hacia afuera de la tabla de hechos para identificar una primera tabla de dimensiones en el paso S501 y ordenar las demás tablas de dimensiones relacionadas en el paso S502. Las tablas de dimensiones están ordenadas con base en sus posiciones' y relaciones con respecto a la tabla de hechos. En relación con el esquema hospedero representado en la Figura 4, la tabla LIN?ITEM esta identificada como la única tabla de hechos del esquema hospedero. Trabajando hacia afuera de la tabla LINEITEM, las tablas ORDERS, PART, PARTSUPP y SUPPLIER están identificadas como tablas que tienen relación directa con la tabla LINEITEM. Este primer escalón de tablas esta ordenado con base en un criterio especificado, como el tamaño. La primera tabla ordenada en este primer escalón, la tabla ORDER por ejemplo, se identifica como una primera tabla de dimensión. Mediante el uso de las relaciones entre tablas y los criterios de ordenación especificados, se ' orden el resto de las tablas de dimensión.
Para procesar eficientemente las consultas utilizando un sistema de las bases de datos paralelas, las tablas más grandes y accesadas con mayor frecuencia deben ser distribuidas tan uniforme y eficientemente a lo largo de los nodos esclavos como sea posible. En este sentido, la presente invención adopta un enfoque semejante al que se utiliza en los sistemas de bases de datos nada compartidas, convencionales. Específicamente, la presente invención refunde particiones de la tabla de hechos y la primera tabla de dimensión utilizando una clave común. Mediante la partición de refundición estas tablas utilizan una clave común, se mapea un determinado valor clave para un nodo específico y se pueden procesar las consultas que se unen a las dos tablas sin transferir datos Entre nodos esclavos. En el paso S302 de la Figura 3, se marca una clave de refundición en cada par tabla de hechos y primera tabla de dimensión. En relación otra vez con los esquemas hospederos representados en la Figura 4, se marca ORDERKEY como la clave de refundición puesto que es la clave primaria en la tabla ORDERS (primera tabla de dimensión) y .una clave ajena en la tabla LINEITEM (tabla de hechos) .
Una vez que las tablas de la base de datos han sido ordenadas y marcadas las claves de refundición, el proceso de generación de esquemas de esclavos esta listo para generar un esquema esclavo. Se examina cada tabla del esquema hospedero y se genera una o más tablas correspondientes en los esquemas esclavos . Primero en el paso S303 se determina si en la tabla actual es una tabla de hechos o una primera tabla de dimensión. Cada tabla de hechos y la primera tabla de dimensión se particionan horizontalmente y se distribuye a lo largo de los nodos esclavo. De este modo, cada nodo esclavo es responsable de una porción horizontalmente particionada de cada tabla de hechos y cada primera tabla de dimensión del esquema hospedero.
En una base de datos común, las tablas muchas veces contienen una cantidad importante de texto. Este texto normalmente se encuentra dentro de un campo de comentarios de la tabla. Una característica opcional de 5. la invención es la partición vertical de las tablas para quitar estos grandes campos de comentarios y colocarlos en una tabla independiente dentro del esquema esclavo. Al garantizar que las filas dentro de dos tablas se mantengan exactamente en el mismo orden, el campo o los campos de comentarios para una fila específica se pueden encontrar utilizando el identificador de la fila. La opción de la partición vertical es establece como una regla predeterminada o se establece utilizando entradas desde un administrador del sistema. En el paso S304 se determina si las tablas se van a particionar en el sentido vertical. Si no se establece la partición vertical, se genera una tabla particionada en el sentido horizontal en los esquemas esclavos en el paso S305. Si se determina partición vertical, se genera una serie de tablas en partición vertical en los esquemas esclavos en el paso S306. Estas tablas verticalmente particionadas son particiones verticales de una tabla horizontalmente particionada, y como una serie son equivalentes a una tabla horizontalmente particionada generada en el paso S305.
De acuerdo con una modalidad preferida de la invención, en cada nodo esclavo se almacena una copia completa de cada tabla además de las tablas de hechos y la primera tabla de dimensiones. En el paso S307, si la tabla que se esta examinando no es una tabla de hechos o una primera tabla de dimensión, en el esquema esclavo se genera una tabla completa. Al colocar una copia completa de cada una de estas tablas de dimensiones externas en cada nodo esclavo, las consultas, como puede ser las uniones entre las tablas de dimensiones externas y la tabla de hechos o la primera tabla de .dimensión se ejecutan en paralelo sin necesitar la transferencia de los datos de la tabla entre los nodos esclavos.
Además de una copia completa de cada una de las tablas de dimensiones externas, una modalidad preferida de la invención, como una opción, particiona y distribuye las tablas de dimensiones externas a lo largo de los nodos esclavos. Al incluir una copia completa de las tablas de dimensiones externas y las particiones de las tablas de dimensiones externas en los nodos esclavos, las consultas pueden ser optimizadas para referirlas a las tablas en los nodos esclavos que producirán el mejor desempeño del sistema. Sin embargo, algunas tablas de bases de datos no producen suficiente ganancia de desempeño para' justificar el procesamiento adicional y el espacio de almacenamiento. Por ejemplo, podrían no proporcionar beneficios significativos en el desempeñó para la partición y distribuir tablas de bases de datos relativamente pequeñas a través de los nodos esclavos. Por consiguiente, este aspecto de la invención es una opción que se establece como una regla predeterminada o mediante una entrada desde un administrador del sistema para no particionar algunas tablas de dimensiones externas, como pueden ser aquellas que están por debajo de un tamaño especificado.
En el paso S308 se determina si la tabla actual va a ser particionada o no. Si no se establece la opción de partición, o si la tabla satisface los criterios de partición, el paso S309 determina si se ha establecido partición vertical de las tablas . Si no ha sido establecida la partición vertical, se genera una tabla horizontalmente particionada en los esquemas esclavos del paso S310. Si se ha establecido la partición vertical, se genera una serie de tablas verticalmente particionadas en el esquema del paso S311. Estas tablas verticalmente particionadas son particiones verticales de una tabla horizontalmente particionada, y como conjunto son equivalentes a una tabla horizontalmente particionada generada en el paso S310.
Una vez que todas las tablas del esquema hospedero han sido examinadas y se han creado las tablas apropiadas en el esquema esclavo, el esquema esclavo generado se almacena en el DBMS31 y se envía a cada uno de los nodos esclavos en el paso S312. El esquema esclavo se utiliza en los nodos amo y los nodos esclavos para cargar y particionar las tablas de una base de datos en el sistema de bases de datos .
Los datos para una base de datos particular se cargan en forma masiva en el sistema de bases de datos de la invención a través de uno de los nodos amo o, de otro modo, un nodo de carga másica dedicado. La Figura 6 es un diagrama de flujo que representa el proceso para la carga másica de datos en el sistema de bases de datos. Para cargar cada tabla, el proceso implica la preparación de los esclavos para recibir datos determinando candados apropiados en las tablas pertinentes en el paso S601 y enviar los datos para cada tabla a todos los nodos esclavos en el paso S602. Preferentemente, los datos se envían a los nodos esclavos a' través de un servicio de multidifusión proporcionado por la red entre nodos.
En el paso S603 la tabla recibida por los nodos esclavos se particiona de acuerdo con el esquema esclavo.
La Figura 7 es un diagrama de flujo que representa el proceso de cargar y particionar una tabla en un nodo esclavo. Para cargar y particionar la tabla en un nodo específico, • el Software de gestión de esclavos 34 examina cada fila de la tabla. En el paso S700 se determina si la tabla va a ser cargada completa, en cuyo caso cada fila es cargada en la tabla apropiada en el paso S701. En el paso S702 se determina si la tabla se mantiene en forma particionada. Si es así, cada fila es examinada en el paso S703 para determinar si la fila esta incluida en las tablas particionadas del nodo esclavo específico. Observe que cada nodo esclavo es responsable de una porción única de filas de la tabla particionada. La partición de la tabla se realiza utilizando cualquiera de los diferentes algoritmos conocidos para dividir y distribuir las filas de la tabla. Preferentemente, las tablas se particionan de igual forma a lo largo de los nodos esclavos. Con base en el algoritmo utilizado para particionar las filas de la tabla, se determina si el nodo esclavo particular es responsable de la fila que se examina .
Una característica opcional de la presente invención es el uso de la partición de fechas para particionar y distribuir los datos. Con la partición de fechas, las tablas de una base de datos se particionan y distribuyen de acuerdo con las fechas pertinentes dentro de los datos. Las fechas pueden ser establecidas utilizando reglas definidas o pueden ser controladas por la entrada del administrador del sistema. Por ejemplo, los datos para años, trimestres o meses específicos pueden ser almacenados en diferentes nodos esclavos. Estas tablas particionadas por fechas se almacenan y utilizan para procesar consultas a bases de datos que respondan a fechas. Las tablas particionadas por fechas regularmente se mantienen para eliminar datos que no entran dentro de los intervalos de fechas pertinentes. Preferentemente, las tablas particionadas por fechas se almacenan en nodos esclavos dedicados para particionar fechas. Sin embargo, las tablas particionadas por fechas también se pueden almacenar en los nodos esclavos normales junto con las demás tablas particionadas y no particionadas.
En el paso S704 se determina si el nodo esclavo particular es un nodo esclavo particionado por fechas y, si es así en el paso S705 si la fila que se esta examinando entra dentro del intervalo de fechas almacenado por el nodo esclavo. Si el nodo esclavo es un nodo esclavo particionado por fechas y la fila entra dentro del intervalo de fechas pertinente, se determina en el paso S706 si la fila esta particionada verticalmente con base en el esquema esclavo. Para filas particionadas verticalmente, la fila se escribe en la serie apropiada de tablas verticalmente particionadas en el paso S707. Si la fila no esta particionada verticalmente, la fila se escribe en la tabla horizontalmente particionada, apropiada, en el paso S708.
Una característica opcional de la invención es el uso de otro nivel de partición de tablas dentro de los nodos esclavos, utilizando cualquiera de los diferentes algoritmos de partición conocidos. Por ejemplo, las tablas pueden ser particionadas por valor de refundición o intervalo de fechas .
El sistema de bases de datos de la invención también esta diseñado para proporcionar protección de relevo. Para poner en práctica esta protección, los nodos esclavos tienen asignados contra partes de relevo. Además de sus propias tablas particionadas, cada nodo esclavo almacena las tablas particionadas de su contra parte relevo y utilizará el mismo algoritmo para actualizar las tablas pertinentes, como se describe en la presente. Mediante el uso de este sistema de relevo se proporciona un elevo nivel de confiabilidad sin utilizar arreglos de discos en espejo o basados en paridad en cada nodo. Esto reduce costos de instrumentación puesto que es posible utilizar sistemas de discos RAID de nivel 0 para obtener mayor eficacia sin mayores costos asociados con el mayor nivel de los sistemas RAID.
Si la fila que se esta examinando no entra dentro del intervalo de fechas de las tablas particionadas por fechas en los nodos esclavos, o si los nodos esclavos no almacenan tablas particionadas por fechas, se determina en el paso S70-9 si fila esta verticalmente particionada en el nodo esclavo. Si la fila esta verticalmente particionada, esto se escribe en la serie apropiada de tablas verticalmente particionadas en el paso S710.
En el paso S711 se determina si la fila es parte de una tabla horizontalmente particionada en el nodo esclavo. Si la fila es parte de una tabla horizontalmente particionada, la fila se escribe en esa tabla en el paso S712.
Una vez que todas las filas de una tabla específica han sido adicionadas a la base de datos, el índice de las diferentes tablas físicas afectadas se actualiza en el paso S713.
Otra característica mejorada del desempeño de la presente invención es el uso de una memoria caché de consulta y una memoria caché de tablas temporal . Una memoria caché de consulta es almacenada y se mantiene en el DBMS31 en cada uno de los nodos amo y en el DBMS33 en cada nodo esclavo . La memoria caché de consulta almacenad resultados de consulta para gestiones de consultas en el nodo particular. Una memoria caché de tablas temporal se almacena y mantiene en el DBMS31 en cada nodo amo para almacenar tablas temporales generadas por el nodo amo mientras se ejecutan consultas de múltiples pasos. Cuando las tablas son cargadas en el sistema de bases de datos, las memorias caché de consulta y caché de tablas temporal que contienen resultados generados basados en las versiones anteriores de las tablas se deben borrar. Por consiguiente, en el paso S604 se vacían las memorias caché de consulta y de tablas temporal pertinentes. Una descripción más detallada del funcionamiento de estas memorias caché se proporciona más adelante.
Los diferentes procesos antes descritos utilizan carga masiva de tablas en el sistema de datos para clasificar y particionar las tablas. Un proceso opcional para cargar datos en el sistema de bases de datos es clasificar previamente los datos utilizando un sistema hospedero externo que tenga acceso a los esquemas esclavos generados y cualquier parámetro del sistema que afecte la distribución de los datos. Los datos previamente clasificados pueden derivar los nodos amo y ser cargados directamente en los nodos esclavo . La Figura 8 es un diagrama de flujo que representa un proceso para la carga masiva de los datos previamente clasificados.
Como se muestra en la Figura 8 , cada tabla y cada partición de los datos previamente clasificados se examina y carga en los nodos esclavos .apropiados . Para cada tabla que se almacena completa en los nodos esclavos, todos los nodos esclavos se preparan para la carga masiva de la tabla en el paso S800 y todo el contenido de la tabla se envía a todos los nodos esclavos en el paso S801. Para cada partición de los datos almacenados, la serie relevo asignada de nodos esclavos se prepara para carga la partición en el paso S802 y se envía la partición a la serie de relevos en el paso S803. Por último, en el paso S804 se vacían las memoria caché de consulta y caché de tablas temporal apropiadas.
De acuerdo con una modalidad de la invención, los sistemas hospederos externos se comunican con el sistema de bases de datos utilizando instrucciones SQL. Las instrucciones SQL generalmente se separan en flujos "por el sistema hospedero, con cada flujo correspondiente a un usuario o aplicación particular. El uso de flujos para organizar instrucciones SQL garantiza que las instrucciones sean ejecutadas por el sistema de bases de datos en el orden correcto. Los flujos de las instrucciones SQL recibidas por el sistema de bases de datos se manejan por el Software de gestión de flujos 20 en cada nodo amo. La Figura 9 es un diagrama de flujo que representa el procesamiento realizado por el Software de gestión de flujos 20 al recibir una nueva instrucción desde un sistema hospedero externo.
Como ya se describió. El sistema de bases de datos de la presente invención incluye uno o más nodos amos.
Las instrucciones SQL enviadas por el sistema hospedero externo son recibidas por cada uno de los nodos amos y procesadas en la forma que se describe en la Figura 9.
Específicamente, para cada flujo de nodo amos, el Software de gestión 20 determina en el paso S901 si la instrucción recibida es el comienzo de un nuevo flujo o parte de un flujo existente que ya esta siendo procesado por el sistema de bases de datos . Si la instrucción es el comienzo de un nuevo flujo, el Software de gestión de flujos 20 determina en el paso S902 si el flujo debe ser controlado por ese nodo amo particular. Cada flujo es controlado por un nodo amo en el sistema de bases de datos. El Software de gestión de flujos 20 en cada no amo se comunica con otros nodos amos para determinar cual, de los nodos amos controlará un flujo que ingrese. El control de flujos se determina utilizando cualquiera de los diferentes algoritmos equilibradores de carga, conocidos. Si se determina en el paso S902 que el nodo amo correspondiente va a controlar el flujo, el Software de gestión de flujo 20 notifica a los demás nodos amo que esta controlando el flujo en el paso S903.
Puesto que cada instrucción es recibida por los nodos amo, el Software de la memoria caché de consulta 21 en cada nodo amo compara la instrucción contra la memoria caché de consulta del nodo amo en el paso S904. Como ya se menciono, cada nodo amo almacena los resultados de las consultas anteriores en una memoria caché de consulta. En el paso S904, la instrucción es comparada contra la memoria caché de consulta para determinar si se ha procesado anteriormente una instrucción idéntica en el nodo amo con cambios intervinentes a las tablas subyacentes. Si se ha procesado anteriormente una instrucción idéntica, el resultado correspondiente establece para esa instrucción que sea recuperada de la memoria caché de consulta y enviada a cualquier sistema hospedero externo o el nodo amo que controle el flujo de consultas en el paso S905 y el procesamiento de la instrucción mediante el nodo amo termina. Si la instrucción no se encuentra en la memoria caché de consulta, en el paso S906 se determina si la instrucción recibida es parte de un flujo controlado por el nodo amo asociado. Si el nodo amo controla el flujo particular, la instrucción es procesada por el Software de análisis SQL 22 en el paso S907. SI la instrucción no es parte de un flujo controlado por el nodo amo asociado, el procesamiento de la instrucción por el nodo amo termina y el Software de gestión de flujos 20 espera la siguiente instrucción que será recibida.
La Figura 10 es un diagrama de flujo que representa un proceso realizado por el Software de análisis SQL 22 para preparar instrucciones para otro procesamiento. Para preparar cada instrucción para procesamiento posterior, en el paso SlOOl se asignan testigos a la instrucción, y se analizan los testigos en el paso S1002. Por último, en el paso S1003 se llama a la subrutina pertinente para procesar instrucciones analizadas. Las subrutinas posibles pueden ser, pero no se limitan a, alterar la tabla, actualizar o insertar datos y la paralelización de la consulta.
La Figura 11 es un diagrama de flujo que representa un proceso realizado por una s'ubrutina de alteración de tabla llamada por el Software de análisis SQL 22 para alterar una tabla de la base de datos . La alteración de -las tablas de la base de datos se realiza principalmente por el Software que genera esquemas esclavos 23. El proceso comienza cuando se determina, en el paso S1100, si la tabla que va a ser alterada es una tabla de hechos o una primera tabla de dimensión. Si la tabla es una tabla de hechos o una primera tabla de dimensión, se determina en el paso S1101 si la tabla que esta siendo alterada esta particionada verticalmente. Si la tabla no esta particionada verticalmente, las alteraciones a la tabla se hacen en la tabla horizontalmente particionada, correspondiente, en los metadatos almacenados en el DBMS 31 del nodo amo o en cada uno de los nodos esclavos en el paso S1102. Si la tabla que se esta alterando esta verticalmente particionada, la serie correspondiente de tablas verticalmente particionadas se altera en los metadatados almacenados en el DBMS31 del nodo amo y en cada uno de los nodos esclavos en el paso S1103.
Si la tabla que se va a alterar no es una tabla de hechos o una primera tabla de dimensión, la tabla correspondiente se altera en los metadatos almacenados en DBMS31 del nodo amo y en cada uno de los nodos esclavos en el paso S1104. En el paso S1105 se determina si la tabla que se va a alterar esta particionada en los nodos esclavos. Si la tabla esta particionada, se determina en el paso S1106 si la tabla esta verticalmente particionada. Si la tabla no esta particionada verticalmente, los metadatos y el contenido real de la tabla horizontalmente particionada correspondiente se altera en el paso S1107. Si la tabla esta verticalmente particionada, los metadatos y el contenido real de la tabla para la serie correspondiente de tablas verticalmente particionadas se altera en el paso S1108. Por último, en el paso S1109, se vacían las entradas de las memoria caché de consulta y las entradas de la memoria caché de tablas temporal que dependen de la tabla alterada.
La Figura 12 es un diagrama de flujo que representa un proceso realizado por una subrutina de actualización e inserción llamada por el Software de análisis SQL22 para actualizar o insertar datos en la base de datos. Para cada fila que este actualizando o insertando, se determina en el paso S1200 si la fila es parte de una tabla que se mantuvo solo en forma particionada en los nodos esclavos, como puede ser una tabla de hechos o una primera tabla de dimensión. Si la fila es parte de una tabla, que no se mantuvo solamente en forma particionada, la fila es escrita a cada uno de los nodos esclavo en el sistema en el paso S1201. La fila es parte de una tabla que se mantuvo solamente en forma particionada, la fila es particionada de acuerdo con la clave de refundición apropiada y como una opción la fecha pertinente en el paso S1202 y se escribe a las tablas particionadas en el nodos esclavo pertinentes en el paso S1203. En el paso S1204 se actualizan los índices de todas las tablas cambiandas en la base de datos. Por último, en el paso 51205 se vacían todas las entradas de la memoria caché de consulta y de la memoria caché de tablas temporal que dependen de la tabla en la que se actualizaron o insertaron los datos.
Las instrucciones de consulta se procesan y optimizan por el Software de paralelización de consultas 25. La Figura 13 es un diagrama de flujo que representa un proceso de paralelización de consultas. En el paso 51301 se determina si la consulta busca un intervalo de fechas específico cubierto por alguna de las particiones de fechas establecidas en el sistema de bases de datos. Si la consulta busca un intervalo de fechas cubierto por una partición de fechas, el grupo de nodos esclavo utilizados para este intervalo de fechas particular es designado, en el paso S1302 para que sea utilizado para el procesamiento de la consulta. Si la consulta no busca un intervalo de fechas particular, o si el intervalo de fechas no corresponde con ninguna de las particiones de fechas establecidas, en el paso S1303 se designa a los nodos esclavos que serán utilizados para procesar la consulta. Los pasos S1304, S1305 y S1306 determinan como ejecutar la consulta en los nodos esclavos con base en la estructura de la consulta y el uso de las técnicas bien conocidas para los expertos en la técnica. En el paso S1304,' las subconsultas que deben ser gestionadas independientemente se dividen en dos consultas independientes. La subconsulta se ejecuta primero, con los resultados intermedios reunidos en el nodo amo y luego regresados a los nodos esclavos para otro procesamiento junto con el resto de la consulta. En el paso S1305, las uniones externas se dividen en consultas múltiples que se ejecutan de común acuerdo con los nodos esclavos y los nodos amo para satisfacer la consulta. Por último, en el paso S1306 el optimizador de consultas evalúa el consto de las estrategias de ejecución en múltiples pasos y en un solo paso y elige la opción de costo más bajo, otra vez utilizando las técnicas bien conocidas para los expertos en la materia. Entonces la consulta va hacia el paso S1307 para las consultas de un paso o el paso S1308 para consultas de múltiples pasos, después de lo cual la serie de resultados es regresada al hospedero en el paso S1309.
La Figura 14 es un diagrama de flujo que representa un proceso para gestionar una consulta de un solo paso. Las consultas son recibidas desde el sistema hospedero externo que se refiere a las tablas utilizando los nombres de las tablas del esquema hospedero. Para procesar las consultas en paralelo utilizando los nodos esclavo, los nombres de las tablas deben ser sustituidos con nombres de tablas correspondientes desde el esquema esclavo. En una modalidad alternativa, los nombres de las tablas utilizados en el esquema hospedero podrían utilizarse en el esquema esclavo generado para que las consultas de un paso se puedan enviar directamente a los nodos esclavo. En el paso S1401 los nombres de las tablas que se mencionan en la consulta son sustituidos con los nombres de tablas correspondientes del esquema esclavo. La Figura 15 es un diagrama de flujo que representa un proceso que se utiliza para sustituir los nombres de las tablas contenidos en la consulta.
En el paso S1500, las uniones y/o tablas procedentes de la consulta son reordenados trabajando hacia afuera de la tabla de hechos. La consulta ordenada es examinada en el paso S1501 para determinar si hay alguna unión que se vaya a gestionar en la consulta. Si la consulta no contiene una' unión, en el paso S1502 se determina si la tabla utilizada en la consulta se mantuvo solamente en forma particionada en los nodos esclavos. Si la tabla se mantuvo completa en los nodos esclavos, el nombre de la tabla no se sustituye y termina el procesamiento. Si la tabla se mantuvo solamente en forma particionada, en el paso S1503 se determina si la tabla esta verticalmente particionada en el esquema esclavo. Si la tabla no esta verticalmente particionada, el nombre de la tabla es sustituido con el nombre de la tabla horizontalmente particionada, correspondiente, en el paso S1504. En otra versión, si la tabla esta verticalmente particionada en el esquema esclavo, se determina en el paso S1505 si la consulta utiliza alguna de las columnas, como grandes campos de comentarios, que fueron removidos por la partición vertical. Si en la consulta no se utilizan las columnas eliminadas, el nombre de la tabla es sustituido con el nombre de la tabla verticalmente particionada, correspondiente en el paso S1506. Si en la consulta se utiliza alguna de las columnas removidas, el nombre de la tabla es sustituido con el nombre de la tabla verticalmente particionada, correspondiente, y se modifica la consulta para obtener la fila correspondiente de la tabla que contiene las columnas removidas en el paso S1507. Esto se logra a través de un identificador de filas que utilice técnicas bien conocidas para los expertos en la materia.
Si en el paso S1501 se determina que la consulta incluye uniones , cada unión es examinada en su momento . Para cada tabla en la unión actual, en el paso S1508 se determina si la tabla es una tabla de hechos o una primera tabla de dimensión. Si la tabla es una tabla de hechos o una primera tabla de dimensión, en el paso S1509 se determina si la tabla esta verticalmente particionada en el esquema esclavo. Si la tabla no esta verticalmente particionada, el nombre de la tabla se sustituye con el nombre de la tabla horizontalmente particionada, correspondiente, en el paso S1510. Si la tabla esta verticalmente particionada, se determina si la consulta utiliza alguna de las columnas removidas en la partición vertical en el paso S1511. Si en la consulta no se utilizan las columnas removidas, el nombre de la tabla es sustituido con el nombre de la tabla verticalmente particionada, correspondiente, en el paso S1512. En otra versión, si en la consulta se utiliza algunas de las columnas removidas, el nombre de la tabla se sustituye con la tabla verticalmente particionada, correspondiente, y se modifica la consulta para obtener la fila correspondiente de la tabla que contiene las columnas removidas en el paso S1513. Esto se logra a través de un identificador de filas que utilice las técnicas bien conocidas para los expertos en la materia.
Si en el paso S1508 se determina que la tabla no es una tabla de hechos o una primera tabla de dimensión, en el paso S1514 se determina si alguno de los nombres de las tablas utilizados en la consulta que han sido examinadas han sido sustituidos con el nombre de la tabla horizontalmente particionada, correspondiente. Si ninguno de los nombres de las tablas horizontalmente particionadas han sido incluidos en la consulta, el proceso continúa al paso S1509. Los pasos S1509 al paso S1513 entonces se repiten en la forma antes descrita. Si se ha sustituido un nombre de tabla con el de una tabla horizontalmente particionada, en el paso S1515 se determina si la tabla tiene la misma clave de partición que la tabla horizontalmente particionada ya utilizada. Si la tabla tiene la misma clave de partición, la unión se lleva a cabo entre particiones co-localizadas de las tablas y el proceso continúa a los pasos S1509 a S1513, los cuales se realizan en la forma antes descrita. Si la tabla no tiene la misma clave de partición, no se sustituye el nombre de la tabla y finaliza el proceso.
Regresando a la Figura 14, una vez que los nombres de las tablas han sido sustituidos en el paso S1401, en el paso S1402 se optimiza la consulta para la base de datos particular que se este utilizando en los nodos esclavos utilizando las técnicas bien conocidas para los expertos en la materia. Por ejemplo, los parámetros para el costo de los ciclos de la CPU en relación co los ciclos de E/A- se pueden cambiar para que la consulta se ejecute con mayor eficiencia. La consulta optimizada entonces es enviada a los nodos esclavos en el paso S1403. En el caso de que falle un nodo esclavo, la consulta se envía a las contrapartes relevo apropiadas del nodo esclavo que fallo, además de los demás nodos esclavos del sistema, como se describe con mayor detalle más adelante. El Software de gestión de esclavos 34 en cada nodo esclavo recibe y procesa la consulta procedente del nodo amo responsable. La Figura 16 es un diagrama de flujo que representa los pasos del proceso realizados por el Software de gestión de esclavos cuando se recibe una nueva consulta. Observe que algunos casos la consulta puede ser ejecutada directamente por el DBMS en los nodos esclavos sin intervención del Software de gestión de esclavos .
Luego de recibir una nueva consulta desde un nodo amo, el Software de gestión de esclavos 34 determina, en el paso S1600, si la consulta debe ser traducida para el DBMS que se esta utilizando el nodo esclavo. El diseño del sistema de la invención no necesita un DBMS patentado para utilizarlo en el nivel de esclavo del sistema. Esta propiedad reduce los costos y tiempo de implementación del sistema puesto que en los nodos esclavo es posible utilizar un DBMS comercial. Si se necesita traducción, la consulta se traduce para el DBMS específico en el paso S1601. En el paso S1602 se determina si es necesario hacer alguna optimización para gestionar la consulta en el DBMS específico. Si se necesita optimización, la consulta se optimiza en el paso S1603.
Igual que el proceso realizado en el nivel amo, nuevas consultas son revisadas contra una memoria caché de consulta para ver si la consulta ha sido previamente gestionada contra la base de datos sin cambios intervinentes a las tablas mencionadas en la consulta. El Software para gestión de esclavos 34 mantiene una memoria caché de consulta para las tablas relevo y las tablas locales asignadas a ese nodo esclavo específico. Algunos productos de DBMS incluyen un caché de consulta de su propiedad. Si el DBMS que se ejecuta en el nodo esclavo mantiene una memoria caché de consulta, el Software de gestión de esclavos 34 no necesita comprobar o mantener su propio caché de consulta . Junto con el caché de consulta que se mantiene en el nivel amo, la invención proporciona un caché de consulta binivel que mejora la eficacia del sistema evitando repetición innecesaria del procesamiento de consultas.
En el paso S1604, la consulta recibida se compara contra el caché de consulta. Si la consulta se encuentra en el caché de consulta, la serie de resultados se recupera del caché de consulta en el paso S1605. Si la consulta no se encuentra en la memoria caché de consulta, la consulta es enviada al DBMS en el paso 1606 para su ejecución.
Una vez que la serie de resultados ha sido obtenida, el Software de manejo de esclavos 34 determina en el paso S1607 si la serie o series de resultados requieren procesamiento posterior antes de regresar la serie o series de resultados al nodo amo. Si se necesita procesamiento posterior, este se realiza en el paso S1608. Por último, la serie o series de resultados se regresan al nodo amo que origino la consulta en el paso S1609.
Regresando otra vez a la Figura 14, el Software de análisis de la serie de resultados 28 en el nodo amo recibe las series de resultados de cada uno de los nodos esclavos utilizados para procesar la consulta. En el paso S1404, el Software de análisis de la serie de resultados 28 realiza procesamiento posterior en las series de resultados recibidas. El procesamiento posterior puede ser, pero no se " limita' a, combinar las series de resultados en una sola serie de resultados, organizar la resultados dentro de la serie de resultados y dar forma a las serie de resultados en un formato que sea compatible con el sistema hospedero externo que somete la consulta.
La Figura 17 es un diagrama de flujo que representa un proceso de consulta de múltiples pasos de acuerdo con una modalidad de la invención. En el paso S1701, la consulta se divide en dos o más consultas esclavo. La división de estas consultas en consultas esclavo múltiples ser ejecutada en serie sobre los nodos esclavo elimina la necesidad de transferir datos entre nodos esclavos para procesar la consulta original y mejora la eficiencia del sistema gestionando estas consultas.
Las consultas de múltiples pasos dependen del uso de tablas temporales en el nodo amo que ejecuta la consulta. Estas tablas temporales almacenan series de resultados intermedios generados ejecutando las consultas esclavo individuales. Las tablas temporales se utilizan para acumular las series de resultados de cada consulta esclavo. En otra versión, las tablas temporales pueden ser enviadas a los nodos esclavo para ejecutar consultas esclavo subsecuentes que unan una tabla temporal con una tabla local en los nodos esclavo.
Al igual que las memorias caché de consulta utilizadas en los nodos amo y esclavo del sistema de bases de datos, cada nodo amo mantiene una memoria caché de tablas temporal almacenando copias de tablas temporales creadas para ejecutar consultas esclavo por este nodo amo en el DBMS de este nodo amo. Cuando se ejecuta una consulta esclavo, la consulta esclavo es verificada contra el caché de tablas temporal en el paso S1702 para determinar si la consulta esclavo particular ha sido ejecutada sin cambios intermitentes para las tablas 'subyacentes en las que depende la tabla temporal.
Si no hay una coincidencia en el caché de la tabla temporal, una tabla temporal para la consulta esclavo se crea en el paso S1703. ' La consulta esclavo entonces se ejecuta y los resultados se procesan en los pasos S17034 a S1707. Las acciones realizadas en estos pasos corresponden con las realizadas en los pasos S1401 a S1404 de la Figura 14, y por tanto, no serán descritas otra vez.
Una vez que se ha procesado la consulta esclavo, o si se encontró una coincidencia para la consulta esclavo en el caché de tablas temporales, el nodo amo determina, en el paso S1708, si queda alguna consulta esclavo. Si hay otras consultas esclavo que se han de ejecutar, esto se determina en el paso S1709 si las siguientes consultas esclavo requieren de una tabla temporal para el procesamiento. Si se requiere una tabla temporal en los esclavos, la tabla temporal es enviada a los nodos esclavo en el paso S1710 y el procesamiento regresa al paso S1702. Si no se necesita una tabla temporal, el procesamiento simplemente regresa al paso S1702 para la siguiente consulta esclavo.
Como se muestra en la Figura 13 , una vez que la consulta recibida desde el sistema hospedero externo ha sido ejecutada y procesada, sea como una consulta de un solo paso o una consulta de múltiples pasos, la serie de resultados final es regresada al sistema hospedero externo en el paso S1309.
Cada nodo amo en el sistema de bases de datos de la presente invención forma la interfaz con el Software de gestión del sistema 32 para monitorizar el estado de los demás nodos en el sistema de bases de datos. Los ejemplos del Software de gestión del sistema incluyen IPMI (Interfaz de Manejo de Plataformas Inteligentes) y el System Manager de Intel .
Luego de la recepción de la notificación de la falla de un nodo amo, el Software de gestión de flujos 20 envía un mensaje del estado del sistema a la consola de gestión 35 indicando la falla de unión nodo amo. La consola de gestión 35 es utilizada por el administrador del sistema para rastrear el estado del sistema de bases de datos y para identificar los nodos que falla y que deben ser reparados o sustituidos para mantener el funcionamiento del sistema. Una vez que la consola de gestión 35 es notificada de la falla del nodo amo, el Software de gestión de flujos 20 ejecuta un proceso de relevo del nodo amo.
La Figura 18 es un diagrama de flujo que representa el proceso de relevo realizado por el Software de gestión de flujo 20 en el caso de la falla de un nodo amo en el sistema de bases de datos. El proceso que representa la Figura 18 se realiza para cada uno de los flujos que manejan los nodos amo con falla. En el paso S1800, el nodo amo determina si este es responsable del flujo específico del nodo amo que fallo. De acuerdo con una modalidad de la invención, esta determinación se hace entre los nodos amo operativos del sistema de bases de datos utilizando el mismo método de equilibrio de carga que se utiliza para manejar nuevos flujos recibidos por el sistema de bases de datos .
Sin embargo, para hacer estas determinaciones es posible utilizar otros métodos conocidos en la técnica. Su el nodo amo determina que es responsable del flujo específico, el nodo amo notifica a los demás nodos amo en el paso S1801 que esta controlando el flujo.
Una vez que un nodo amo ha tomado control sobre un flujo, cada una de las instrucciones incompletas de ese flujo son tomadas por el nodo amo. En el paso S1802 se hace retroceder la instrucción incompleta utilizando técnicas de gestión de transacciones bien conocidas. La instrucción entonces se vuelve a correr en el paso S1803. De este modo, cada flujo controlado por el nodo amo con falla es tomada por un nodo amo operativo para mantener el funcionamiento del sistema de bases de datos, una vez que el nodo amo que fallo ha sido reestablecido o sustituido, este esta disponible para nuevos flujos recibidos por el sistema de bases de datos.
Además de la monitorización de los demás nodos amo en el sistema de bases de datos, el Software de gestión del sistema 32 también monitoriza cada uno de los nodos esclavo en el sistema. La Figura 19 es un diagrama de flujo que representa un proceso ejecutado tras la falla de un nodo esclavo en el sistema de bases de datos. En el caso de una falla de un nodo esclavo, el Software de gestión de flujos 20 es notificado de la falla en el paso S1900. El Software de gestión de flujos 20 entonces notifica al administrador del sistema de la falla del nodo a través de la consola de gestión 35. Para cada transacción incompleta que involucre el nodo esclavo que fallo, el Software de gestión de flujos 20 hace retroceder la transacción incompleta en el paso S1901 y vuelve a ejecutar la transacción en el ,rpaso S1902 utilizando el compañero o compañeros relevo correspondientes en lugar del nodo esclavo que fallo.
Durante el tiempo en el que el nodo esclavo que fallo esta siendo restablecido o sustituido, los nodos amo ejecutan consultas en los nodos esclavo operativos regulares y en los nodos esclavo compañeros relevo pertinentes . Por consiguiente, se mantiene la operación del sistema de bases de datos a pesar de la falla de un nodo esclavo. Una vez que el nodo esclavo ha sido reestablecido o sustituido, los nodos amo regresan a la ejecución de consultas normal .
Modalidades alternativas de la invención incluyen el uso de una configuración jerárquica de los nodos amo para manejar una cantidad grande de nodos esclavo. En esta configuración, el procesamiento realizado por los nodos amo se rompe en múltiples capas para mejorar el desempeño. Además, algo del procesamiento realizado a nivel de los nodos esclavo podría ser trasladado a un nivel de los nodos amo. Otras modalidades consisten en el uso de un sistema de almacenamiento compartido para los nodos esclavo del sistema de bases de datos en lugar del almacenamiento unido directo antes descrito .
Los datos relevo se podrían almacenar en un almacenamiento compartido y con ello permitir a cualquier nodo esclavo disponible realizar tareas de relevo para un nodo que falle.
El sistema de bases de datos paralelas, ultra-nada compartidas descrito en lo anterior proporciona ventajas importantes sobre el sistema de bases de datos paralelas, nada compartidas, convencional. La primera y más importante, el sistema de bases de datos de la presente invención evita sesgo de consultas y los efectos perjudiciales que este tiene sobre el desempeño de las bases de datos. Segunda, la partición y distribución de una base de datos a través de los nodos esclavo del sistema de bases de datos se realiza en forma automática. Esto aumenta la eficacia del sistema sin adicionar complejidad a la administración del sistema. Tercera,_ la memoria caché binivel utilizada para los resultados de las consultas caché evita repetición innecesaria del procesamiento de la misma consulta muchas veces. Por último, el proceso de relevo del sistema de bases de datos mantiene la operación del sistema en el caso de falla de los nodos .
La descripción anterior esta destinada a ilustrar modalidades preferidas de la presente invención. Sin embargo, los ejemplos establecidos en lo anterior no están destinados a limitar el alcance de la invención, la cual debe ser interpretada a partir de las reivindicaciones establecidas más adelante. Debe entenderse que es posible hacer diversas modificaciones a los ejemplos ilustrados sin apartarse del espíritu y alcance de la invención.

Claims (29)

REIVINDICACIONES
1. Un sistema de bases de datos paralelas que consiste en: un nodo amo; una pluralidad de nodos esclavo; medios para distribuir una base de datos a través de la pluralidad de nodos amo, la base de datos contiene una tabla de hechos y una pluralidad de tablas de dimensión; en donde la tabla de hechos y la primera tabla de dimensión se particionan a través de la pluralidad de nodos esclavos; en donde todas las demás tablas de dimensión de la base de datos se duplican en cada uno de la pluralidad de nodos esclavo, y en donde hasta una pluralidad de las demás tablas de dimensión que tienen un tamaño mínimo también se particionan a lo largo de la pluralidad de nodos esclavo.
2. El sistema de bases de datos paralelas de conformidad con la reivindicación 1, caracterizado porque hasta una pluralidad de las demás tablas de dimensión se particionan por fila.
3. El sistema de bases de datos paralelas de conformidad con la reivindicación 1, caracterizado porque hasta una pluralidad de las demás tablas de dimensión se particionan por columna.
4. El sistema de bases de datos paralelas de conformidad con la reivindicación 1, caracterizado porque hasta una pluralidad de las demás tablas de dimensión se particionan por fila y por columna.
5. El sistema de bases de datos paralelas de conformidad con la reivindicación 1, caracterizado porque la tabla de hechos y la primera tabla de dimensión se particionan por fila.
6. El sistema de bases de datos paralelas de conformidad con la reivindicación 5, caracterizado porque la tabla de hechos y la primera tabla de dimensión se particionan por refundición en una clave común.
7. El sistema de bases de datos paralelas de conformidad con la reivindicación 5, caracterizado porque la tabla de hechos y la primera tabla de dimensión se particionan por columna.
8. El sistema de bases de datos paralelas de conformidad con la reivindicación 1, caracterizado porque las tablas de bases de datos se particionan por fecha a lo largo de una • pluralidad de la pluralidad de nodos esclavos.
9. El sistema de bases de datos paralelas de conformidad con la reivindicación 1, caracterizado porque los medios de partición particionan y distribuyen automáticamente las tablas de las bases de datos a través de la pluralidad de nodos esclavo.
10. El sistema de bases de datos paralelas de conformidad con la reivindicación 1, además comprende medios para traducir una consulta contra la base de datos -en por lo menos una subconsulta que se pueda ejecutar por el sistema de bases de datos paralelas sin transferir datos entre los nodos esclavo.
11. El sistema de bases de datos paralelas de conformidad con la reivindicación 10, además comprende medios para almacenar en la memoria caché los resultados de la consulta producidos por el sistema de base de datos paralelas .
12. El sistema de bases de datos paralelas de conformidad con la reivindicación 11, caracterizado porque el nodo maestro incluye medios para guardar en memoria caché los resultados de la consulta producidos por el nodo amo .
13. El sistema de bases de datos paralelas de conformidad con la reivindicación 12, caracterizado porque cada uno de la pluralidad de nodos esclavo incluye medios para guardar en memoria caché resultados de subconsultas producidos por el nodo esclavo respectivo.
14. El sistema de bases de datos paralelas de conformidad con la reivindicación 1, caracterizado porque en cada uno de la pluralidad de los nodos esclavo, una copia de la serie de datos almacenada en el nodo esclavo respectivo es almacenada en otro de la pluralidad de nodos esclavo asignados como un compañero relevo para el nodo esclavo respectivo.
15. El sistema de bases de datos paralelas de conformidad con la reivindicación 14, caracterizado porque las subconsultas que se van a ejecutar por un nodo esclavo que falla se ejecutan por el compañero relevo del nodo esclavo que falla.
16. Un método para gestionar una base de datos dentro de un sistema de bases de datos paralelas, el sistema contiene una tabla de hechos y una pluralidad de tablas de dimensión, el método comprende los pasos de: identificar una tabla de hechos y una primera tabla de dimensión dentro de la base de datos; particionar la tabla de hechos y la primera tabla de dimensión a través de una pluralidad de nodos esclavo; duplicar cada una de las demás tablas de dimensión en cada uno de la pluralidad de nodos- esclavo; y particionar hasta una pluralidad de las demás tablas de dimensión que tenga un tamaño mínimo a través de la pluralidad de nodos esclavo.
17. El método de conformidad con la reivindicación 16, caracterizado porque hasta una pluralidad de las demás tablas de dimensión se particionan por fila.
18. El método de conformidad con la reivindicación 16, caracterizado porque hasta una pluralidad de las demás tablas de dimensión se particiona por columna.
19. El método de conformidad con la reivindicación 16, caracterizado porqué hasta una pluralidad de las demás tablas de dimensión se particiona por fila y por columna
20. El método de conformidad con la reivindicación 16, caracterizado porque la tabla de hecho y la primera tabla de dimensión se particionan por fila.
21. El método de conformidad con la reivindicación 16, caracterizado porque la tabla de hecho y la primera tabla i de dimensión se particionan por refundición en una clave común.
22. El método de conformidad con la reivindicación 20, caracterizado porque la tabla de hechos y la primera tabla de dimensión también se particionan por columna .
23. El método de conformidad con la reivindicación 16, además comprende la partición de las tablas de las bases de datos por fecha a través de una pluralidad de nodos esclavo .
24. El método de conformidad con la reivindicación 16, además consiste en traducir una consulta contra la base de datos en por lo menos una subconsulta que pueda ser ejecutada por el sistema de bases de datos paralelas sin transferir datos entre los nodos esclavo.
25. El método de conformidad con la reivindicación 24, además consiste en cachetizar los resultados de la consulta en un nodo amo.
26.- El método de conformidad con la reivindicación 25. además consiste en cachetizar los resultados de por lo menos una subconsulta en los nodos esclavo respectivos.
27. El método de conformidad con la reivindicación 16, además comprende almacenar una copia de la serie de datos de un nodo esclavo en un compañero relevo asignado al nodo esclavo.
28. El método de conformidad con la reivindicación 27, además comprende ejecutar subconsultas que van a ser ejecutadas por un nodo esclavo con falla en el compañero relevo del nodo esclavo .
29. Los pasos de un proceso que pueden se ejecutados en computadora, almacenados en un medio de memoria legible por computadora, los pasos del proceso para realizar el método descrito en cualquiera de las reivindicaciones 16 a 28. RESUMEN DE LA INVENCIÓN Se describe un sistema de bases de datos paralelas, ultra-nada compartidas que incluye por lo menos un nodo amo y múltiples nodos esclavo. Una base de datos consistente en por lo menos una tabla de hechos y múltiples tablas de dimensión se particiona y distribuye a lo largo de los nodos esclavo del sistema de bases de datos para que las consultas sean procesadas en paralelo sin requerir de la transferencia de los datos entre los nodos esclavo. La tabla de hechos y una primera tabla de dimensión de la base de datos se particionan a lo largo de los nodos esclavo. Las demás tablas de dimensión de la base de datos se duplican en cada uno de los nodos esclavo y por lo menos una de estas otras tablas de dimensión se particiona a lo largo de los nodos esclavo.
MXPA06009355A 2004-02-21 2005-02-17 Base de datos paralela ultra - nada compartida. MXPA06009355A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54642804P 2004-02-21 2004-02-21
PCT/US2005/005199 WO2005098655A2 (en) 2004-02-21 2005-02-17 Ultra-shared-nothing parallel database

Publications (1)

Publication Number Publication Date
MXPA06009355A true MXPA06009355A (es) 2007-03-01

Family

ID=35125731

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA06009355A MXPA06009355A (es) 2004-02-21 2005-02-17 Base de datos paralela ultra - nada compartida.

Country Status (9)

Country Link
US (1) US7818349B2 (es)
EP (1) EP1716505B1 (es)
JP (1) JP4777972B2 (es)
KR (1) KR101114149B1 (es)
CN (1) CN101120340B (es)
AU (1) AU2005231230B2 (es)
CA (1) CA2556979A1 (es)
MX (1) MXPA06009355A (es)
WO (1) WO2005098655A2 (es)

Families Citing this family (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010538B1 (en) * 2003-03-15 2006-03-07 Damian Black Method for distributed RDSMS
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7552437B2 (en) 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US7266547B2 (en) * 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7778997B1 (en) 2004-06-11 2010-08-17 Seisint, Inc. System and method for managing throughput in the processing of query requests in a database system
US7693826B1 (en) * 2004-06-11 2010-04-06 Seisint, Inc. System and method for pre-compiling a query and pre-keying a database system
US7873650B1 (en) * 2004-06-11 2011-01-18 Seisint, Inc. System and method for distributing data in a parallel processing system
US7739287B1 (en) 2004-06-11 2010-06-15 Seisint, Inc. System and method for dynamically creating keys in a database system
US7801911B1 (en) * 2004-06-11 2010-09-21 Seisint, Inc. System and method for using activity identifications in a database system
US8266234B1 (en) * 2004-06-11 2012-09-11 Seisint, Inc. System and method for enhancing system reliability using multiple channels and multicast
US7917495B1 (en) 2004-06-11 2011-03-29 Seisint, Inc. System and method for processing query requests in a database system
US7406461B1 (en) 2004-06-11 2008-07-29 Seisint, Inc. System and method for processing a request to perform an activity associated with a precompiled query
US7797333B1 (en) 2004-06-11 2010-09-14 Seisint, Inc. System and method for returning results of a query from one or more slave nodes to one or more master nodes of a database system
US7457796B2 (en) * 2004-07-08 2008-11-25 International Business Machines Corporation Method using virtual replicated tables in a cluster database management system
US7712100B2 (en) 2004-09-14 2010-05-04 International Business Machines Corporation Determining a capacity of a grid environment to handle a required workload for a virtual grid job request
US7761557B2 (en) 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7707288B2 (en) 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7533170B2 (en) 2005-01-06 2009-05-12 International Business Machines Corporation Coordinating the monitoring, management, and prediction of unintended changes within a grid environment
US7793308B2 (en) 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US7502850B2 (en) 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7590623B2 (en) 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7467196B2 (en) 2005-01-12 2008-12-16 International Business Machines Corporation Managing network errors communicated in a message transaction with error information using a troubleshooting agent
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US7472079B2 (en) 2005-01-12 2008-12-30 International Business Machines Corporation Computer implemented method for automatically controlling selection of a grid provider for a grid job
JP4675174B2 (ja) * 2005-07-12 2011-04-20 株式会社日立製作所 データベース処理方法、システム及びプログラム
US20070078809A1 (en) * 2005-09-30 2007-04-05 Rockwell Automation Technologies, Inc. Robust data availability system having decentralized storage and multiple access paths
US8688780B2 (en) * 2005-09-30 2014-04-01 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
US20070143248A1 (en) * 2005-12-19 2007-06-21 Yahoo! Inc. Method using query processing servers for query processing of column chunks in a distributed column chunk data store
US7921087B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method for query processing of column chunks in a distributed column chunk data store
US7921132B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. System for query processing of column chunks in a distributed column chunk data store
US8214388B2 (en) * 2005-12-19 2012-07-03 Yahoo! Inc System and method for adding a storage server in a distributed column chunk data store
US7860865B2 (en) * 2005-12-19 2010-12-28 Yahoo! Inc. System of a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US7921131B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method using a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US20100257135A1 (en) * 2006-07-25 2010-10-07 Mypoints.Com Inc. Method of Providing Multi-Source Data Pull and User Notification
US8086598B1 (en) 2006-08-02 2011-12-27 Hewlett-Packard Development Company, L.P. Query optimizer with schema conversion
US10007686B2 (en) * 2006-08-02 2018-06-26 Entit Software Llc Automatic vertical-database design
US8671091B2 (en) * 2006-08-02 2014-03-11 Hewlett-Packard Development Company, L.P. Optimizing snowflake schema queries
US20080270363A1 (en) * 2007-01-26 2008-10-30 Herbert Dennis Hunt Cluster processing of a core information matrix
US9390158B2 (en) * 2007-01-26 2016-07-12 Information Resources, Inc. Dimensional compression using an analytic platform
US8504598B2 (en) 2007-01-26 2013-08-06 Information Resources, Inc. Data perturbation of non-unique values
US20090006309A1 (en) * 2007-01-26 2009-01-01 Herbert Dennis Hunt Cluster processing of an aggregated dataset
US8160984B2 (en) 2007-01-26 2012-04-17 Symphonyiri Group, Inc. Similarity matching of a competitor's products
US9262503B2 (en) * 2007-01-26 2016-02-16 Information Resources, Inc. Similarity matching of products based on multiple classification schemes
US20080288522A1 (en) * 2007-01-26 2008-11-20 Herbert Dennis Hunt Creating and storing a data field alteration datum using an analytic platform
US10621203B2 (en) * 2007-01-26 2020-04-14 Information Resources, Inc. Cross-category view of a dataset using an analytic platform
US20080294996A1 (en) * 2007-01-31 2008-11-27 Herbert Dennis Hunt Customized retailer portal within an analytic platform
US8782075B2 (en) 2007-05-08 2014-07-15 Paraccel Llc Query handling in databases with replicated data
US9002827B2 (en) * 2007-07-11 2015-04-07 Teradata Us, Inc. Database query table substitution
US20090024570A1 (en) * 2007-07-20 2009-01-22 Oracle Internatonal Corporation User defined query rewrite mechanism
US7885969B2 (en) * 2007-09-17 2011-02-08 International Business Machines Corporation System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer
US9626421B2 (en) 2007-09-21 2017-04-18 Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh ETL-less zero-redundancy system and method for reporting OLTP data
US7917574B2 (en) * 2007-10-01 2011-03-29 Accenture Global Services Limited Infrastructure for parallel programming of clusters of machines
US8412548B2 (en) * 2007-11-27 2013-04-02 International Business Machines Corporation Linked decision nodes in a business process model
US20090198703A1 (en) * 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
US9177079B1 (en) * 2009-01-22 2015-11-03 Joviandata, Inc. Apparatus and method for processing multi-dimensional queries in a shared nothing system through tree reduction
US8893131B2 (en) * 2008-04-11 2014-11-18 Yahoo! Inc. System and/or method for bulk loading of records into an ordered distributed database
US8195712B1 (en) 2008-04-17 2012-06-05 Lattice Engines, Inc. Lattice data set-based methods and apparatus for information storage and retrieval
US8682853B2 (en) 2008-05-16 2014-03-25 Paraccel Llc System and method for enhancing storage performance in analytical database applications
WO2009144942A1 (ja) * 2008-05-30 2009-12-03 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
US8099440B2 (en) * 2008-08-15 2012-01-17 International Business Machines Corporation Method for laying out fields in a database in a hybrid of row-wise and column-wise ordering
US20100088309A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
US9251212B2 (en) * 2009-03-27 2016-02-02 Business Objects Software Ltd. Profiling in a massive parallel processing environment
US8700674B2 (en) * 2009-07-14 2014-04-15 Hewlett-Packard Development Company, L.P. Database storage architecture
US8972346B2 (en) * 2009-12-11 2015-03-03 International Business Machines Corporation Method and system for minimizing synchronization efforts of parallel database systems
US8346714B1 (en) * 2009-12-17 2013-01-01 Teradota Us, Inc. Transactiontime and validtime timestamping in an enterprise active data warehouse
JP5353682B2 (ja) * 2009-12-22 2013-11-27 富士通株式会社 構成情報管理装置、分散情報管理システム、分散情報管理方法および分散情報管理プログラム
US8990185B2 (en) 2010-02-19 2015-03-24 International Business Machines Corporation Evaluating reference based operations in shared nothing parallelism systems
US8290931B2 (en) * 2010-02-22 2012-10-16 Hewlett-Packard Development Company, L.P. Database designer
US8375047B2 (en) * 2010-03-31 2013-02-12 Emc Corporation Apparatus and method for query prioritization in a shared nothing distributed database
US8935248B2 (en) 2010-05-17 2015-01-13 United States Postal Service Localized data affinity system and hybrid method
US8768973B2 (en) * 2010-05-26 2014-07-01 Pivotal Software, Inc. Apparatus and method for expanding a shared-nothing system
CN101916261B (zh) * 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
CN101916280A (zh) * 2010-08-17 2010-12-15 上海云数信息科技有限公司 并行计算系统及按查询内容进行负载均衡的方法
WO2012035665A1 (ja) 2010-09-17 2012-03-22 富士通株式会社 データ共有プログラム、データ配信プログラム、端末、サーバ、データ共有方法、およびデータ配信方法
JP5276639B2 (ja) * 2010-10-01 2013-08-28 日本電信電話株式会社 分散データベース管理装置および分散データベース管理プログラム
US8442988B2 (en) 2010-11-04 2013-05-14 International Business Machines Corporation Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data
US9292523B1 (en) * 2011-03-23 2016-03-22 Emc Corporation Managing data storage
CN102737033B (zh) * 2011-03-31 2015-02-04 国际商业机器公司 数据处理设备及其数据处理方法
US9798831B2 (en) 2011-04-01 2017-10-24 Google Inc. Processing data in a MapReduce framework
US8924426B2 (en) * 2011-04-29 2014-12-30 Google Inc. Joining tables in a mapreduce procedure
US8793287B2 (en) 2011-05-27 2014-07-29 Sap Ag Equi-joins between split tables
US8965879B2 (en) 2011-06-03 2015-02-24 Microsoft Technology Licensing, Llc Unique join data caching method
CN102323946B (zh) * 2011-09-05 2013-03-27 天津神舟通用数据技术有限公司 并行数据库中算子复用的实现方法
US8862606B1 (en) * 2011-09-22 2014-10-14 Emc Corporation Executing correlated and multi-row subqueries in a MPP database
CN103092886B (zh) * 2011-11-07 2016-03-02 中国移动通信集团公司 一种数据查询操作的实现方法、装置及系统
US8892502B2 (en) * 2011-12-07 2014-11-18 Sap Se Parallel processing of semantically grouped data in data warehouse environments
US8914353B2 (en) * 2011-12-20 2014-12-16 Sap Se Many-core algorithms for in-memory column store databases
US8676787B2 (en) 2011-12-22 2014-03-18 International Business Machines Corporation Distributed multi-step abstract queries
US8762378B2 (en) 2011-12-23 2014-06-24 Sap Ag Independent table nodes in parallelized database environments
US8880565B2 (en) 2011-12-23 2014-11-04 Sap Se Table creation for partitioned tables
US8868594B2 (en) * 2011-12-23 2014-10-21 Sap Ag Split processing paths for a database calculation engine
US9164864B1 (en) * 2011-12-28 2015-10-20 Emc Corporation Minimizing false negative and duplicate health monitoring alerts in a dual master shared nothing database appliance
US8938444B2 (en) * 2011-12-29 2015-01-20 Teradata Us, Inc. Techniques for external application-directed data partitioning in data exporting from a database management system
US9239851B1 (en) 2012-07-12 2016-01-19 Cross Commerce Media, Inc. Advanced database systems and methods
CN103748578B (zh) * 2012-07-26 2017-10-10 华为技术有限公司 数据分布的方法、装置及系统
US9015721B2 (en) * 2012-07-30 2015-04-21 Hewlett-Packard Development Company, L. P. Managing array computations during programmatic run-time in a distributed computing environment
CN103678368B (zh) * 2012-09-14 2017-02-08 华为技术有限公司 查询处理方法和装置
CN103714073B (zh) * 2012-09-29 2017-04-12 国际商业机器公司 数据查询的方法和装置
US9195701B2 (en) * 2012-10-29 2015-11-24 Futurewei Technologies, Inc. System and method for flexible distributed massively parallel processing (MPP) database
CN104871153B8 (zh) * 2012-10-29 2019-02-01 华为技术有限公司 用于分布式大规模并行处理数据库的方法和系统
US8799284B2 (en) 2012-11-30 2014-08-05 Futurewei Technologies, Inc. Method for automated scaling of a massive parallel processing (MPP) database
US20140214886A1 (en) 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
US10585896B2 (en) * 2013-03-12 2020-03-10 Red Hat, Inc. Managing data in relational database management system
US10049159B2 (en) * 2013-03-15 2018-08-14 Sas Institute Inc. Techniques for data retrieval in a distributed computing environment
CN104252452B (zh) * 2013-06-25 2019-03-15 腾讯科技(深圳)有限公司 数据管理的方法及装置
CN105308579B (zh) * 2013-07-01 2018-06-08 株式会社日立制作所 系列数据并行分析基础设施及其并行分散处理方法
US20150113314A1 (en) * 2013-07-11 2015-04-23 Brian J. Bulkowski Method and system of implementing a distributed database with peripheral component interconnect express switch
CN103412897B (zh) * 2013-07-25 2017-03-01 中国科学院软件研究所 一种基于分布式结构的并行数据处理方法
US9600514B2 (en) 2013-09-09 2017-03-21 VoltDB, Inc. Methods and systems for detecting data divergence and inconsistency across replicas of data within a shared-nothing distributed database
US10176240B2 (en) 2013-09-12 2019-01-08 VoltDB, Inc. Methods and systems for real-time transactional database transformation
US9836519B2 (en) * 2013-09-20 2017-12-05 Oracle International Corporation Densely grouping dimensional data
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
US9684682B2 (en) 2013-09-21 2017-06-20 Oracle International Corporation Sharding of in-memory objects across NUMA nodes
US10061789B2 (en) * 2013-10-28 2018-08-28 Excalibur Ip, Llc Dynamic database indexes for entity attribute value stores
CN103559255B (zh) * 2013-11-01 2017-01-04 北京理工大学 一种分布式液压系统的可视化数据处理方法
US9639571B2 (en) 2013-12-30 2017-05-02 VoltDB, Inc. Methods and systems for increasing capacity and performing data rebalancing without downtime to a distributed shared-nothing database with serializable isolation
US9898398B2 (en) 2013-12-30 2018-02-20 Microsoft Technology Licensing, Llc Re-use of invalidated data in buffers
US9430508B2 (en) 2013-12-30 2016-08-30 Microsoft Technology Licensing, Llc Disk optimized paging for column oriented databases
US9723054B2 (en) 2013-12-30 2017-08-01 Microsoft Technology Licensing, Llc Hierarchical organization for scale-out cluster
US9569493B2 (en) 2013-12-31 2017-02-14 International Business Machines Corporatin Avoidance of intermediate data skew in a massive parallel processing environment
CN105848765B (zh) * 2014-01-09 2020-02-14 陶氏环球技术有限责任公司 具有优选偶氮含量的复合聚酰胺膜
US11921715B2 (en) 2014-01-27 2024-03-05 Microstrategy Incorporated Search integration
US10635669B1 (en) 2014-01-27 2020-04-28 Microstrategy Incorporated Data engine integration and data refinement
US11386085B2 (en) 2014-01-27 2022-07-12 Microstrategy Incorporated Deriving metrics from queries
US9952894B1 (en) * 2014-01-27 2018-04-24 Microstrategy Incorporated Parallel query processing
US10255320B1 (en) 2014-01-27 2019-04-09 Microstrategy Incorporated Search integration
US10366102B2 (en) 2014-02-19 2019-07-30 Snowflake Inc. Resource management systems and methods
US9824106B1 (en) 2014-02-20 2017-11-21 Amazon Technologies, Inc. Hash based data processing
US9684666B1 (en) * 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
US9684671B1 (en) * 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
US9679012B1 (en) * 2014-02-28 2017-06-13 Pivotal Software, Inc. Parallel streaming of external data
CN103927337B (zh) * 2014-03-26 2017-12-19 北京国双科技有限公司 用于联机分析处理中关联关系的数据处理方法和装置
US9552390B2 (en) 2014-04-29 2017-01-24 Futurewei Technologies, Inc. System and method for out of order multiple query execution within stored procedure
KR101472257B1 (ko) * 2014-07-22 2014-12-11 (주)카디날정보기술 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치
US10002148B2 (en) 2014-07-22 2018-06-19 Oracle International Corporation Memory-aware joins based in a database cluster
US9875259B2 (en) 2014-07-22 2018-01-23 Oracle International Corporation Distribution of an object in volatile memory across a multi-node cluster
CN105468651B (zh) * 2014-09-12 2020-03-27 阿里巴巴集团控股有限公司 一种关系数据库数据查询方法及系统
US10387421B2 (en) 2014-09-26 2019-08-20 Oracle International Corporation System and method for generating size-based splits in a massively parallel or distributed database environment
US10380114B2 (en) 2014-09-26 2019-08-13 Oracle International Corporation System and method for generating rowid range-based splits in a massively parallel or distributed database environment
US10089357B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for generating partition-based splits in a massively parallel or distributed database environment
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment
US10528596B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation System and method for consistent reads between tasks in a massively parallel or distributed database environment
US10394818B2 (en) 2014-09-26 2019-08-27 Oracle International Corporation System and method for dynamic database split generation in a massively parallel or distributed database environment
US10089377B2 (en) * 2014-09-26 2018-10-02 Oracle International Corporation System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment
US9767149B2 (en) 2014-10-10 2017-09-19 International Business Machines Corporation Joining data across a parallel database and a distributed processing system
CN106415534B (zh) * 2015-05-31 2019-09-20 华为技术有限公司 一种分布式数据库中关联表分区的方法和设备
CN106716400B (zh) * 2015-06-26 2019-09-27 华为技术有限公司 一种数据表的分区管理方法及装置
US10482076B2 (en) 2015-08-14 2019-11-19 Sap Se Single level, multi-dimension, hash-based table partitioning
US10198228B2 (en) 2016-03-03 2019-02-05 Ricoh Company, Ltd. Distributed data tables for print jobs in a print workflow system
WO2018028797A1 (en) * 2016-08-12 2018-02-15 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for bulk loading of data into a distributed database
CN106339432A (zh) * 2016-08-19 2017-01-18 上海巨数信息科技有限公司 一种按查询内容进行负载均衡的系统及其方法
KR101936273B1 (ko) * 2016-08-23 2019-01-08 주식회사 한컴시큐어 대용량 데이터베이스에 최적화된 암호화 스케줄링의 자동화가 가능한 데이터베이스 암호화 장치 및 그 동작 방법
US10846318B1 (en) 2017-04-18 2020-11-24 Microstrategy Incorporated Natural language visualizations
US11003662B2 (en) * 2017-10-30 2021-05-11 Salesforce.Com, Inc. Trigger-free asynchronous maintenance of custom indexes and skinny performance meta-structures
US10776229B2 (en) * 2017-12-22 2020-09-15 Teradata Us, Inc. Dedicated fallback processing for a distributed data warehouse
CN110019274B (zh) 2017-12-29 2023-09-26 阿里巴巴集团控股有限公司 一种数据库系统以及查询数据库的方法和装置
US11138230B2 (en) 2018-03-26 2021-10-05 Mcafee, Llc Methods, apparatus, and systems to aggregate partitioned computer database data
CN108664560A (zh) * 2018-04-09 2018-10-16 宁波诺信睿聚投资有限责任公司 数据查询方法、装置、计算机设备及计算机可读存储介质
US11195050B2 (en) 2019-02-05 2021-12-07 Microstrategy Incorporated Machine learning to generate and evaluate visualizations
US11614970B2 (en) 2019-12-06 2023-03-28 Microstrategy Incorporated High-throughput parallel data transmission
US11567965B2 (en) 2020-01-23 2023-01-31 Microstrategy Incorporated Enhanced preparation and integration of data sets
WO2021162911A1 (en) * 2020-02-10 2021-08-19 Choral Systems, Llc Data analysis and visualization using structured data tables and nodal networks
US20220021953A1 (en) * 2020-07-16 2022-01-20 R9 Labs, Llc Systems and methods for processing data proximate to the point of collection

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0562251A2 (en) * 1992-03-24 1993-09-29 Universities Research Association, Inc. Parallel data transfer network controlled by a dynamically reconfigurable serial network
US5737549A (en) * 1994-01-31 1998-04-07 Ecole Polytechnique Federale De Lausanne Method and apparatus for a parallel data storage and processing server
US5909681A (en) * 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
JP3952518B2 (ja) * 1996-03-29 2007-08-01 株式会社日立製作所 多次元データ処理方法
US5848408A (en) * 1997-02-28 1998-12-08 Oracle Corporation Method for executing star queries
US6092062A (en) 1997-06-30 2000-07-18 International Business Machines Corporation Relational database query optimization to perform query evaluation plan, pruning based on the partition properties
JPH1153232A (ja) * 1997-08-05 1999-02-26 Hitachi Software Eng Co Ltd データベース管理方法
JPH11110262A (ja) * 1997-10-01 1999-04-23 Toshiba Corp 情報管理システム
CA2345309A1 (en) 2000-09-18 2002-03-18 Linmor Technologies Inc. High performance relational database management system
US7668740B1 (en) * 2000-09-22 2010-02-23 Ita Software, Inc. Method, system, and computer program product for interfacing with information sources
US7085769B1 (en) 2001-04-26 2006-08-01 Ncr Corporation Method and apparatus for performing hash join
US6968335B2 (en) * 2002-11-14 2005-11-22 Sesint, Inc. Method and system for parallel processing of database queries

Also Published As

Publication number Publication date
CN101120340B (zh) 2010-12-08
EP1716505A4 (en) 2009-10-21
KR101114149B1 (ko) 2012-03-08
AU2005231230A1 (en) 2005-10-20
CA2556979A1 (en) 2005-10-20
US20050187977A1 (en) 2005-08-25
WO2005098655A2 (en) 2005-10-20
US7818349B2 (en) 2010-10-19
JP4777972B2 (ja) 2011-09-21
KR20070026421A (ko) 2007-03-08
JP2007531087A (ja) 2007-11-01
AU2005231230B2 (en) 2010-05-27
EP1716505B1 (en) 2018-01-10
EP1716505A2 (en) 2006-11-02
WO2005098655A3 (en) 2007-09-27
CN101120340A (zh) 2008-02-06

Similar Documents

Publication Publication Date Title
EP1716505B1 (en) Ultra-shared-nothing parallel database
US11461356B2 (en) Large scale unstructured database systems
US11580070B2 (en) Utilizing metadata to prune a data set
US11966406B2 (en) Utilizing appropriate measure aggregation for generating data visualizations of multi-fact datasets
US8538985B2 (en) Efficient processing of queries in federated database systems
EP1107135B1 (en) Parallel optimized triggers in parallel processing database systems
US8935232B2 (en) Query execution systems and methods
US8782075B2 (en) Query handling in databases with replicated data
US6618729B1 (en) Optimization of a star join operation using a bitmap index structure
US8484417B2 (en) Location updates for a distributed data store
US5590321A (en) Push down optimization in a distributed, multi-database system
US7092954B1 (en) Optimizing an equi-join operation using a bitmap index structure
US6957222B1 (en) Optimizing an outer join operation using a bitmap index structure
US20120254249A1 (en) Database Management System
US6957210B1 (en) Optimizing an exclusion join operation using a bitmap index structure
Borkar et al. Have your data and query it too: From key-value caching to big data management
CA3153691C (en) Utilizing appropriate measure aggregation for generating data visualizations of multi-fact datasets
US20180121532A1 (en) Data table partitioning management method and apparatus
Furtado et al. Adaptive hybrid partitioning for OLAP query processing in a database cluster
Kurunji et al. Optimizing aggregate query processing in cloud data warehouses
Heinzl In-depth evaluation of NoSQL and NewSQL database management systems

Legal Events

Date Code Title Description
FG Grant or registration