ES2593779T3 - Limitar la exploración de relaciones poco ordenadas y/o agrupadas usando correspondencias casi ordenadas - Google Patents
Limitar la exploración de relaciones poco ordenadas y/o agrupadas usando correspondencias casi ordenadas Download PDFInfo
- Publication number
- ES2593779T3 ES2593779T3 ES04752528.2T ES04752528T ES2593779T3 ES 2593779 T3 ES2593779 T3 ES 2593779T3 ES 04752528 T ES04752528 T ES 04752528T ES 2593779 T3 ES2593779 T3 ES 2593779T3
- Authority
- ES
- Spain
- Prior art keywords
- data
- ordered
- extensions
- extension
- column
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims abstract description 101
- 230000014509 gene expression Effects 0.000 description 16
- 230000008901 benefit Effects 0.000 description 13
- 230000002085 persistent effect Effects 0.000 description 12
- 238000005192 partition Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012797 qualification Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 229940079593 drug Drugs 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24557—Efficient disk access during query execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Un procedimiento implementado por ordenador para localizar datos deseados en una base de datos (300-1) usando una tabla de correspondencia casi ordenada (400), comprendiendo dicho procedimiento de manera secuencial: dividir datos de la base de datos (300-1) en una pluralidad de extensiones (300-2); generar estadísticas de correspondencias casi ordenadas de datos incluidos en cada extensión (300-2), donde las estadísticas de correspondencias casi ordenadas comprenden uno o más intervalos de datos incluidos en la extensión respectiva, donde cada uno de los intervalos consiste en un valor mínimo y un valor máximo de un atributo de los datos de la extensión respectiva, recopilando, para todas las extensiones, el valor mínimo y el valor máximo del atributo de los datos de la extensión respectiva, anotar cada extensión (300-2) con la estadística de correspondencias casi ordenadas de los datos incluidos en la extensión respectiva, donde los intervalos de datos asociados a la extensiones (300-2) están almacenados en la tabla de correspondencia casi ordenada; seleccionar una o más extensiones (300-2) para las que los intervalos de datos asociados se solapan al menos parcialmente con un intervalo de datos de los datos deseados, en función de los valores mínimos y máximos de los intervalos de datos almacenados en la tabla de correspondencia casi ordenada, consultando la tabla de correspondencia casi ordenada para determinar un subconjunto de extensiones que pueden albergar los datos deseados; y buscar la una o más extensiones seleccionadas para localizar los datos deseados.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Limitar la exploracion de relaciones poco ordenadas y/o agrupadas usando correspondencias casi ordenadas Solicitud relacionada
Esta solicitud reivindica el beneficio de la solicitud provisional estadounidense n.° 60/471.691, presentada el 19 de mayo de 2003. Las ensenanzas de la solicitud anterior se incorporan en el presente documento a modo de referencia.
Antecedentes de la invencion
Los indices de bases de datos relacionales tienen normalmente una entrada para cada registro de datos en la relacion objetivo. Cada entrada de estos indices contiene un valor de clave y un puntero al registro de datos. Estas entradas estan ordenadas por el valor de clave. Caractensticas de tales indices incluyen mantener campos de datos adicionales en cada entrada y procedimientos de acceso a alta velocidad y de mantenimiento tales como "arboles b". Estas caractensticas son normalmente utiles en sistemas transaccionales en los el acceso a los registros se realiza de uno en uno. Sin embargo, su mantenimiento y exploracion son complicados, especialmente cuando se busca un gran numero de registros.
Documentos relevantes de la tecnica incluyen ‘Orade9i, Data Warehousing Guide, Release 2 (9.2)’, marzo de 2002, n.° de referencia A96520-01, XP-002482800; la patente estadounidense n.° 6.014.656 a nombre de Hallmark et al.; ‘Oracle8i Enterprise Edition Partitioning Option’, febrero de 1999, XP-002482801; ‘Load Balancing: A case study of a pharmaceutical drug candidate database’, de Ben Miled et al., Actas del Tercer Simposio de IEEE sobre Bioinformatica y Bioingeniena (BIBE'03), 2003, XP-010637117, ISBN 978-0-7695-1907-4; la publicacion internacional n.° WO 01/33436 de Informix Software, Inc.; y la patente estadounidense n.° 5.903.888 a nombre de Cohen et al.
El documento XP-002482800 divulga que los almacenes de datos contienen normalmente tablas grandes y necesitan tecnicas tanto para gestionar estas grandes tablas como para ofrecer un buen rendimiento en la realizacion de consultas a traves de estas grandes tablas. La division por intervalos establece correspondencias entre datos y particiones en funcion de intervalos de valores de clave de particion que se establecen para cada particion. Es el tipo de division mas comun y se usa frecuentemente con fechas.
Resumen de la invencion
La invencion esta especificada por las reivindicaciones independientes. Las reivindicaciones dependientes incluyen desarrollos adicionales.
Se proporciona un procedimiento a modo de ejemplo para reducir rapidamente el alcance de una busqueda de informacion. Mientras que un mdice especifica donde esta un elemento de informacion particular, una correspondencia casi ordenada especifica un intervalo o conjunto de intervalos en los que puede estar un elemento de informacion particular. A primera vista, parece mas util saber con precision donde esta ubicado algo en lugar de obtener un conjunto de intervalos en los que puede estar; sin embargo, esa utilidad depende de los costes relativos de usar un mdice frente a usar una correspondencia casi ordenada, asf como de la distribucion de la informacion y del procedimiento de busqueda. En determinados casos comunes e importantes, las correspondencias casi ordenadas pueden reducir rapidamente el alcance de una busqueda en dos o tres ordenes de magnitud, produciendo resultados casi tan rapidos o incluso mas rapidos que cuando se usa un mdice y con solo una parte del coste computacional y de almacenamiento a la hora de mantener un mdice.
Un ejemplo funciona dividiendo un gran espacio de informacion en muchas extensiones de informacion mas pequenas. Estas extensiones se anotan con estadfsticas acerca de la informacion que contienen, en particular valores mmimos y maximos (tambien incluyen otros valores, por ejemplo un computo). Cuando una busqueda de informacion incluye una restriccion basada en valores, los intervalos de valores deseados pueden compararse con el valor mmimo y el valor maximo de cada extension. Si el intervalo de valores deseado esta fuera del intervalo de la extension, entonces la extension no puede albergar el valor deseado y, por tanto, no tiene que incluirse en la busqueda. Si el intervalo deseado se solapa con el intervalo de una extension particular, entonces esa extension debe explorarse, incluso aunque no contenga los valores deseados.
En el texto siguiente se usa el termino "relacion" con sentido inclusivo para incluir tablas, vistas, indices y otras estructuras de datos. Para simplificar la descripcion se usa el termino "tabla" de manera intercambiable con "relacion". Tambien debe observarse que para facilitar la descripcion se hace referencia a tipos espedficos de almacenamiento tales como "almacenamiento persistente" y "memoria"; las correspondencias casi ordenadas tambien funcionan correctamente con otros tipos de almacenamiento y combinaciones de tipos.
5
10
15
20
25
30
35
40
45
50
55
60
65
Mas en particular, considerese que en muchas aplicaciones de almacenamiento de datos, un pequeno numero de relaciones ocupan el 80% o mas del tamano de la base de datos. Pueden ser, por ejemplo, relaciones que registran en el tiempo eventos reales, eventos que son normalmente muy basicos e importantes para una empresa. En la industria de las telecomunicaciones, estos eventos pueden identificar llamadas telefonicas individuales o componentes de las llamadas telefonicas ("registros de detalles de llamadas"). En lo que respecta a sitios de Internet, estos eventos pueden ser datos que describen clics individuales que han realizado los usuarios. En lo que respecta a empresas que venden productos o servicios a los consumidores, estos eventos pueden ser compras individuales en un punto de venta, o incluso una ruta ffsica que elementos individuales de un carrito de compra pueden haber tomado por toda la tienda. En relacion con bancos y corretajes, estos eventos pueden ser transacciones financieras.
En las diferentes industrias y aplicaciones hay ciertas caractensticas comunes relacionadas con la manera en que estos eventos se capturan y se usan en un almacen de datos. Cada dfa se crean, por lo general, cientos de millones de eventos. Normalmente llegan a un almacen de datos agrupados cronologicamente, casi en el orden en que se producen y poco despues de haberse producido. Los analisis se llevan a cabo normalmente en secciones cronologicas comparando, por ejemplo, el trafico en diferentes horas del dfa o en diferentes ubicaciones geograficas al mismo tiempo. Aunque resulta habitual analizar datos en secciones cronologicas, no es el unico ambito en el que hay una mala ordenacion y agrupacion. Por ejemplo, las imagenes de los satelites tienden a agruparse y analizarse en bandas longitudinales.
Puesto que la informacion de estas grandes relaciones es crucial para los intereses de las empresas, la necesidad de almacenar mas informacion es cada vez mayor. Al aumentar la cantidad de informacion almacenada en una tabla, esto hace que aumente con frecuencia el valor de los analisis, ya que los patrones predictivos tienen mas datos que cotejar. Ademas, la tasa con la que se captura nueva informacion aumenta un 50% cada ano en muchas industrias. Esto significa que estas tablas son cada vez mas grandes, variando su tamano en el tiempo.
Si una empresa registra quinientos millones de eventos al dfa y desea guardar datos introducidos en lmea durante cien dfas en su almacen de datos, esto requiere guardar cincuenta billones de eventos mantenidos en lmea. La naturaleza de la informacion registrada de estos eventos vana en las diferentes industrias y aplicaciones, pero esto puede necesitar de manera razonable cien bytes por registro. Esto significa que el tamano de una tabla de eventos puede ser facilmente de cinco terabytes. Si los cinco terabytes se dividieran de manera equitativa en quinientos discos, cada disco albergana diez gigabytes de datos de tabla de eventos. Si estos discos se exploraran a una velocidad de 33 megabytes por segundo, cada disco tardana cinco minutos aproximadamente en leer su parte de toda la tabla de eventos. Esto significa que un almacen de datos con quinientos discos podna gestionar como mucho doce consultas a la hora realizadas en la tabla mas importante y central. Evidentemente, esta solucion no es eficaz.
El uso de un mdice tradicional, tal como un arbol b, mitiga este problema, especialmente cuando solo se van a recuperar algunos registros. Por ejemplo, en un sistema transaccional, si un usuario esta recuperando los registros para una gestion espedfica, entonces un mdice de tipo arbol b es muy eficiente. Sin embargo, en lo que respecta a consultas que recuperan entre un numero medio y grande de registros, el coste computacional de usar estos indices afecta considerablemente al coste de la consulta. Por ejemplo, algunos distribuidores de sistemas de gestion de bases de datos relacionales (RDBMS) sugieren que no se usen indices si va a accederse a mas del 8% de una tabla dada.
Por lo tanto, un ejemplo saca partido de (a) la agrupacion cronologica intrmseca de eventos en el tiempo dentro de una tabla de eventos y (b) el deseo comun de consultar la tabla de eventos por secciones cronologicas para reducir en varios ordenes de magnitud el tiempo y el coste de recursos de sistema requeridos para explorar la tabla y recuperar los registros solicitados. Cuando esto puede aplicarse, se mejora drasticamente el tiempo de respuesta y el rendimiento. Ademas, como se ha descrito anteriormente, este ejemplo tambien puede aplicarse a otras tablas en las que los registros estan agrupados intrmsecamente por campos que se usan habitualmente para restringir las clausulas y/o para ordenar las clausulas de una consulta.
Ademas, otro ejemplo puede aplicarse igualmente en relaciones derivadas, especialmente en aquellas en las que algunos de los valores aparecen ffsicamente de manera ordenada o casi ordenada. Un ejemplo de esto es una vista materializada ordenada. Otro ejemplo es la relacion intermedia creada durante la ordenacion de una tabla. En este caso, si se usa una ordenacion por sectores para ordenar una relacion, entonces los datos de los sectores creados tras la segunda fase de ordenacion (la fase de "creacion de sectores") estan practicamente ordenados y se benefician del ejemplo mostrado anteriormente. El uso de correspondencias casi ordenadas permite usar la tabla intermedia en muchas operaciones antes de la tercera fase de ordenacion ("ordenacion final") reduciendose asf considerablemente el tiempo para ordenar de manera eficaz la relacion dada. Este uso de una relacion parcialmente ordenada puede no estar disponible con los indices tradicionales.
La ventaja principal de un ejemplo en el nivel mas abstracto se refiere a reducir la cantidad de tiempo requerida para localizar una cantidad de informacion relativamente pequena en un espacio de informacion muy grande en determinadas situaciones importantes y habituales. Mas espedficamente, una ventaja se refiere a reducir la parte de un disco de ordenador que debe explorarse para localizar registros de interes.
5
10
15
20
25
30
35
40
45
50
55
60
La tecnica mas comun para conseguir este tipo de ventaja es el uso de indices. Un mdice es una estructura de datos individual que correlaciona un conjunto de valores de datos con un conjunto de registros relacionados con esos valores de datos, donde con frecuencia esos valores de datos estan incluidos como campos dentro de los registros. Las consultas a las bases de datos utilizan los indices en un proceso de dos etapas. En primer lugar, el mdice se consulta para encontrar los registros de datos pertinentes. En segundo lugar se recuperan los registros de datos pertinentes.
El uso simplista de indices de la tecnica anterior tiene varios problemas a la hora de mejorar el rendimiento de las consultas, los cuales se evitan mediante los ejemplos mostrados anteriormente. En primer lugar, muchos tipos de indices requieren una cantidad de espacio considerable. En segundo lugar, aunque el tiempo requerido para usar el mdice es normalmente una funcion logantmica (o una funcion mejor) del numero de registros que esta indexandose, esto puede seguir necesitando una cantidad de tiempo considerable para una cantidad de registros muy grande. En tercer lugar, los cambios en el conjunto subyacente de registros requieren cambios correspondientes en el mdice, lo que puede ralentizar el tiempo requerido para cargar o filtrar datos. Con cientos de millones de registros entrando y saliendo del sistema cada dfa, la sobrecarga del mantenimiento de indices adicionales puede ser un grave problema. En cuarto lugar, hay serios problemas con la integridad transaccional y el control de concurrencia que surgen con el uso de indices. En quinto lugar (y probablemente con mayor importancia para un almacen de datos distribuido), cuando el conjunto de registros se divide en muchos discos, no siempre es posible ubicar conjuntamente la parte del mdice que correlaciona un valor de datos dado con los registros relacionados con ese valor de datos. Esto significa que se necesita generalmente una comunicacion en red entre las etapas de usar el mdice para encontrar los registros de datos pertinentes y de explorar despues los discos para buscar esos registros de datos. Estas comunicaciones en red adicionales pueden duplicar la latencia de una consulta. Finalmente, los indices requieren configuracion, mantenimiento y clasificacion para saber que definiciones de mdice senan las mas adecuadas para consultas de aplicacion con el mmimo coste.
Mientras que el objetivo de un mdice es determinar rapidamente la ubicacion de un conjunto de registros, el objetivo de una correspondencia casi ordenada es lo opuesto: determinar rapidamente las ubicaciones que no contienen un conjunto de registros. Debido en parte a este enfoque diferente, el ejemplo mostrado anteriormente usa correspondencias casi ordenadas para evitar problemas con los indices. Se necesita muy poco espacio adicional, del orden de 24 bytes por 3 megabytes de datos de registro. Puesto que un ejemplo ubica conjuntamente correspondencias casi ordenadas y los datos de registro que describen, se introduce muy poca latencia computacional adicional. En un sistema con inteligencia en cada uno de los nodos de datos, puesto que (a) las correspondencias casi ordenadas pueden mantenerse y accederse en esa memoria de nodo local y (b) la logica para acceder a los datos puede estar incluida en ese nodo, el ordenador principal puede ignorar totalmente las correlacionales locales casi ordenadas, dando lugar a un sistema mas fiable, mas eficiente y de mayor rendimiento.
Las correspondencias casi ordenadas se actualizan de tal manera que mantienen la informacion de manera precisa, aunque pesimista, y evitan problemas relacionados con el control de la concurrencia y el tiempo de carga adicional. Finalmente, las correspondencias casi ordenadas pueden mantenerse de manera automatica, evitando la necesidad de una administracion compleja de la base de datos.
Al igual que con las tecnicas de almacenamiento de datos tradicionales, un gran espacio de informacion se divide en una serie de muchos segmentos de informacion mas pequenos denominados extensiones. La idea principal es que cada extension se anota con el valor maximo y el valor mmimo para tipos particulares de informacion incluidos en la extension. Cuando una consulta desea explorar el gran espacio de informacion para encontrar valores en intervalos particulares, el ejemplo antes mostrado examina primero las anotaciones asociadas a cada extension para determinar si esa extension puede contener valores en el intervalo deseado. Las extensiones que no pueden albergar valores en el intervalo deseado no se exploran. Solo se exploran las extensiones que pueden albergar valores en el intervalo deseado. Cuando hay muchos valores de datos agrupados en las extensiones y cuando las consultas son relativamente selectivas en lo que respecta al intervalo de valores que aceptaran, el ejemplo antes mostrado puede eliminar rapidamente gran parte del tiempo requerido para explorar el gran espacio de informacion.
En un sistema con inteligencia en uno o mas nodos de datos, cada nodo inteligente puede mantener las anotaciones para su almacenamiento local, de modo que sus correspondencias de almacenamiento y sus anotaciones pueden mantenerse de manera privada: pueden encapsularse, ser independientes, autonomos y ocultarse de cualquier otro elemento de sistema. El resultado es una obtencion muy rapida sin necesidad de mantener un mdice centralizado o un mdice preciso.
En casos en los que se obtienen algunos registros para ciertas consultas, las correspondencias casi ordenadas pueden aumentar con una correspondencia "rafz" que identifica el nodo o nodos que pueden contener esos registros, de manera que la consulta se envfa solamente a los nodos que pueden contener los registros objetivo.
5
10
15
20
25
30
35
40
45
50
55
60
65
Breve descripcion de los dibujos
Estos y otros objetos, caractensticas y ventajas de la forma de realizacion preferida de la invencion resultaran evidentes a partir de la siguiente descripcion mas particular de formas de realizacion preferidas de la invencion, como se ilustra en los dibujos adjuntos, en los que los mismos caracteres de referencia se refieren a las mismas partes a lo largo de las diferentes vistas. Los dibujos no estan necesariamente a escala, sino que lo que se pretende es ilustrar los principios de la forma de realizacion preferida de la invencion.
La Fig. 1 es un diagrama de bloques de los componentes de hardware relevantes para la forma de realizacion preferida de la invencion.
La Fig. 2 es un diagrama de bloques de los componentes de software relevantes para la forma de realizacion preferida de la invencion.
La Fig. 3 es un diagrama de bloques de la organizacion del almacenamiento ffsico.
La Fig. 4 es un diagrama de bloques de la estructura de datos usada para la tabla y entradas de correspondencias casi ordenadas.
La Fig. 5 es un diagrama de bloques de la estructura de datos usada para indexar entradas de correspondencias casi ordenadas.
La Fig. 6 es un diagrama de flujo de un procedimiento expresion sencilla.
La Fig. 7 es un diagrama de flujo de un procedimiento combinacion logica de expresiones sencillas.
La Fig. 8 es un diagrama de flujo de un procedimiento para actualizar entradas de correspondencias casi ordenadas.
La Fig. 9 es un diagrama de flujo de un procedimiento para registrar el valor mmimos y el valor maximo para un mdice de columna dado de un numero de bloques dado de un identificador de tabla dado.
La Fig. 10 es un diagrama de bloques de la estructura de arbol usada para representar expresiones de busqueda. Descripcion detallada de una forma de realizacion preferida
La Fig. 1 muestra los componentes de hardware relevantes de la forma de realizacion preferida de la invencion. Se usa una unidad de almacenamiento persistente 100-1 para guardar informacion. Un procesador de informacion 100-2 almacena y recupera informacion de una unidad de almacenamiento persistente 100-1 en la direccion de un procesador principal 100-3. Un procesador principal 100-3 recibe solicitudes desde, y contesta a, un procesador cliente 100-4. Un procesador de informacion 100-2 comprende ademas una memoria 100-2-1, una interfaz de red 100-2-2 y un procesador de proposito general 100-2-3. Un procesador principal 100-3 consiste ademas en una memoria 100-3-1, una interfaz de red 100-3-2 y un procesador de proposito general 100-3-3.
En un modo de funcionamiento, el espacio de una unidad de almacenamiento persistente 100-1 esta dividido en varias particiones, incluyendo una particion primaria para almacenar informacion de usuario, una particion espejo para almacenar una copia de seguridad de la informacion primaria de otras unidades de almacenamiento persistentes 100-1, una particion temporal para guardar resultados intermedios en la direccion de un procesador de informacion 100-2, y una particion central para guardar informacion acerca de la informacion de diseno de la unidad de almacenamiento persistente 100-1. En un modo de funcionamiento, el tamano de la particion primaria es de 15 gigabytes aproximadamente, pero tambien pueden usarse otros tamanos.
La Fig. 2 muestra los componentes de software relevantes de la forma de realizacion preferida de la invencion. Un gestor de almacenamiento 200-1 se ejecuta en un procesador de informacion 100-2. Un analizador de solicitudes de cliente 200-10, un generador de codigos de ejecucion de solicitud 200-11, un gestor de catalogo 200-12, un generador de estadfsticas 200-13 y un analizador de calificacion 200-14 se ejecutan en un procesador principal 100-3.
para calcular una lista de extensiones a partir de una
para calcular una lista de extensiones a partir de una
La Fig. 3 ilustra la division de un gran espacio de informacion en segmentos mas pequenos. Todo el espacio 300-1 esta dividido en un gran numero de extensiones mas pequenas de tamano fijo 300-2. Cada extension esta subdividida ademas en una pluralidad de bloques de subextension contiguos de tamano fijo 300-3. Es posible que una extension 300-2 o un bloque 300-3 tengan un tamano variable en lugar de un tamano fijo, lo que no afecta apenas a la forma de realizacion preferida de la invencion. En una forma de realizacion alternativa de la invencion, los tamanos de bloque pueden ser variables y pueden modificarse dinamicamente en funcion de, por ejemplo, el tipo de atributo con el que estan relacionadas las anotaciones. Por ejemplo, si los valores mmimos y maximos se refieren
5
10
15
20
25
30
35
40
45
50
55
60
65
a datos de indicacion de tiempo, el tamano de la extension puede modificarse de manera que todos los datos de un periodo de tiempo particular se almacenen en un bloque de datos.
La ventaja principal de usar tamanos fijos es que determinados calculos se vuelven mas rapidos y menos complejos, por ejemplo la correlacion de numeros de bloque con direcciones de disco. En una forma de realizacion alternativa de la invencion, el tamano fijo tambien puede cambiar dinamicamente en funcion del tamano y de otras caractensticas de la base de datos global.
Una extension 300-2 es una unidad practica de asignacion de almacenamiento persistente, de manera que a medida que crece un espacio de informacion 300-1, su crecimiento se cuantifica en unidades de extensiones 300-2. Aunque el espacio de direcciones dentro de una extension 300-2 es contiguo, sin orificios, un espacio de informacion 300-1 consiste en extensiones 300-2 posiblemente no contiguas. En particular, no es necesario que una asignacion posterior de una extension 300-2 deba generar un intervalo de direcciones que permita cualquier relacion fija con el intervalo de direcciones de cualquier asignacion anterior.
Un bloque 300-3 es la unidad mas pequena de transferencia entre la unidad de almacenamiento persistente 100-1 que alberga todo el espacio 300-1 y un procesador de informacion 100-2 que puede examinar y manipular la informacion. En una forma de realizacion, un bloque 300-3 ocupa 128 kilobytes, pero tambien pueden usarse otros tamanos.
En una forma de realizacion, una extension 300-2 consiste en 24 bloques 300-3, de manera que una extension 300-2 tiene un tamano de 3 megabytes, pero tambien pueden utilizarse otros tamanos y numeros de bloques 300-3. Los bloques de una extension estan numerados secuencialmente en un orden de direccion creciente. Nueva informacion se introduce en una extension 300-2 en un orden de numero de bloque creciente, espedficamente al final del bloque 300-3 con el numero mas alto que esta en uso.
La Fig. 4 muestra la estructura de una tabla de correspondencia casi ordenada 400, que consiste en entradas consecutivas de tabla de correspondencia casi ordenada 410. Cada entrada de tabla de correspondencia casi ordenada 410 consiste en un identificador de tabla 410-1, un mdice de columna 410-2, un valor de datos mmimo 410-3, un valor de datos maximo 410-4 y un identificador de extension 410-5.
El identificador de tabla 410-1 designa de manera unica un espacio de informacion 300-1. En una forma de realizacion es un valor numerico de 4 bytes que identifica de manera unica una tabla relacional.
El mdice de columna 410-2 identifica de manera unica una clase particular de informacion dentro del espacio de informacion 300-1 identificado por el identificador de tabla 410-1. En una forma de realizacion, un mdice de columna 410-2 es un valor numerico de 2 bytes que denota una columna de la tabla relacional identificada por el identificador de tabla 410-1. En una forma de realizacion, el valor del mdice de columna corresponde al orden en que las columnas estan definidas en la tabla relacional, de tal manera que el valor 0 denota la primera columna definida en la tabla.
En una forma de realizacion de la invencion, el valor de datos mmimo 410-1-3 y el valor de datos maximo 410-1-4 son cantidades de 8 bytes que pueden albergar tipos diferentes de valores de datos, incluyendo fechas, horas, fecha y hora o valores enteros. Los tipos reales de datos determinados por el valor de datos mmimo 410-1-3 y el valor de datos maximo 410-1-4 estan especificados en la definicion de la columna que esta denotada con el mdice de columna 410-2.
En una forma de realizacion de la invencion, el identificador de extension 410-5 es un valor numerico de 2 bytes que designa una extension particular del espacio de informacion 300-1 designado por el identificador de tabla 410-1. Particiones de almacenamiento mas grandes usaran o bien identificadores de extension de 4 bytes o extensiones mas grandes 300-2. Por tanto, en esta forma de realizacion de la invencion, cada entrada de tabla de correspondencia casi ordenada 410 comprende 24 bytes.
En una forma de realizacion de la invencion, las entradas de tabla de correspondencia casi ordenadas 410 estan agrupadas por el mdice de columna 410-2, de manera que todas las entradas de la enesima columna de una tabla estan agrupadas conjuntamente en un unico bloque 300-3. Debe observarse que cuando la cantidad total de almacenamiento de informacion disponible es de 15 gigabytes aproximadamente, el numero maximo de extensiones para este almacenamiento es de 5154 aproximadamente. Cuando el tamano de una entrada de tabla de correspondencia casi ordenada 410 es de 24 bytes, es posible agrupar las entradas de tabla de correspondencia casi ordenada 410 de cada una de las posibles 5154 extensiones en un unico bloque 300-3 de 128 K. Puesto que un bloque es la unidad de transferencia entre la unidad de almacenamiento persistente 100-1 y el procesador de informacion 100-2, es posible acceder a toda la correspondencia casi ordenada de una columna dada en una unica transferencia desde la unidad de almacenamiento persistente 100-1.
Como optimizacion, es posible agrupar las entradas de tabla de correspondencia casi ordenada 410 del mismo mdice de columna de todas las tablas en un unico bloque 300-3.
5
10
15
20
25
30
35
40
45
50
55
60
65
La Fig. 5 muestra la estructura de un mdice de correspondencia casi ordenada 500, que consiste en entradas consecutivas de mdice de correspondencia casi ordenada 510. Cada entrada de mdice de correspondencia casi ordenada 510 consiste en un identificador de tabla 510-1, un mdice de columna 510-2 y un numero de bloque 510-3. El identificador de tabla 510-1 debe tener la misma funcion e interpretacion que el identificador de tabla 410-1 de las entradas de tabla de correspondencia casi ordenada. En una forma de realizacion es un valor numerico de 4 bytes que identifica de manera unica una tabla relacional. El mdice de columna 510-2 debe tener la misma funcion e interpretacion que el mdice de columna 410-2 de las entradas de tabla de correspondencia casi ordenada. En una forma de realizacion, es un valor numerico de 2 bytes. El numero de bloque 510-3 designa el bloque 300-3 que contiene las entradas de tabla de correspondencia casi ordenada 410 para la columna de tabla designada por el identificador de tabla 510-1 y el mdice de columna 510-2. En una forma de realizacion debe ser al menos un valor numerico de 2 bytes.
Cuando un gran espacio de informacion 300-1 esta dividido en un conjunto de extensiones 300-2, una tabla de correspondencia casi ordenada 400 puede consultarse para determinar el subconjunto de extensiones 300-2 que puede contener posiblemente valores de interes. Las extensiones 300-2 que no contienen posiblemente valores de interes no tienen que explorarse. De manera conceptual, el algoritmo principal de la forma de realizacion preferida de la invencion utiliza una descripcion de informacion que recuperar y devuelve una lista de extensiones que podnan contener esa informacion. En la practica, esta tarea se divide en varios algoritmos que se ejecutan en diferentes componentes de hardware y software.
La Fig. 6 muestra un diagrama de flujo de un procedimiento para calcular la lista de identificadores de extension para expresiones sencillas de correspondencias casi ordenadas. Una expresion sencilla de correspondencias casi ordenadas es una que compara un valor de una columna particular con una constante literal. Seis comparaciones permitidas son: mayor que, menor que, mayor o igual que, menor o igual que, igual a y diferente de. Las cuatro entradas del procedimiento son (1) un identificador de tabla que se usa para denotar el espacio de informacion objetivo 300-1, (2) un mdice de columna que se usa para denotar una clase de espacio de informacion especificada por el identificador de tabla, (3) un valor objetivo de un tipo compatible con la clase de informacion asociada al mdice de columna, y (4) un operador de comparacion, tal como mayor que o menor que, con el que comparar el valor objetivo y el valor mmimo o maximo de la clase denotada de informacion en las extensiones asociadas. El procedimiento se ejecuta en el componente de gestion de almacenamiento 200-1 del procesador de informacion 100-2.
En la etapa 600 se inicializan variables locales, incluyendo una lista de resultados de identificadores de extension. En la etapa 610, el gestor de almacenamiento 200-1 encuentra la entrada de mdice de correspondencia casi ordenada 510 cuyo mdice de columna 510-2 coincide con el mdice de columna que se pasa al procedimiento. En la etapa 615, si la entrada de mdice 510 encontrada en la etapa 610 no es util (su bandera de utilidad 510-4 es falsa), entonces el proceso devuelve una lista de todos los identificadores de extension en la etapa 618. En otro caso, en la etapa 620, el gestor de almacenamiento 200-1 encuentra el bloque 300-3 de la tabla de correspondencia casi ordenada 400 indicado por el numero de bloque 510-3 en la entrada de mdice de correspondencia casi ordenada 510 encontrada en la etapa 610. En una forma de realizacion, este bloque 300-3 se almacenara en la memoria 100-2-1 despues de leerse por primera vez desde una unidad de almacenamiento persistente 100-1.
La etapa 630 entra en un bucle por cada entrada de tabla de correspondencia casi ordenada 410 del bloque 300-3 obtenido en la etapa 620. La condicion de la etapa 640 comprueba si (a) el identificador de tabla 410-1 de la siguiente entrada de tabla de correspondencia casi ordenada 410 es igual al identificador de tabla introducido en el procedimiento, y si (b) el mdice de columna 410-2 de la siguiente entrada de tabla de correspondencia casi ordenada 410 es igual al mdice de columna introducido en el procedimiento. Si se cumplen ambas condiciones, entonces la etapa 650 comprueba si el operador de comparacion introducido en el procedimiento es un operador 'mayor que' y, de ser asf, la etapa 660 comprueba si el valor objetivo introducido en el procedimiento es mayor que el valor de datos mmimo 410-3 asociado a la siguiente entrada de tabla de correspondencia casi ordenada 410. Si es asf, el identificador de extension 410-5 de la siguiente entrada de tabla de correspondencia casi ordenada 410 se anade a una lista de resultados de identificadores de extension en la etapa 680. Si el operador de comparacion es, en cambio, un operador 'menor que', entonces la etapa 670 comprueba si el valor objetivo introducido en el procedimiento es menor que el valor de datos maximo 410-4 asociado a la siguiente entrada de tabla de correspondencia casi ordenada 410. Si es asf, el identificador de extension 410-5 de la siguiente entrada de tabla de correspondencia casi ordenada 410 se anade a una lista de resultados de extensiones en la etapa 680.
Un procesamiento similar se produce para los operadores de comparacion '>=', '<='. Para procesar el operador de comparacion 'igual a', la extension 300-2 se incluye si la constate objetivo esta dentro del intervalo del valor mmimo y el valor maximo. Para procesar el operador de comparacion 'diferente de', la extension 300-2 no se tiene en cuenta si y solo si sus valores mmimo y maximo son iguales a la constante objetivo. Despues de que todas las entradas de tabla de correspondencia casi ordenada 410 del bloque 300-3 obtenido en la etapa 620 se hayan examinado, la lista de resultados de identificadores de extension se devuelve como el resultado del procedimiento en la etapa 690.
5
10
15
20
25
30
35
40
45
50
55
60
65
El procedimiento descrito anteriormente es util para situaciones sencillas en las que la informacion solicitada puede describirse como una comparacion sencilla de un unico valor de columna con un valor constante. Pero la mayona de solicitudes de informacion tienen condiciones mas complejas. Algunas de estas pueden describirse como una combinacion logica de las comparaciones simples descritas anteriormente. Por ejemplo, una solicitud para comparar resultados anuales puede recuperar eventos que se produjeron durante el mes de enero de este ano o durante el mes de enero del ano pasado. Esto puede expresarse como una combinacion logica:
((valor-columna-fecha >= '01/01/03') Y (valor-columna-fecha <'02/01/03')) O
((valor-columna-fecha >= '01/01/02') Y (valor-columna-fecha <'02/01/02'))
La Fig. 7 muestra un diagrama de flujo de un procedimiento para devolver una lista de identificadores de extension 300-2 que puede contener registros que satisfacen una combinacion logica de comparaciones sencillas. La idea basica del procedimiento es calcular la lista de identificadores de extension para cada una de las comparaciones de la combinacion logica y despues formar la interseccion de las listas resultantes para cada conjuncion logica y formar la union de las listas resultantes para cada disyuncion logica. La lista resultante incluira identificadores de solo aquellas extensiones que pueden contener valores que satisfagan la combinacion logica en su totalidad.
El procedimiento acepta como entrada un arbol de expresion de correspondencias casi ordenadas 1000 y genera como salida un conjunto de identificadores de extension. El procedimiento actua de manera recursiva primero en profundidad. Cuando encuentra un nodo hoja que contiene una expresion sencilla de correspondencias casi ordenadas 1000-3, transfiere los contenidos de la expresion al procedimiento descrito en la Fig. 6 para calcular el conjunto de identificadores de extension para expresiones sencillas de correspondencias casi ordenadas. Algunos nodos hoja 1000-2 contienen una indicacion de que son equivalentes a todos los identificadores de extension. Esto puede ser el caso si la solicitud de recuperacion uso una expresion que era muy compleja de manejar por una correspondencia casi ordenada, por ejemplo cuando se compara un valor de columna con otro valor de columna. Cuando el procedimiento encuentra un nodo de este tipo, devuelve el conjunto de todos los identificadores de extension. Cuando el procedimiento encuentra un nodo que no es hoja 1000-1 se llama recursivamente a sf mismo en cada uno de los hijos del nodo que no es hoja con el fin de calcular sus conjuntos de identificadores de extension. Despues combina estos conjuntos de identificadores de extension segun el operador logico especificado en el nodo que no es hoja. Si el operador es una conjuncion (Y), entonces el procedimiento forma un nuevo conjunto de identificadores de extension que es la interseccion de los conjuntos de identificadores de extension devueltos para cada uno de los hijos del nodo. Si el operador es una disyuncion (O), entonces el procedimiento forma un nuevo conjunto de identificadores de extension que es la union de los conjuntos de identificadores de extension devueltos para cada uno de los hijos del nodo.
El arbol de expresion de correspondencias casi ordenadas usado como entrada al procedimiento descrito anteriormente se genera en el procesador principal 100-3 mediante el analizador de calificacion 200-14. Cuando el analizador de solicitud de cliente 200-10 recibe una solicitud para recuperar informacion, analiza la especificacion de la informacion a recuperar. En una forma de realizacion, el analizador de consulta de progreso se usa para generar un arbol de expresion que corresponde a la clausula 'donde' de una consulta SQL. Algunas de las restricciones especificadas en la solicitud de informacion pueden ser muy complejas de manejar por una correspondencia casi ordenada. El analizador de calificacion 200-14 transforma el arbol de expresion producido por el analizador de solicitud de cliente 200-10 en la forma de arbol de expresion de correspondencias casi ordenadas 1000 usada anteriormente. Estos datos se envfan despues junto con la solicitud de informacion desde un procesador principal 100-3 a uno o mas procesadores de informacion 100-2, que usan el arbol de expresion de correspondencias casi ordenadas 1000 descrito en el procedimiento anterior para limitar el alcance de una busqueda de informacion. En una forma de realizacion, el analizador de calificacion 200-10 lleva a cabo determinadas optimizaciones en este proceso de transformacion. Si un nodo es una disyuncion (O) y si alguno de sus hijos es un indicador de tipo 'todas las extensiones', entonces es posible sustituir la disyuncion por el indicador 'todas las extensiones' y podar los hijos. Si un nodo es una conjuncion (Y) y si todos sus hijos tienen el indicador 'todas las extensiones', entonces es posible sustituir la conjuncion por el indicador 'todas las extensiones' y podar los hijos. Si un nodo es una conjuncion (Y) y si algunos de sus hijos tienen el indicador 'todas las extensiones' mientras que otros de sus hijos son expresiones sencillas de correspondencias casi ordenadas, entonces es posible podar los hijos que tengan el indicador 'todas las extensiones' dejando intactos los otros hijos.
A medida que cambia la informacion almacenada en una extension 300-2, tambien puede ser necesario cambiar las anotaciones de valor mmimo 410-3 y de valor maximo 410-4 de la entrada de tabla de correspondencia casi ordenada 410 asociada a esa extension 300-2. Si fuera necesario, en un modo de funcionamiento estos cambios pueden producirse al mismo tiempo que cambia la informacion subyacente, de manera gradual. En otro modo de funcionamiento preferido, los cambios producidos en la tabla de correspondencia casi ordenada pueden realizarse por lotes despues de modificar la informacion subyacente.
El enfoque del modo por lotes relacionado con las actualizaciones de las correspondencias casi ordenadas se lleva a cabo en dos fases. En primer lugar, se generan estadfsticas para cada extension 300-2 de un espacio de informacion 300-1. Despues se determina si el tamano y la distribucion de informacion dentro del espacio de
5
10
15
20
25
30
35
40
45
50
55
60
65
informacion 300-1 es tal que las solicitudes relacionadas con esta informacion se beneficiaran de usar una correspondencia casi ordenada.
La Fig. 8 muestra un diagrama de flujo de un procedimiento usado para actualizar correspondencias casi ordenadas. Las entradas del procedimiento incluyen (1) un identificador de tabla que designa un espacio de informacion particular 300-1, (2) una descripcion del tamano y diseno de un registro del espacio de informacion 300-1, y (3) una lista de indices de columna que pueden ser candidatos a correspondencias casi ordenadas. En una forma de realizacion, cualquier columna cuyo tipo de datos sea una fecha, una hora, una fecha y hora o un valor entero es un candidato a correspondencia casi ordenada; sin embargo, tambien es razonable permitir correspondencias casi ordenadas para otros tipos de datos. El efecto del procedimiento es crear o actualizar entradas de tabla de correspondencia casi ordenada 410 para las extensiones 300-2 del espacio de informacion 300-1 designado por la entrada de identificador de tabla. La salida del procedimiento no es esencial para el funcionamiento de la forma de realizacion preferida de la invencion.
El procedimiento comienza en la etapa 800 asignando e inicializando el almacenamiento para guardar un valor mmimo y un valor maximo para cada columna de la lista de entrada de indices de columna. Despues, recorre en un bucle cada bloque 300-3 asociado a la entrada de identificador de tabla, leyendo el siguiente bloque 300-3 de la unidad de almacenamiento persistente 100-1 en la etapa 805. El procedimiento entra en un bucle por cada registro almacenado en el bloque 300-3, localizando el siguiente registro en la etapa 810. En registros de tamano fijo, el procedimiento usado en la etapa 810 para localizar el siguiente registro es simplemente incrementar un puntero de registro con el tamano fijo de un registro. En registros de tamano variable, el procedimiento usado en la etapa 810 para localizar el siguiente registro implica encontrar un campo del registro actual que especifique el tamano del registro actual y despues incrementar el puntero de registro en ese tamano. Despues, el procedimiento entra en un bucle por cada mdice de columna de la lista de entrada de indices de columna, obteniendo el siguiente mdice de columna en la etapa 815. En la etapa 820, el procedimiento extrae el valor actual del campo del siguiente registro que esta ubicado en el siguiente mdice de columna.
En la etapa 825, el procedimiento comprueba si el valor actual extrafdo en la etapa 820 es inferior al valor mmimo de la siguiente columna que se asigno e inicializo en la etapa 800. Si es asf, la etapa 828 fija el valor mmimo para la siguiente columna igual al valor actual extrafdo en la etapa 820. En caso contrario, en la etapa 830, el procedimiento comprueba si el valor actual extrafdo en la etapa 820 es mayor que el valor maximo de la siguiente columna que se asigno e inicializo en la etapa 800. Si es asf, la etapa 833 fija el valor maximo de la siguiente columna igual al valor actual extrafdo en la etapa 820. En la comparacion 835, si hay mas indices de columna en la lista de entrada de indices de columna, el procedimiento vuelve a la etapa 815. En caso contrario, en la comparacion 838, si hay mas registros en el siguiente bloque, el procedimiento vuelve a la etapa 810. Si no, el procedimiento ha finalizado la recopilacion de los valores mmimos y maximos de todas las columnas de interes de un bloque 300-3. En la etapa 840, el procedimiento entra en bucle para el almacenamiento asignado en la etapa 800 para guardar los valores mmimo y maximo asociados a cada mdice de columna de la lista de entrada de indices de columna, recuperando el par de valores mmimo y maximo asociado al siguiente mdice de columna.
En la etapa 845, para cada dicho par de valores, el procedimiento llama a una subrutina descrita en la Fig. 9 para registrar el valor mmimos y el valor maximo para un mdice de columna dado de un numero de bloque dado de un identificador de tabla dado. Si en la etapa 850 hay mas indices de columna que procesar, el procedimiento vuelve a la etapa 840. En caso contrario, si hay mas bloques que leer en la etapa 855, el procedimiento vuelve a la etapa 805. Si no, el procedimiento finaliza y sale.
En una forma de realizacion de la invencion, el codigo para implementar el procedimiento descrito anteriormente en la Fig. 8 se genera en el procesador principal 100-3 mediante un generador de codigo de ejecucion de solicitud 200-11. Cuando un administrador o aplicacion de una base de datos solicita la recopilacion de nuevas estadfsticas de correspondencias casi ordenadas para una tabla identificada, un generador de estadfsticas 200-13 consulta un gestor de catalogo 200-12 para determinar que indices de columna de la tabla identificada son candidatos a correspondencia casi ordenada. Esta determinacion esta basada en el tipo de datos de la columna. En una forma de realizacion, las columnas cuyo tipo de datos en una fecha, una hora, una fecha y hora o un entero, son candidatas a correspondencia casi ordenada. Despues, el generador de estadfsticas 200-13 invoca al generador de codigo de ejecucion de solicitud 200-11 para generar el codigo que implementa el procedimiento descrito anteriormente en la Fig. 7, pero con ciertas modificaciones en el procedimiento descrito en la Fig. 7.
Puesto que el numero de columnas que son candidatas a la generacion de correspondencias casi ordenadas se conoce cuando se genera el codigo, la asignacion y la inicializacion del almacenamiento en la etapa 700 puede sustituirse por la declaracion y la inicializacion de variables apiladas que albergan los valores mmimos y maximos de cada columna de interes de cada bloque 300-3. Ademas, puesto que el numero de columnas candidatas se conoce cuando se genera el codigo, los bucles que recorren las columnas empezando por las etapas 715 y 740 pueden simplificarse, y consisten en codigo que procesa el conjunto conocido y fijo de indices de columnas.
La Fig. 9 es un diagrama de flujo de un procedimiento para generar nuevas entradas de correspondencias casi ordenadas. El procedimiento toma como entrada (1) un identificador de tabla, (2) un mdice de columna, (3) un
5
10
15
20
25
30
35
40
45
50
55
60
65
numero de bloque, (4) un valor mmimo y (5) un valor maximo. El identificador de tabla designa un espacio de informacion 100-1 y, en una forma de realizacion, una tabla de base de datos relacional. El mdice de columna designa una clase de informacion en el espacio de informacion 100-1 y, en una forma de realizacion, una columna de una tabla de base de datos relacional. El numero de bloque designa un bloque 300-3 del espacio de informacion 100-1 y, en una forma de realizacion, un conjunto particular de 128 Kilobytes que contienen registros de una tabla de base de datos relacional.
Los valores mmimos y maximos son valores de datos del tipo de datos asociado a la clase de informacion designada por el mdice de columna y son cantidades de 8 bytes en una forma de realizacion. El efecto del procedimiento es crear o actualizar potencialmente entradas de tabla de correspondencia casi ordenada 410 y entradas de mdice de correspondencia casi ordenada 510. Las salidas del procedimiento, si las hubiera, no son relevantes para la forma de realizacion preferida de la invencion.
El procedimiento lleva a cabo algun procesamiento especial para el primer y el ultimo numero de bloque de una extension 300-2, y para el ultimo numero de bloque de una tabla. En lo que respecta al primer numero de bloque de una extension 300-2, el procedimiento inicializa un valor mmimo y un valor maximo de ejecucion para cada columna candidata de la extension 300-2. En lo que respecta a numeros de bloque entre el primer y el ultimo numero de bloque de una extension 300-2, el procedimiento actualiza el valor mmimo y el valor maximo de ejecucion para incluir el valor mmimo y el valor maximo de entrada. En lo que respecta al ultimo numero de bloque de una extension 300-2, el procedimiento crea un registro temporal de los valores mmimos y maximos de todas las columnas candidatas de la extension 300-2.
Tras procesar el ultimo numero de bloque de una tabla, el procedimiento aplica una polftica para determinar si la cantidad de datos y la distribucion de valores almacenados en los registros temporales justifican una correspondencia casi ordenada para las columnas candidatas de la tabla. En lo que respecta a cada columna candidata que debena tener una correspondencia casi ordenada con dicha polftica, el procedimiento actualiza entradas de tabla de correspondencia casi ordenada para cada extension asociada a la columna candidata para incluir el valor mmimo y el valor maximo para esa columna y extension, como se ha calculado mediante el procedimiento anterior.
En una forma de realizacion de la invencion, la polftica es proporcionar siempre una correspondencia casi ordenada a cada columna candidata. De esta manera, una tabla cuya correspondencia casi ordenada mejoro en el tiempo, a traves de una mejor ordenacion de nuevos registros, puede gestionarse bien. En una forma de realizacion relacionada, la entrada de mdice de correspondencia casi ordenada 510 puede ampliarse para incluir una bandera de utilidad. Si la distribucion de valores para una columna dada de una tabla dada se distribuyo ampliamente a traves de las extensiones 300-2 para proporcionar una correspondencia casi ordenada util, entonces la entrada de mdice 510 para el identificador de tabla dado 510-1 y el mdice de columna 510-2 pueden tener su bandera de utilidad fijada a 'falso'. Si la distribucion de valores mejoro en el tiempo, una polftica puede dictaminar el momento en que la bandera de utilidad se fijo a 'verdadero', de modo que la correspondencia casi ordenada se usara para solicitudes subsiguientes de informacion en funcion de esa columna.
En otra forma de realizacion de la invencion se usa una polftica para determinar si una tabla es lo bastante grande como para justificar correspondencias casi ordenadas para sus columnas. Las tablas que son lo bastante pequenas como para almacenarse en una unica extension no se beneficiaran de una correspondencia casi ordenada siempre que se devuelvan algunos datos de una solicitud de informacion. El tiempo requerido para usar una correspondencia casi ordenada para tales casos se desperdiciana, lo que aumentana el tiempo total requerido para satisfacer la solicitud. Por el contrario, las consultas a tablas muy grandes son las que mas se benefician del uso de correspondencias casi ordenadas.
Si el objetivo es mejorar el tiempo de respuesta de todas las consultas, entonces puede tener sentido usar correspondencias casi ordenadas para tablas mas grandes que el tamano de una extension, siempre que la distribucion de los valores de columna ofrezcan una buena especificacion. Sin embargo, si el objetivo es mejorar el rendimiento total de todas las consultas, entonces es probable que el 90% o mas del tiempo ahorrado mediante el uso de correspondencias casi ordenadas se deba al uso de correspondencias casi ordenadas para consultas a tablas muy grandes. En este ultimo caso podna elegirse una polftica para definir correspondencias casi ordenadas solo para tablas que ocupen mas del 2% del almacenamiento disponible, o mas de 300 megabytes cuando hay 15 gigabytes de almacenamiento disponible. Estos numeros y porcentajes no son esenciales para el funcionamiento de la forma de realizacion preferida de la invencion, pudiendo usarse otras polfticas.
En otra forma de realizacion adicional de la invencion se usa una polftica para determinar si la distribucion de valores de columna a traves de las extensiones 300-2 justifica el uso de una correspondencia casi ordenada. Si cada extension 300-2 de un espacio de informacion 300-1 tema precisamente los mismos valores mmimo y maximo para un mdice de columna dado, entonces no sena beneficioso usar una correspondencia casi ordenada siempre que algun dato satisfaga la solicitud. En este caso, el 100% de los intervalos de valores se solapa con el 100% de las extensiones 300-2. Cuanto menor solapamiento haya entre los intervalos de valores de las extensiones 300-2, mayor sera el beneficio de usar correspondencias casi ordenadas.
5
10
15
20
25
30
35
40
45
50
55
60
65
Para valorar la distribucion de valores de columna en esta forma de realizacion, el procedimiento comprueba el intervalo de valores de columna a traves de las extensiones 300-2 de un espacio de informacion 300-1. Si los intervalos de dos extensiones 300-2 se solapan en mas del 50%, el procedimiento los junta en un unico 'sector' logico. Si los intervalos de dos extensiones 300-2 se solapan en menos del 50%, el procedimiento los situa en diferentes 'sectores' logicos.
Tras colocar todos los intervalos de extensiones en 'sectores' logicos, si todas las extensiones 300-2 estan en un 'sector' logico, la polttica es evitar definir una correspondencia casi ordenada para esa columna. Si el numero de 'sectores' logicos es al menos el 50% del numero de extensiones 300-2, la polttica es definir una correspondencia casi ordenada. Si algun 'sector' logico contiene mas del 50% de los datos del espacio de informacion 300-1, la polttica evita definir una correspondencia casi ordenada; en caso contrario, la polftica es definir una correspondencia casi ordenada. Estos porcentajes no son esenciales para el funcionamiento de la forma de realizacion preferida de la invencion, pudiendo usarse otras polfticas.
En el intervalo entre actualizaciones por lotes de correspondencias casi ordenadas, la creacion, el borrado y la modificacion de informacion puede afectar a la validez de las correspondencias casi ordenadas. La forma de realizacion preferida de la invencion adopta un enfoque conservador y pesimista en tales situaciones, como se describe en las siguientes secciones.
Cuando se borra un registro de un espacio de informacion 100-1 denotado mediante un identificador de tabla, si ese registro contema un valor de columna que era el valor mmimo para todas las columnas de la extension 300-2 del registro, entonces el nuevo valor mmimo para esa columna de esa extension 300-2 puede ser mayor que el valor mmimo registrado 410-3 en la entrada de tabla de correspondencia casi ordenada 410 para esa columna, identificador de tabla y extension 300-2. Asimismo, si ese registro contema un valor de columna que era el valor maximo para todas las columnas de la extension 300-2 del registro, entonces el nuevo valor maximo para esa columna de esa extension 300-2 puede ser menor que el valor maximo registrado 410-4 en la entrada de tabla de correspondencia casi ordenada 410 para esa columna, identificador de tabla y extension 300-2. Dicho de otro modo, borrar un registro puede tener el efecto de acotar el intervalo de valores para las columnas de una extension 300-2.
Si la entrada de correspondencia casi ordenada 410 para esa extension 300-2 se actualizara para reflejar tales nuevos valores mmimos o maximos, esto podna ayudar a mejorar el rendimiento de solicitudes posteriores, lo que podna evitar explorar la extension 300-2 definida de manera mas acotada. Sin embargo, en el modo de funcionamiento por lotes, el borrado de registros no afecta a las entradas de tabla de correspondencia casi ordenada 410. Si el intervalo de la extension 300-2 se acoto modificando la entrada de tabla de correspondencia casi ordenada 410 correspondiente, entonces podnan surgir problemas de control de concurrencia si el borrado formo parte de una transaccion que fue abortada. Ademas, si el espacio de informacion 100-1 soporta multiples versiones, entonces determinadas transacciones o aplicaciones que funcionan con una version anterior necesitanan tener acceso a los registros borrados y no podnan acceder a los mismos si la entrada de tabla de correspondencia casi ordenada 410 no tuviera asignada una version.
Un tratamiento mas liberal y optimista de los registros borrados es posible. Si la tabla de correspondencia casi ordenada y la informacion de mdice de correspondencia casi ordenada tienen asignadas una version junto con los espacios de informacion que describen y si la tabla de correspondencia casi ordenada y la informacion de mdice de correspondencia casi ordenada se actualizan usando el mismo mecanismo de transaccion como parte de la misma transaccion que borra un registro, entonces puede suponerse de manera razonable que se consigue un buen rendimiento. El coste de esta posible mayor precision de la correspondencia casi ordenada es un procesamiento anadido en cada borrado de registro. Si la correspondencia casi ordenada ya es espedfica y util, entonces el beneficio de hacerla incluso mas espedfica y util no puede justificar el coste computacional anadido en cada borrado de registro.
Cuando se crea un nuevo registro, si ese nuevo registro contema un valor de columna que era el valor mmimo para todas las columnas de la extension 300-2 del registro, entonces el nuevo valor mmimo 410-3 de la entrada de tabla de correspondencia casi ordenada 410 asociada a esa columna para esa extension 300-2 debe reducirse al menos al valor especificado en el nuevo registro. Asimismo, si ese nuevo registro contema un valor de columna que era el valor maximo para todas las columnas de la extension 300-2 del registro, entonces el nuevo valor maximo 410-4 de la entrada de tabla de correspondencia casi ordenada 410 asociada a esa columna para esa extension 300-2 debe aumentarse a al menos el valor especificado en el nuevo registro. Dicho de otro modo, crear un registro puede tener el efecto de ampliar el intervalo de valores para las columnas de una extension 300-2.
Si las entradas de correspondencias casi ordenadas 410 para la extension 300-2 del nuevo registro no se actualizan para reflejar dichos nuevos valores mmimos o maximos, entonces las solicitudes de informacion podnan omitir erroneamente los nuevos registros. En una forma de realizacion, las entradas de tabla de correspondencia casi ordenada 410 para extensiones 300-2 que contienen registros recien creados se amplfan lo maximo posible para abarcar todos los valores posibles del tipo de datos de la columna. Esto es mas conservador y pesimista que el caso
5
10
15
20
25
30
35
40
45
50
55
60
65
de expandir el intervalo de una entrada de tabla de correspondencia casi ordenada 410 de la extension 300-2 para abarcar solamente los nuevos valores mmimos y maximos especificados en el nuevo registro.
Si el gestor de almacenamiento 200-1 asigna una nueva extension 300-2 para albergar un registro recien creado, tambien crea nuevas entradas de tabla de correspondencia casi ordenada 410 para cada columna sobre la que va a definirse una correspondencia casi ordenada. En una forma de realizacion, el valor mmimo 410-3 y el valor maximo 410-4 asociados a estas entradas de tabla de correspondencia casi ordenada 410 tienen el intervalo mas amplio posible. Si el registro recien creado es el primer registro asociado al espacio de informacion 100-1 (o a una tabla de base de datos relacional en una forma de realizacion), entonces el gestor de almacenamiento 200-1 tambien crea una entrada de mdice de correspondencia casi ordenada 510 para cada nueva entrada de tabla de correspondencia casi ordenada 410. Inicializa estas entradas de mdice 510 con el numero de bloque que contiene las nuevas entradas de tabla de correspondencia casi ordenada 410.
A modo de optimizacion, cuando las entradas de tabla de correspondencia casi ordenada 410 para un numero de columna dado a traves de todas las tablas se introducen en el mismo bloque 300-3, entonces una entrada de mdice de correspondencia casi ordenada 510 se crea para un mdice de columna dado solo si no hay otra entrada de mdice de correspondencia casi ordenada 510 ya definida para ese mdice, independiente del identificador de tabla.
Un tratamiento mas liberal y optimista de registros recien creados es posible. Si la tabla de correspondencia casi ordenada y la informacion de mdice de correspondencia casi ordenada tienen asignadas una version junto con los espacios de informacion que describen, y si la tabla de correspondencia casi ordenada y la informacion de mdice de correspondencia casi ordenada se actualizan usando el mismo mecanismo de transaccion y como parte de la misma transaccion que crea un nuevo registro, entonces puede suponerse de manera razonable que se obtiene un buen rendimiento. El coste de esta posible mayor precision de la correspondencia casi ordenada es un procesamiento anadido en cada creacion de registro. En entornos en los que se crean cientos de millones de nuevos registros en un proceso de carga por lotes, el coste computacional de ajustar gradualmente valores mmimos 410-3 y maximos 410-4 de entradas de tabla de correspondencia casi ordenada 410 puede ser inaceptable. En tales casos de carga por lotes, la generacion de estadfsticas por lotes, como la descrita anteriormente en la Fig. 7, puede ser mas eficiente desde un punto de vista computacional.
En otra forma de realizacion, los valores reales en registros recien creados se usan para actualizar el valor mmimo 410-3 y el valor maximo 410-4 de la entrada de tabla de correspondencia casi ordenada 410 correspondiente. Esto se realiza sin crear multiples versiones de los datos de correspondencias casi ordenadas o deshaciendo los cambios de la entrada de tabla de correspondencia casi ordenada 410 en caso de abortar la transaccion en la que se crean los nuevos registros. El efecto de esto es que el intervalo (diferencia entre el valor maximo 410-4 y el valor mmimo 410-3 de la entrada de tabla de correspondencia casi ordenada 410) sera al menos tan amplio como debena ser, y posiblemente mas. Un intervalo demasiado amplio significa que la extension 300-2 puede explorarse sin necesidad para obtener la informacion solicitada. Esta posicion conservadora es segura y es menos pesimista que invalidar las entradas de tabla de correspondencia casi ordenada 410 para extensiones 300-2 que tienen registros recien creados y no necesita la complejidad computacional ni la sobrecarga de almacenamiento de soportar multiples versiones o deshacer cambios en entradas de tabla de correspondencia casi ordenada 410.
Cuando se actualiza un registro existente, si el espacio de informacion soporta multiples versiones, una forma de realizacion supone de manera pesimista que sus valores de columna han ampliado lo maximo posible el intervalo de todas las entradas de tabla de correspondencia casi ordenada 410 asociadas a la extension 300-2 que alberga la nueva version del registro. Si el espacio de informacion no soporta multiples versiones, una forma de realizacion supone de manera pesimista que sus valores de columna han ampliado lo maximo posible el intervalo de todas las entradas de tabla de correspondencia casi ordenada 410 asociadas a la extension 300-2 que contiene el registro.
En algunos modos de funcionamiento, el espacio usado para almacenar informacion en un espacio de informacion 300-1 se reclama periodicamente. Por ejemplo, en un almacen de datos con una polftica de guardar los ultimos 120 dfas de informacion de eventos, cualquier informacion de eventos que supere los 120 dfas puede archivarse. Las extensiones 300-2 usadas para almacenar esta informacion antigua pueden reclamarse y reutilizarse despues para almacenar otra informacion.
En una forma de realizacion de la invencion, la reclamacion puede realizarse liberando los bloques 300-3 de las extensiones mas bajas que estan reclamandose y renumerando los bloques 300-3 de todas las extensiones 300-2 guardadas. Por ejemplo, supongase que un espacio de informacion 300-1 consiste inicialmente en 10 extensiones 300-2 y que despues de un periodo de tiempo la polftica dictamino que la informacion almacenada en las 3 primeras extensiones 300-2 puede archivarse y que el espacio usado por esas 3 primeras extensiones 300-2 puede reclamarse. Si una extension consiste en 24 bloques 300-3, entonces al primer bloque 300-3 de la cuarta extension original 300-2 se le asigna el numero 72 (3*24).
Sin embargo, despues de la reclamacion, el primer bloque 300-3 de la cuarta extension original 300-2 debe renumerarse para convertirse en el primer bloque 300-3 de la primera extension 300-2. Esto puede conseguirse restando a cada numero de bloque guardado el numero de bloques 300-3 reclamado, de modo que el nuevo numero
5
10
15
20
25
30
35
40
de bloque del primer bloque 300-3 de la cuarta extension original 300-2 pasana a ser 0 (72 menos el numero de bloques reclamado, que tambien es 72 en este ejemplo).
Cuando los bloques 300-3 de una extension 300-2 se renumeran, su mapeo con el numero de extension puede cambiar de tal manera que invalide entradas de correspondencias casi ordenadas. En este caso puede usarse un procedimiento sencillo para restaurar la validez del establecimiento de correspondencias.
Si se ha reclamado un numero N de extensiones 300-2 de bloques, entonces las entradas de tabla de correspondencia casi ordenada 410 para esas extensiones 300-2 se borran de la tabla de correspondencia casi ordenada 400. Ademas, el mismo numero N debe restarse a todos los identificadores de extension 410-5 de todas las entradas de tabla de correspondencia casi ordenada 410 restantes asociadas al espacio de informacion 300-1 que se ha reclamado.
El uso de correspondencias casi ordenadas con otras relaciones parcialmente ordenadas es similar al anterior. Un ejemplo es su uso con vistas materializadas ordenadas por sectores. En este ejemplo, las fases de ordenacion son las habituales: Fase 1. Crear histograma e identificar lfmites de sector; Fase 2. Transferir datos a los sectores; Fase 3. Ordenar cada sector. Aunque este ejemplo es una ordenacion de sectores sin mejoras, las correspondencias casi ordenadas tambien se aplican de manera apropiada a otras relaciones parcialmente ordenadas.
Normalmente, la Fase 1 es muy rapida y puede realizarse cuando se cargan datos. En la Fase 2 se leen los datos sin procesar, y los campos solicitados se distribuyen en sus sectores apropiados sin ordenarse. En la Fase 3 se ordenan cada uno de los sectores.
Con la forma de realizacion preferida de esta invencion se crean y mantienen correspondencias casi ordenadas, como se ha descrito en las secciones anteriores, durante la Fase 2 y la Fase 3. Las correspondencias casi ordenadas creadas despues de la Fase 2 son particularmente utiles ya que la relacion parcialmente ordenada creada tras la Fase 2 puede usarse en consultas sin una exploracion de tabla completa. En lo que respecta a consultas que tienen una clausula de restriccion o un orden segun una clausula en el mdice de columna, solo se exploran aquellas partes del disco que pueden contener datos objetivo. Ademas, en lo que respecta a consultas que esperan datos perfectamente ordenados (datos de la Fase 3) procedentes del disco, estos datos de la Fase 2 pueden leerse, y una ordenacion rapida de esos datos que satisfacen la restriccion puede realizarse tras la lectura del disco.
Puesto que la Fase 1 y la Fase 2 requieren el 40% aproximadamente del tiempo total de ordenacion de sector, el uso de una relacion de Fase 2 permite que el tiempo de "ordenacion" eficaz para una tabla sea el 40% de lo que sena en otro caso. Por tanto, la Fase 3 puede llevarse cabo sector a sector como una tarea en segundo plano.
Aunque la forma de realizacion preferida de esta invencion se ha mostrado y descrito en particular con referencias a formas de realizacion preferidas de la misma, los expertos en la tecnica deben entender que pueden realizarse varios cambios en la forma y los detalles sin apartarse del alcance de la forma de realizacion preferida de la invencion definida por las reivindicaciones adjuntas.
Claims (19)
- 5101520253035404550556065REIVINDICACIONES1. Un procedimiento implementado por ordenador para localizar datos deseados en una base de datos (300-1) usando una tabla de correspondencia casi ordenada (400), comprendiendo dicho procedimiento de manera secuencial:dividir datos de la base de datos (300-1) en una pluralidad de extensiones (300-2);generar estadfsticas de correspondencias casi ordenadas de datos incluidos en cada extension (300-2), donde las estadfsticas de correspondencias casi ordenadas comprenden uno o mas intervalos de datos incluidos en la extension respectiva, donde cada uno de los intervalos consiste en un valor mmimo y un valor maximo de un atributo de los datos de la extension respectiva, recopilando, para todas las extensiones, el valor mmimo y el valor maximo del atributo de los datos de la extension respectiva,anotar cada extension (300-2) con la estadfstica de correspondencias casi ordenadas de los datos incluidos en la extension respectiva,donde los intervalos de datos asociados a la extensiones (300-2) estan almacenados en la tabla de correspondencia casi ordenada;seleccionar una o mas extensiones (300-2) para las que los intervalos de datos asociados se solapan al menos parcialmente con un intervalo de datos de los datos deseados, en funcion de los valores mmimos y maximos de los intervalos de datos almacenados en la tabla de correspondencia casi ordenada, consultando la tabla de correspondencia casi ordenada para determinar un subconjunto de extensiones que pueden albergar los datos deseados; ybuscar la una o mas extensiones seleccionadas para localizar los datos deseados.
- 2. El procedimiento segun la reivindicacion 1, en el que el intervalo de datos para cada extension comprende uno o mas intervalos de datos en funcion de uno o mas atributos, y la etapa de seleccionar una o mas extensiones comprende ademas:seleccionar una o mas extensiones (300-2) en funcion de un conjunto preseleccionado de atributos para los que intervalos de datos asociados se solapan al menos parcialmente con un intervalo de datos para los datos deseados, usando un conjunto preseleccionado de atributos de datos en funcion del uno o mas atributos asociados a la extension (300-2).
- 3. El procedimiento segun la reivindicacion 2, en el que el uno o mas atributos estan ordenados de manera logica y la etapa de seleccionar una o mas extensiones en funcion de un conjunto preseleccionado de atributos comprende ademas:seleccionar una o mas extensiones (300-2) en funcion de un conjunto preseleccionado de atributos en funcion de intervalos para esos atributos en un orden segun un orden logico dado de los atributos.
- 4. El procedimiento segun la reivindicacion 1, que comprende ademas: actualizar la anotacion de extension para una extension a medida que se realizan cambios en datos almacenados en esa extension (300-2).
- 5. El procedimiento segun la reivindicacion 1, en el que los tamanos de las extensiones no son iguales entre sr
- 6. El procedimiento segun la reivindicacion 2, que comprende ademas: seleccionar un tamano apropiado para una extension particular en funcion de un tipo de atributo al que se refiere el intervalo de datos asociado.
- 7. El procedimiento segun la reivindicacion 1, en el que los tamanos de las extensiones (300-2) son iguales entre sr
- 8. El procedimiento segun la reivindicacion 7, que comprende ademas: seleccionar dinamicamente un tamano para las extensiones (300-2) en funcion de cambios en el tamano de la base de datos.
- 9. El procedimiento segun la reivindicacion 1, en el que la base de datos es una vista materializada de una base de datos.
- 10. El procedimiento segun la reivindicacion 1, en el que una anotacion en un intervalo de datos para una extension (300-2) esta coubicada ffsicamente con esa extension.
- 11. El procedimiento segun la reivindicacion 1, en el que la una o mas extensiones seleccionadas (300-2) comprenden subextensiones anotadas, y la etapa de buscar la una o mas extensiones seleccionadas (300-2) comprende ademas:seleccionar una o mas subextensiones para las que los intervalos de datos asociados pueden contener los datos deseados; ybuscar la una o mas subextensiones seleccionadas para localizar los datos deseados.5101520253035
- 12. El procedimiento segun la reivindicacion 11, en el que los intervalos de datos asociados a las subextensiones estan basados en uno o mas atributos diferentes a los atributos asociados a intervalos de datos asociados a las extensiones (300-2).
- 13. El procedimiento segun la reivindicacion 1, en el que la base de datos es una base de datos distribuida almacenada en uno o mas nodos.
- 14. El procedimiento segun la reivindicacion 1, que comprende ademas:determinar si establecer al menos una tabla de correspondencia casi ordenada para un espacio de informacion dentro de la base de datos.
- 15. El procedimiento segun la reivindicacion 14, en el que la etapa de determinar si establecer tablas de correspondencias casi ordenadas para el espacio de informacion particular comprende ademas:identificar al menos un mdice de columna del espacio de informacion como candidato a tabla de correspondencia casi ordenada.
- 16. El procedimiento segun la reivindicacion 15, en el que la etapa de identificar al menos un mdice de columna como candidato a tabla de correspondencia casi ordenada comprende ademas:identificar al menos un mdice de columna candidato en funcion de un tipo de datos de columna asociado.
- 17. El procedimiento segun la reivindicacion 14, que comprende ademas:crear correspondencias casi ordenadas para todos los indices de columna candidatos identificados.
- 18. El procedimiento segun la reivindicacion 14, en el que la etapa de determinar si establecer tablas de correspondencias casi ordenadas para el espacio de informacion particular comprende ademas:comparar intervalos de datos de extensiones del espacio de informacion; y determinar si una cantidad de solapamiento entre intervalos de datos de las extensiones del espacio de informacion es lo bastante pequena como para indicar la necesidad de una tabla de correspondencia casi ordenada.
- 19. El procedimiento segun la reivindicacion 14, en el que la etapa de determinar si establecer tablas de correspondencias casi ordenadas para el espacio de informacion particular comprende ademas:determinar si el espacio de informacion es lo bastante grande como para indicar la necesidad de una correspondencia casi ordenada.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US47169103P | 2003-05-19 | 2003-05-19 | |
US471691P | 2003-05-19 | ||
PCT/US2004/015528 WO2004104774A2 (en) | 2003-05-19 | 2004-05-18 | Limiting scans of loosely ordered and/or grouped relations using nearly ordered maps |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2593779T3 true ES2593779T3 (es) | 2016-12-13 |
Family
ID=33476873
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES04752528.2T Expired - Lifetime ES2593779T3 (es) | 2003-05-19 | 2004-05-18 | Limitar la exploración de relaciones poco ordenadas y/o agrupadas usando correspondencias casi ordenadas |
ES15191874T Expired - Lifetime ES2821415T3 (es) | 2003-05-19 | 2004-05-18 | Limitar la exploración de relaciones poco ordenadas y/o agrupadas usando correspondencias casi ordenadas |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES15191874T Expired - Lifetime ES2821415T3 (es) | 2003-05-19 | 2004-05-18 | Limitar la exploración de relaciones poco ordenadas y/o agrupadas usando correspondencias casi ordenadas |
Country Status (5)
Country | Link |
---|---|
US (1) | US6973452B2 (es) |
EP (3) | EP1629406B1 (es) |
DK (1) | DK1629406T3 (es) |
ES (2) | ES2593779T3 (es) |
WO (1) | WO2004104774A2 (es) |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9792359B2 (en) * | 2005-04-29 | 2017-10-17 | Entit Software Llc | Providing training information for training a categorizer |
US9047290B1 (en) | 2005-04-29 | 2015-06-02 | Hewlett-Packard Development Company, L.P. | Computing a quantification measure associated with cases in a category |
US7593904B1 (en) | 2005-06-30 | 2009-09-22 | Hewlett-Packard Development Company, L.P. | Effecting action to address an issue associated with a category based on information that enables ranking of categories |
US8719073B1 (en) | 2005-08-25 | 2014-05-06 | Hewlett-Packard Development Company, L.P. | Producing a measure regarding cases associated with an issue after one or more events have occurred |
US7797282B1 (en) | 2005-09-29 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | System and method for modifying a training set |
US7437338B1 (en) * | 2006-03-21 | 2008-10-14 | Hewlett-Packard Development Company, L.P. | Providing information regarding a trend based on output of a categorizer |
US8452757B2 (en) * | 2006-03-24 | 2013-05-28 | Oracle International Corporation | Index mechanism for finding nearest matches in a computer system |
US7668789B1 (en) | 2006-03-30 | 2010-02-23 | Hewlett-Packard Development Company, L.P. | Comparing distributions of cases over groups of categories |
US8126874B2 (en) * | 2006-05-09 | 2012-02-28 | Google Inc. | Systems and methods for generating statistics from search engine query logs |
US8077059B2 (en) | 2006-07-21 | 2011-12-13 | Eric John Davies | Database adapter for relational datasets |
US8700579B2 (en) | 2006-09-18 | 2014-04-15 | Infobright Inc. | Method and system for data compression in a relational database |
US8266147B2 (en) * | 2006-09-18 | 2012-09-11 | Infobright, Inc. | Methods and systems for database organization |
CN102831214B (zh) | 2006-10-05 | 2017-05-10 | 斯普兰克公司 | 时间序列搜索引擎 |
US20090019103A1 (en) * | 2007-07-11 | 2009-01-15 | James Joseph Tommaney | Method and system for processing a database query |
US20090019029A1 (en) * | 2007-07-11 | 2009-01-15 | James Joseph Tommaney | Method and system for performing a scan operation on a table of a column-oriented database |
US8195712B1 (en) | 2008-04-17 | 2012-06-05 | Lattice Engines, Inc. | Lattice data set-based methods and apparatus for information storage and retrieval |
CN101419616A (zh) * | 2008-12-10 | 2009-04-29 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
US8645337B2 (en) * | 2009-04-30 | 2014-02-04 | Oracle International Corporation | Storing compression units in relational tables |
US9667269B2 (en) | 2009-04-30 | 2017-05-30 | Oracle International Corporation | Technique for compressing XML indexes |
US8108400B2 (en) * | 2009-06-27 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Database segment searching |
US8832142B2 (en) | 2010-08-30 | 2014-09-09 | Oracle International Corporation | Query and exadata support for hybrid columnar compressed data |
US8521748B2 (en) | 2010-06-14 | 2013-08-27 | Infobright Inc. | System and method for managing metadata in a relational database |
US8417727B2 (en) | 2010-06-14 | 2013-04-09 | Infobright Inc. | System and method for storing data in a relational database |
US8935233B2 (en) | 2010-09-28 | 2015-01-13 | International Business Machines Corporation | Approximate index in relational databases |
US11615115B2 (en) | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US11544288B2 (en) | 2010-12-23 | 2023-01-03 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10262050B2 (en) * | 2015-09-25 | 2019-04-16 | Mongodb, Inc. | Distributed database systems and methods with pluggable storage engines |
US9155320B2 (en) * | 2011-07-06 | 2015-10-13 | International Business Machines Corporation | Prefix-based leaf node storage for database system |
CN102298634B (zh) * | 2011-09-09 | 2013-05-29 | 厦门市美亚柏科信息股份有限公司 | 一种Sqlite删除记录结构重组方法 |
US8676772B2 (en) | 2011-12-09 | 2014-03-18 | Telduráðgevin Sp/f | Systems and methods for improving database performance |
US9208134B2 (en) * | 2012-01-10 | 2015-12-08 | King Abdulaziz City For Science And Technology | Methods and systems for tokenizing multilingual textual documents |
US11544284B2 (en) | 2012-07-26 | 2023-01-03 | Mongodb, Inc. | Aggregation framework system architecture and method |
US11403317B2 (en) | 2012-07-26 | 2022-08-02 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10225136B2 (en) | 2013-04-30 | 2019-03-05 | Splunk Inc. | Processing of log data and performance data obtained via an application programming interface (API) |
US10353957B2 (en) | 2013-04-30 | 2019-07-16 | Splunk Inc. | Processing of performance data and raw log data from an information technology environment |
US10318541B2 (en) | 2013-04-30 | 2019-06-11 | Splunk Inc. | Correlating log data with performance measurements having a specified relationship to a threshold value |
US10997191B2 (en) | 2013-04-30 | 2021-05-04 | Splunk Inc. | Query-triggered processing of performance data and log data from an information technology environment |
US10346357B2 (en) | 2013-04-30 | 2019-07-09 | Splunk Inc. | Processing of performance data and structure data from an information technology environment |
US10019496B2 (en) | 2013-04-30 | 2018-07-10 | Splunk Inc. | Processing of performance data and log data from an information technology environment by using diverse data stores |
US10614132B2 (en) | 2013-04-30 | 2020-04-07 | Splunk Inc. | GUI-triggered processing of performance data and log data from an information technology environment |
US10169711B1 (en) * | 2013-06-27 | 2019-01-01 | Google Llc | Generalized engine for predicting actions |
US9588978B2 (en) | 2013-09-30 | 2017-03-07 | International Business Machines Corporation | Merging metadata for database storage regions based on overlapping range values |
US10108649B2 (en) * | 2014-02-25 | 2018-10-23 | Internatonal Business Machines Corporation | Early exit from table scans of loosely ordered and/or grouped relations using nearly ordered maps |
US9672241B2 (en) | 2014-05-28 | 2017-06-06 | International Business Machines Corporation | Representing an outlier value in a non-nullable column as null in metadata |
US9519687B2 (en) | 2014-06-16 | 2016-12-13 | International Business Machines Corporation | Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices |
US10255304B2 (en) | 2014-09-30 | 2019-04-09 | International Business Machines Corporation | Removal of garbage data from a database |
US10031934B2 (en) | 2014-09-30 | 2018-07-24 | International Business Machines Corporation | Deleting tuples using separate transaction identifier storage |
US9747331B2 (en) | 2014-10-06 | 2017-08-29 | International Business Machines Corporation | Limiting scans of loosely ordered and/or grouped relations in a database |
US10216747B2 (en) * | 2014-12-05 | 2019-02-26 | Microsoft Technology Licensing, Llc | Customized synthetic data creation |
US10042887B2 (en) * | 2014-12-05 | 2018-08-07 | International Business Machines Corporation | Query optimization with zone map selectivity modeling |
US9953065B2 (en) | 2015-02-13 | 2018-04-24 | International Business Machines Corporation | Method for processing a database query |
US10114867B2 (en) | 2015-05-29 | 2018-10-30 | Looker Data Sciences, Inc. | Methods and systems for selectively retrieving data to provide a limited dataset for incorporation into a pivot table |
US10331645B2 (en) | 2015-08-17 | 2019-06-25 | International Business Machines Corporation | Data-partitioning for processing loosely ordered relations |
US10282349B2 (en) | 2015-08-26 | 2019-05-07 | International Business Machines Corporation | Method for storing data elements in a database |
US11461356B2 (en) | 2015-09-25 | 2022-10-04 | Mongodb, Inc. | Large scale unstructured database systems |
US10673623B2 (en) | 2015-09-25 | 2020-06-02 | Mongodb, Inc. | Systems and methods for hierarchical key management in encrypted distributed databases |
US10089353B2 (en) | 2015-10-29 | 2018-10-02 | International Business Machines Corporation | Approximate string matching optimization for a database |
US9519676B1 (en) | 2015-12-13 | 2016-12-13 | International Business Machines Corporation | Updating of in-memory synopsis metadata for inserts in database table |
US9633072B1 (en) | 2016-01-27 | 2017-04-25 | International Business Machines Corporation | MIN/MAX query with synopsis guided scan order |
US10671496B2 (en) | 2016-05-31 | 2020-06-02 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US10776220B2 (en) | 2016-06-27 | 2020-09-15 | Mongodb, Inc. | Systems and methods for monitoring distributed database deployments |
US10353885B2 (en) * | 2016-07-29 | 2019-07-16 | International Business Machines Corporation | Storing data records |
US10360240B2 (en) | 2016-08-08 | 2019-07-23 | International Business Machines Corporation | Providing multidimensional attribute value information |
US10311057B2 (en) | 2016-08-08 | 2019-06-04 | International Business Machines Corporation | Attribute value information for a data extent |
US10423638B2 (en) | 2017-04-27 | 2019-09-24 | Google Llc | Cloud inference system |
JP2018206084A (ja) * | 2017-06-05 | 2018-12-27 | 株式会社東芝 | データベース管理システムおよびデータベース管理方法 |
US10776363B2 (en) | 2017-06-29 | 2020-09-15 | Oracle International Corporation | Efficient data retrieval based on aggregate characteristics of composite tables |
US11113282B2 (en) | 2017-09-29 | 2021-09-07 | Oracle International Corporation | Online optimizer statistics maintenance during load |
US11354310B2 (en) * | 2018-05-23 | 2022-06-07 | Oracle International Corporation | Dual purpose zone maps |
JP6702582B2 (ja) * | 2019-05-09 | 2020-06-03 | 株式会社東芝 | データベース管理システムおよびデータベース管理方法 |
US10997178B2 (en) * | 2019-06-11 | 2021-05-04 | Sap Se | Implicit partitioning |
US11144527B2 (en) * | 2020-01-14 | 2021-10-12 | International Business Machines Corporation | Optimizing database table scans in the presence of ordered data |
US11468099B2 (en) | 2020-10-12 | 2022-10-11 | Oracle International Corporation | Automatic creation and maintenance of zone maps |
US11880405B2 (en) | 2021-03-16 | 2024-01-23 | International Business Machines Corporation | Method for searching similar images in an image database using global values of a similarity measure for discarding partitions of the image database |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4205371A (en) * | 1975-11-03 | 1980-05-27 | Honeywell Information Systems Inc. | Data base conversion system |
US4914586A (en) * | 1987-11-06 | 1990-04-03 | Xerox Corporation | Garbage collector for hypermedia systems |
US5414808A (en) * | 1992-12-30 | 1995-05-09 | International Business Machines Corporation | Method for accessing and manipulating library video segments |
US5806079A (en) * | 1993-11-19 | 1998-09-08 | Smartpatents, Inc. | System, method, and computer program product for using intelligent notes to organize, link, and manipulate disparate data objects |
US5560005A (en) * | 1994-02-25 | 1996-09-24 | Actamed Corp. | Methods and systems for object-based relational distributed databases |
US6014656A (en) * | 1996-06-21 | 2000-01-11 | Oracle Corporation | Using overlapping partitions of data for query optimization |
US5903888A (en) * | 1997-02-28 | 1999-05-11 | Oracle Corporation | Method and apparatus for using incompatible types of indexes to process a single query |
US6173287B1 (en) * | 1998-03-11 | 2001-01-09 | Digital Equipment Corporation | Technique for ranking multimedia annotations of interest |
US6687876B1 (en) * | 1998-12-30 | 2004-02-03 | Fuji Xerox Co., Ltd. | Method and system for maintaining freeform ink annotations on changing views |
US6681218B1 (en) * | 1999-11-04 | 2004-01-20 | International Business Machines Corporation | System for managing RDBM fragmentations |
-
2004
- 2004-05-18 US US10/847,895 patent/US6973452B2/en not_active Expired - Lifetime
- 2004-05-18 WO PCT/US2004/015528 patent/WO2004104774A2/en active Application Filing
- 2004-05-18 DK DK04752528.2T patent/DK1629406T3/en active
- 2004-05-18 ES ES04752528.2T patent/ES2593779T3/es not_active Expired - Lifetime
- 2004-05-18 EP EP04752528.2A patent/EP1629406B1/en not_active Expired - Lifetime
- 2004-05-18 ES ES15191874T patent/ES2821415T3/es not_active Expired - Lifetime
- 2004-05-18 EP EP15191874.5A patent/EP2996054B1/en not_active Expired - Lifetime
- 2004-05-18 EP EP20173783.0A patent/EP3726396A3/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP1629406A4 (en) | 2008-07-16 |
ES2821415T3 (es) | 2021-04-26 |
WO2004104774A3 (en) | 2005-05-12 |
US20050010564A1 (en) | 2005-01-13 |
EP2996054A2 (en) | 2016-03-16 |
WO2004104774A8 (en) | 2005-03-10 |
EP1629406A2 (en) | 2006-03-01 |
EP3726396A2 (en) | 2020-10-21 |
EP2996054B1 (en) | 2020-07-08 |
DK1629406T3 (en) | 2016-11-07 |
EP3726396A3 (en) | 2020-12-09 |
US6973452B2 (en) | 2005-12-06 |
EP1629406B1 (en) | 2016-07-13 |
WO2004104774A2 (en) | 2004-12-02 |
EP2996054A3 (en) | 2016-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2593779T3 (es) | Limitar la exploración de relaciones poco ordenadas y/o agrupadas usando correspondencias casi ordenadas | |
US7213025B2 (en) | Partitioned database system | |
CN110083601B (zh) | 面向键值存储系统的索引树构建方法及系统 | |
US6240418B1 (en) | Database apparatus | |
Yiu et al. | Aggregate nearest neighbor queries in road networks | |
US10657116B2 (en) | Create table for exchange | |
Cheung et al. | Constructing suffix tree for gigabyte sequences with megabyte memory | |
US7734714B2 (en) | Spatial Sieve Tree | |
US7337199B2 (en) | Space management of an IMS database | |
US20050102255A1 (en) | Computer-implemented system and method for handling stored data | |
EP1211610A1 (en) | Methods of organising data and processing queries in a database system | |
JPH09212528A (ja) | データベースを記憶する方法、データベースからレコードを検索する方法、および、データベース記憶/検索システム | |
KR20010083096A (ko) | 가치-사례-연결을 통한 컴퓨터에 의해 구현되는데이터베이스 | |
Yang et al. | Pase: Postgresql ultra-high-dimensional approximate nearest neighbor search extension | |
JP2001331509A (ja) | リレーショナルデータベース処理装置、リレーショナルデータベースの処理方法及びリレーショナルデータベースの処理プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US7136861B1 (en) | Method and system for multiple function database indexing | |
US8812453B2 (en) | Database archiving using clusters | |
AU2002232035A1 (en) | Methods of organizing data and processing queries in a database system, and database system and software product for implementing such methods | |
EP1423799A2 (en) | Methods of organizing data and processing queries in a database system, and database system and software product for implementing such methods | |
US11232095B2 (en) | Composite metadata objects for database systems | |
JP2007048318A (ja) | リレーショナルデータベースの処理方法およびリレーショナルデータベース処理装置 | |
Eze et al. | Database system concepts, implementations and organizations-a detailed survey | |
De et al. | An integrated model of record segmentation and access path selection for databases | |
US20240193142A1 (en) | Method of processing data in a database | |
JPH07113924B2 (ja) | データ・ベース検索システム |