U.S. patent application number 12/050877 was filed with the patent office on 2008-07-03 for determining an optimal grid index specification for multidimensional data.
This patent application is currently assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION. Invention is credited to David William ADLER.
Application Number | 20080162424 12/050877 |
Document ID | / |
Family ID | 36585272 |
Filed Date | 2008-07-03 |
United States Patent
Application |
20080162424 |
Kind Code |
A1 |
ADLER; David William |
July 3, 2008 |
DETERMINING AN OPTIMAL GRID INDEX SPECIFICATION FOR
MULTIDIMENSIONAL DATA
Abstract
A system and associated computer product improve the search of
multidimensional databases. The present system determines a
near-optimal grid index that is used to locate a geometric shape in
a spatial database. More particularly, the present system improves
the technique of sampling data for defining the grid cell size in a
grid for a given data set, minimizing the number times the data set
needs to be sampled, thereby reducing the time to compute the cost
of alternative grid index parameters.
Inventors: |
ADLER; David William; (Mount
Tremper, NY) |
Correspondence
Address: |
KONRAD RAYNES & VICTOR, LLP;ATTN: IBM54
315 SOUTH BEVERLY DRIVE, SUITE 210
BEVERLY HILLS
CA
90212
US
|
Assignee: |
INTERNATIONAL BUSINESS MACHINES
CORPORATION
Armonk
NY
|
Family ID: |
36585272 |
Appl. No.: |
12/050877 |
Filed: |
March 18, 2008 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11007132 |
Dec 7, 2004 |
|
|
|
12050877 |
|
|
|
|
Current U.S.
Class: |
1/1 ;
707/999.002; 707/E17.056 |
Current CPC
Class: |
G06F 16/283 20190101;
Y10S 707/99934 20130101; Y10S 707/99932 20130101; Y10S 707/99933
20130101 |
Class at
Publication: |
707/2 ;
707/E17.056 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A computer program product having a plurality of instruction
codes stored in a computer-usable storage medium executed by a
computer for performing the method of determining an optimal grid
index specification for multidimensional data, comprising: creating
a geometry histogram by scanning geometries to determine minimum
and maximum extents, computing bucket sizes of buckets, and
scanning the geometries to generate the geometry histogram using
the buckets, wherein the bucket sizes are computed by dividing a
size of a largest maximum bounding rectangle into a number of
intervals; computing a set of query region sizes; for each size of
a set of query region sizes, computing a minimum performance
indicator by, for each of the buckets of the geometry histogram,
estimating a number of index entries for each of multiple grid size
levels by computing bucket intersections; and returning an optimal
grid size for each size of the query region.
2. The computer program product of claim 1, further comprising:
computing a set of grid sizes at a first level of the multiple grid
size levels.
3. The computer program product of claim 2, wherein computing the
minimum performance indicator further comprises: computing a matrix
of grid size levels for the first level; for each matrix row of the
matrix, computing the number of index entries; and in response to
determining that the number of index entries is less than a minimum
number of index entries, setting the minimum number of index
entries to the determined number of index entries.
4. The computer program product of claim 3, wherein computing the
number of index entries further comprises: computing estimated
intersections for each of multiple grid sizes.
5. A system for determining an optimal grid index specification for
multidimensional data, comprising: a processor; and a memory
coupled to the processor, the memory comprising a plurality of
instruction codes executable by the processor for: creating a
geometry histogram by scanning geometries to determine minimum and
maximum extents, computing bucket sizes of buckets, and scanning
the geometries to generate the geometry histogram using the
buckets, wherein the bucket sizes are computed by dividing a size
of a largest maximum bounding rectangle into a number of intervals;
computing a set of query region sizes; for each size of a set of
query region sizes, computing a minimum performance indicator by,
for each of the buckets of the geometry histogram, estimating a
number of index entries for each of multiple grid size levels by
computing bucket intersections; and returning an optimal grid size
for each size of the query region.
6. The system of claim 5, further comprising: computing a set of
grid sizes at a first level of the multiple grid size levels.
7. The system of claim 6, wherein computing the minimum performance
indicator further comprises: computing a matrix of grid size levels
for the first level; for each matrix row of the matrix, computing
the number of index entries; and in response to determining that
the number of index entries is less than a minimum number of index
entries, setting the minimum number of index entries to the
determined number of index entries.
8. The system of claim 7, wherein computing the number of index
entries further comprises: computing estimated intersections for
each of multiple grid sizes.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation application of and claims
the benefit of "System And Method For Determining An Optimal Grid
Index Specification For Multidimensional Data", having application
Ser. No. 11/007,132, filed Dec. 7, 2004, the disclosure of which is
incorporated herein by reference in its entirety.
[0002] This application relates to co-pending U.S. patent
application Ser. No. 10/144,058, entitled "Systems, Methods, and
Computer Program Products to Improve Indexing of Multidimensional
Databases," filed on May 10, 2002, and to co-pending U.S. patent
application Ser. No. 10/141,919, entitled "Reducing Index Size for
Multi-Level Grid Indexes," filed on May 10, 2002, both of which are
assigned to the assignee as the present application, each of which
is incorporated herein by reference in its entirety.
[0003] This application relates to co-pending U.S. patent
application Ser. No. 12/021,193, which is a continuation
application of and claims the benefit of "Method to Improve
Indexing of Multidimensional Databases", having U.S. patent
application Ser. No. 10/144,058, filed May 10, 2002, and each of
which is incorporated herein by reference in its entirety.
[0004] This application relates to co-pending U.S. U.S. patent
application Ser. No. 10/792,446, entitled "Index Exploitation For
Spatial Data," filed on Mar. 2, 2004, by David Adler, Attorney's
Docket Number SVL920040011US1, assigned to the assignee of the
present invention, which is incorporated herein by reference in its
entirety.
[0005] This application relates to co-pending U.S. U.S. patent
application Ser. No. 11/255,357, entitled "Reducing Index Size for
Multi-Level Grid Indexes," filed on Oct. 20, 2005, by David Adler
et al., Attorney's Docket Number SVL920020013US2, which is a
continuation application of U.S. patent application Ser. No.
10/141,919, filed May 10, 2002, assigned to the assignee of the
present invention, and each of which is incorporated herein by
reference in its entirety.
[0006] This application relates to co-pending U.S. U.S. patent
application Ser. No. 11/255,296, entitled "Reducing Index Size for
Multi-Level Grid Indexes," filed on Oct. 20, 2005, by David Adler
et al., Attorney's Docket Number SVL920020013US3, which is a
divisional application of Ser. No. 10/141,919, filed May 10,2002,
assigned to the assignee of the present invention, and each of
which is incorporated herein by reference in its entirety.
[0007] This application relates to co-pending U.S. U.S. patent
application Ser. No. 11/931,786, entitled "Reducing Index Size for
Multi-Level Grid Indexes," filed on Oct. 30, 2007, by David Adler
et al., Attorney's Docket Number SVL920020013US4, which is a
continuation application of U.S. patent application Ser. No.
10/141,919, filed May 10, 2002, assigned to the assignee of the
present invention, and each of which is incorporated herein by
reference in its entirety.
[0008] This application relates to co-pending U.S. U.S. patent
application Ser. No. 12/020,474, entitled "REDUCING INDEX SIZE FOR
MULTI-LEVEL GRID INDEXES", filed on Jan. 25, 2008, by David Adler
et al., Attorney's Docket Number SVL920020013US5, which is a
continuation of U.S. patent application Ser. No. 11/931,786,
entitled "Reducing Index Size for Multi-Level Grid Indexes," filed
on Oct. 30, 2007, by David Adler et al., Attorney's Docket Number
SVL920020013US4, which is a continuation application of U.S. patent
application Ser. No. 10/141,919, filed May 10, 2002, assigned to
the assignee of the present invention, and each of which is
incorporated herein by reference in its entirety.
[0009] This application relates to U.S. Pat. No. 7,143,098, issued
on Nov. 28, 2006, having U.S. patent application Ser. No.
10/144,389, filed May 10, 2002, which is incorporated herein by
reference in its entirety.
[0010] This application relates to co-pending U.S. U.S. patent
application Ser. No. 11/255,297, entitled "Systems, Methods, and
Computer Program Products to Reduce Computer Processing in Grid
Cell Size Determination for Indexing of Multidimensional
Databases", filed on Oct. 20, 2005, which is a continuation
application of and claims the benefit of "Systems, Methods, and
Computer Program Products to Reduce Computer Processing in Grid
Cell Size Determination for Indexing of Multidimensional
Databases", U.S. Pat. No. 7,143,098, issued on Nov. 28, 2006,
having U.S. patent application Ser. No. 10/144,389, filed May 10,
2002, and each of which is incorporated herein by reference in its
entirety.
FIELD OF THE INVENTION
[0011] The present invention generally relates to the field of
indexing computer-based multidimensional data. More specifically,
the present invention relates to reducing data collection used in
the determination of the grid cell size when grid-indexing
techniques are applied to multidimensional data on a computer
system.
BACKGROUND OF THE INVENTION
[0012] Databases are computerized information storage and retrieval
systems. A relational database management system (RDBMS) is a
database management system (DBMS) that uses relational techniques
for storing and retrieving data. Relational databases are organized
into tables that comprise rows, all rows having the same columns of
data. Each column maintains information on a particular type of
data for the data records that comprise the rows. The rows are
formally called tuples or records. A database typically comprises
many tables and each table typically comprises tuples and columns.
The tables are typically stored on direct access storage devices
(DASD), such as magnetic or optical disk drives for semi-permanent
storage.
[0013] Tables are searched using, for example, a Structured Query
Language (SQL), which specifies search operations or predicates to
perform on columns of tables in the database. The search operations
qualify rows in the database tables that satisfy the search
conditions. Relational database management system (RDBMS) software
using a Structured Query Language (SQL) interface is well known in
the art. The SQL interface has evolved into a standard language for
RDBMS software and has been adopted as such by both the American
National Standards Institute (ANSI) and the International Standards
Organization (ISO).
[0014] Indexes are used with database implementations to provide
good application query performance. Indexes are typically
constructed using the data values in one or more columns of an
RDBMS table row (e.g., using information such as product number,
customer name, address, etc.). This information is represented by
bit strings that define numeric or character values. An RDBMS may
implement a B-tree index that generates a binary tree based on the
bit string values. When a query includes values of columns
contained in an index, the B-tree index can be scanned quickly to
find the candidate rows with these column values.
[0015] Indexing techniques are used to quickly access data. Spatial
data is typically information associated with geometric shapes such
as lines, points, poly-lines, polygons, and surfaces. Consequently,
spatial data is typically represented by one or more coordinates
comprising pairs of numeric values (x, y) corresponding to, for
example, locations on the earth. Spatial data is often very large
and may have two, three, or more dimensions. Queries against
spatial data typically are more complex than identifying a specific
row or a set of rows with values between a simple range.
[0016] The indexing techniques for traditional alphanumeric data
are typically based on a linear ordering of key values in a single
dimension. B-tree indexing is one of the most common techniques
used but this is only suited for single dimension data, not
multi-dimensional data such as spatial data. Various indexing
techniques have been developed specifically for multi-dimensional
data. Grid indexing is one of these indexing techniques associated
with searching spatial multidimensional data.
[0017] Although this technology has proven to be useful, it would
be desirable to present additional improvements. The grid cell size
used in grid indexing strongly affects the efficiency of accessing
spatial data by techniques that employ grid indexing. A problem has
been to refine the determination of particular grid cell sizes and
thereby reduce the overhead associated with searching a spatial
data set via grid indexing using conventional techniques. More
particularly, a problem has been to reduce the computational
processing to perform the sampling that occurs during statistics
collection. Such data is used to determine the proper grid cell
size.
[0018] Those skilled in the art will appreciate the technique of
accessing spatial data by determining overlap of a geometric shape
with a grid cell matrix. A grid index contains one index entry for
each grid cell that overlap a geometric shape. The storage and
processing increases with the number of grid cells that overlap a
geometric shape. This aspect would suggest large grid cell sizes
compared to geometric shape sizes in order to approach a one-to-one
relationship of index entries to geometric shapes. Typical spatial
queries are based on finding geometric shapes which overlap a
rectangular query region. The grid index technique will scan all
index entries in the grid cells which overlap the query region. As
the grid size increases, more index entries outside the query
region will need to be examined and discarded. An optimal grid size
must determine the appropriate trade-off between these two opposing
considerations.
[0019] A geometric shape that is typically the subject of spatial
data may be approximated by a rectangle. When a rectangle bounds
the geometric shape with a minimum enclosure, it is referred to as
a "minimum-bounding rectangle." A minimum-bounding rectangle is
defined to approximate a geometric shape located in a space.
Coordinates located on a grid reference the minimum-bounding
rectangle and the approximated geometric shape that represent the
location of the minimum-bounding rectangle. For example, the
coordinates on a grid that correspond to the corners of the
minimum-bounding rectangle are stored and used to reference the
minimum-bounding rectangle.
[0020] An index enables fast access of a certain subset of data
contained in a larger set of data. The index comprises a data
structure and the techniques used to build, maintain, and search
the data structure for the purpose of accessing a subset of data.
For example, an index may define a data structure that is used to
access a specific geometric shape included in a set of spatial
data. The particular index of the present example may define a data
structure that contains references to the minimum-bounding
rectangles associated with various geometric shapes in a spatial
data set. By accessing locator references associated with the
minimum-bounding rectangles, the process of accessing particular
geometric shapes in a spatial data set is simplified.
[0021] Conventional techniques have typically required significant
resources to locate a geometric shape in a spatial database. The
lack of an efficient process for determining an index that
facilitates streamlined location of minimum-bounding rectangles and
associated geometric shapes has contributed to inefficient access
of information in spatial databases with grid indexing. One problem
has been to minimize the amount of data that is processed in order
to determine an efficient grid cell size. That is, there exists a
need to reduce from the processing required to perform sampling
during statistics collection.
[0022] What is therefore needed is a system, a computer program
product, and an associated method to improve the determination of
the grid cell size when grid-indexing techniques are applied to
spatial data on a computer system for significantly reducing the
processing time. The need for such a solution has heretofore
remained unsatisfied. SUMMARY OF THE INVENTION
[0023] The present invention satisfies this need, and presents a
system, a computer program product, and an associated method
(collectively referred to herein as "the system" or "the present
system") for determining an optimal grid index specification for
multidimensional data. Conventional techniques require significant
resources to locate a geometric shape in a spatial database. The
present system advantageously improves the technique of indexing
data in a multidimensional database. Such data is used to locate a
geometric shape in a spatial database by associating the geometric
shape with one or more grid cells. More particularly, the present
system minimizes the processing to collect geometric shape
statistics. These data are used to determine an efficient grid cell
size in a manner such that the grid indexing technique of the
present system efficiently locates a particular minimum-bounding
rectangle. The minimum-bounding rectangle is associated with one or
more grid cells and facilitates the location of geometric
shapes.
[0024] The present system reduces the amount of computer processing
required for sampling data during statistics collection associated
with determining efficient grid cell sizes. In one embodiment, the
present system uses geometric shape statistics to estimate the
number of index entries associated with geometric shapes in the
spatial database at a first grid level. The present system
estimates the number of index entries associated with two or more
grid levels, thereby reducing the overall number of index entries
used to determine an index performance indicator, "NeQr".
[0025] The index performance indicator, NeQr, is an estimate of the
grid index performance. The number of index entries and the grid
cell sizes are used to estimate the number of index entries
associated with the first grid level. While accessing the number of
index entries, the present system obtains the number of index
entries and the grid cell sizes associated with two or more grid
levels. By reducing the number of index entries that identify
associations between grid cells and geometric shapes, computer
processing used during indexing data in a multidimensional database
is minimized. Therefore the present system provides a technique for
improving searches that use indexing techniques and operate on
databases that comprise complex data such as, for example, spatial
data.
[0026] The techniques of the present system are especially
advantageous when applied to grid-indexing techniques associated
with geometric shapes that are represented by spatial data in
spatial databases. However, the present system is not restricted to
techniques applied to spatial databases and can be used with
techniques for searching other multidimensional databases.
[0027] The present system improves conventional techniques used to
determine the grid cell size and facilitate efficient indexing of a
spatial database. More particularly, the present system generates a
reduced number of index entries when defining the grid cell size in
a grid for a given data set compared with conventional techniques.
By reducing the number of index entries, the determination of a
minimum value of the index performance indicator, NeQr, is improved
over conventional techniques by minimizing the number of index
entries evaluated during a search for a geometric shape. The
minimum value of the index performance indicator, NeQr, further
represents the minimum number of index entries generated for
geometric shapes that overlap a query window. Once the minimum
number of index entries is determined, space can be partitioned by
a grid into the appropriate number of grid cells to support
efficient grid indexing, where space may be represented by
data.
[0028] The present system determines the index performance
indicator, NeQr, by generating and processing statistics associated
with the data, such as the spatial data. The present system
constructs a histogram of average geometry sizes that can then be
used subsequently to compute the index performance indicator, NeQr,
of candidate grid index values. A minimum index performance
indicator and associated grid index values can then be
identified.
[0029] One embodiment for partitioning space into grid cells, for
the purpose of accessing spatial multidimensional data, comprises
ascribing different levels to the partitioned space. The plurality
of levels may represent partitions of the space in varying levels
of granularity. The present system operates on these varying levels
of granularity.
BRIEF DESCRIPTION OF THE DRAWINGS
[0030] The various features of system 10 and the manner of
attaining them will be described in greater detail with reference
to the following description, claims, and drawings, wherein
reference numerals are reused, where appropriate, to indicate a
correspondence between the referenced items, and wherein:
[0031] FIG. 1 is a schematic illustration of an exemplary operating
environment in which an index-solver module system 10 can be
used;
[0032] FIG. 2 is a block diagram of the high-level architecture of
the index-solver module of FIG. 1;
[0033] FIG. 3 comprises FIGS. 3A and 3B and represents a block
diagram of a multidimensional data cube and a block diagram of a
grid that is suitably configured for operation with the
index-solver module of FIGS. 1 and 2;
[0034] FIG. 4 comprises FIGS. 4A and 4B and represents a block
diagram illustrating an SQL table and a block diagram of an index
data structure that is suitably configured for operation with the
index-solver module of FIGS. 1 and 2;
[0035] FIG. 5 is a process diagram illustrating a method of
operation of the index-solver module of FIGS. 1 and 2;
[0036] FIG. 6 is a process diagram illustrating a method of
operation of a compute geometry size histogram process of the
method of the index-solver module of FIG. 5;
[0037] FIG. 7 is an exemplary geometry histogram 230 illustrating
operation of the compute geometry size histogram process of FIG.
6;
[0038] FIG. 8 is a process diagram illustrating a method of
operation of a compute query region sizes process of the method of
the index-solver module of FIG. 5;
[0039] FIG. 9 is a table illustrating an exemplary set of query
region multipliers used in the compute query region sizes process
of FIG. 8;
[0040] FIG. 10 is a process diagram illustrating a method of
operation of a compute first level grid sizes process of the method
of the index-solver module of FIG. 5;
[0041] FIG. 11 is a process diagram illustrating a method of
operation of a compute minimum NeQrMin for each query window size
of the index-solver module of FIGS. 1 and 2;
[0042] FIG. 12 is a process diagram illustrating a method of
operation of a compute matrix of 1-n level grid sizes process of
the method of FIG. 11;
[0043] FIG. 13 is comprised of FIGS. 13A and 13B and represents a
table of sample multipliers and a table of sample grid sizes as
used by the method of FIG. 12, wherein FIG. 13A is a more detailed
representation of block 1215 of FIG. 12, and FIG. 13B is a more
detailed representation of block 1220 of FIG. 12;
[0044] FIG. 14 is a process diagram illustrating a method of
operation of a compute NeQr of the method of FIG. 11;
[0045] FIG. 15 is a process diagram illustrating a method of
operation of a compute Ne[i] of the index-solver module of FIGS. 1
and 2; and
[0046] FIG. 16 is a block diagram of a computer system suitably
configured for employment of the index-solver module of FIGS. 1 and
2.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
[0047] FIG. 1 illustrates an exemplary high-level architecture of a
computer system 100 comprising a system and method for determining
an optimal grid index specification for multidimensional data (the
"system 10" or system 10 for index-solver module 10). System 10
includes a software programming code or computer program product
that is typically embedded within, or installed on a computer.
Alternatively, system 10 can be saved on a suitable storage medium
such as a diskette, a CD, a hard drive, or like devices.
[0048] As shown in FIG. 1 and in the computer system 100, system 10
may operate in a client-server computer system configuration.
Therefore, a client computer system (client 15) may communicate
with a server computer system (server 20) during the operation of
system 10. System 10 operates in either the client 15 or the server
20. For example, information may be communicated to either the
server 20 or the client 15 via a user interface 25 and may
subsequently be used by system 10 to determine the size of a grid
that enables efficient grid-indexing searches of spatial
multidimensional data 30 (also referenced herein as
multidimensional data 30). One embodiment operates on the server 20
since the client 15 is typically smaller than the server 20 and may
not be sufficiently robust to handle the computer resource
requirements associated with practicing system 10. The user
interface 25 may communicate with system 10, either via batch input
35 or user input 40.
[0049] Further, a multidimensional data cube 45 may be configured
in a memory of either the client 15 or the server 20.
Alternatively, the multidimensional data cube 45 may be configured
in computer storage such as that of a disk 50. Spatial data 55 is a
specific type of multidimensional data 30, and both spatial data 55
and multidimensional data 30 are specific types of data 60. The
terms "multidimensional data cube" and "multidimensional database"
are used interchangeably herein. Further, a multidimensional
database 45 is a database that may store multidimensional data
30.
[0050] FIG. 2 is a block diagram illustrating a high-level
hierarchy of system 10. FIG. 2 is described with further reference
to FIG. 3 (FIGS. 3A, 3B), an exemplary data cube as used in
operation of system 10. An index performance indicator, NeQr 208,
is used by system 10 to evaluate the grid index performance. By
evaluating the grid index performance, system 10 provides a
technique for improving searches that use grid-indexing techniques
and operate on spatial data 55. A grid index 204 is used to search
spatial data 55. A particular set of samples of geometric shape
information 206 are found and analyzed to determine the index
performance indicator, query region index entries NeQr 208. In
system 10 an improved technique of minimizing the data 60 in the
set of samples of geometric shape information 206 is taught. In one
embodiment, the samples of geometric shape information 206 comprise
30 samples. However, system 10 may be practiced by the use of any
number of samples of geometric shape information 206.
[0051] A technique for partitioning space into grids such as a grid
305 comprises ascribing different levels 210 to the partitioned
space. The levels 210 may represent partitions of the space at
various resolutions of grid cells such as a grid cell 310 (also
referenced herein as cell 310) of grid 305. System 10 operates on a
plurality of such levels 210 and estimates the number of index
entries, NumEntries 212, on the first such of the levels 210 while
operating at two or more such levels 210. A variable "N,"
represents the number of levels 210. If the number of grid cells
(NumGridCells) 214 exceeds a user-defined threshold, LevelThreshold
246 (a new identifier, corresponds to the value "4" in FIG. 15,
block 1520), the next of the levels 210 of information is
determined.
[0052] A geometric shape identifier (ID) 218 is used during the
operation of system 10 to identify a geometric shape such as
geometric shape 315 so that the information associated with the
geometric shape 315 may be indexed. The geometric shape ID 218 and
the associated value of levels 210 are combined into the geometric
shape ID 218 that is a single, unique value. This single, unique
value is identified with the associated grid cell 310.
[0053] The determination of the index performance indicator NeQr
208 is completed by use of other values, such as those that follow.
The query region Qr 222 is the average size of the region that is
analyzed. The number of geometric shapes 315 that overlap the query
region Qr 222 may be determined. The region covered by Qr 222 is
smaller than the size of the extent of data that is analyzed.
System 10 derives a set of candidates of query region Qr 222 based
on the extent of the data that is analyzed and the index
performance indicator NeQr 208 is computed for each. The grid cell
size, "G," 224 is also used to determine the index performance
indicator NeQr 208. The extent of the data to be analyzed, the
"extent" 226, is also used during the implementation of system 10.
The dimensions in grid, "d," 228 represents the dimension of the
grid 305 and is used to determine NeQr 208. System 10 further
comprises a geometry histogram 230, a BucketCount 232, a bucket
234, an AvgMBR 236, a minimum performance indicator NeQrMin 160,
and a NumLevels 240 which will be described in further detail. FIG.
2 also illustrates key generator function 238.
[0054] As illustrated in FIG. 3A, a multidimensional data cube 45
is suitably configured for operation with system 10. Therefore, by
means of explanation, an example of the operation of system 10 is
described. As shown in FIG. 3A, system 10 determines an efficient
size for the grid cells such as grid cell 310 by finding the
minimum value of an index performance indicator NeQr 208. More
particularly, system 10 improves the technique of defining the grid
cell size G 224 in grid 305 of a given data set, data 60. Grid 305
represents the decomposition of data 60 into units that may be
uniform or of varying size. The grid cell 310 is a specific
instance of a unit contained within grid 305. Specific examples of
grid 305 comprise the "X" dimension grid 320, the "Y" dimension
grid 325, and the "Z" dimension grid 330.
[0055] FIG. 3B illustrates a two-dimensional grid 335 (grid 335).
System 10 operates on spatial data 55 that is information that
represents the geometric shape 315. The two-dimensional grid 335
comprises examples of a dimension grid 320 and a Y dimension grid
325. Further in the present example, the dimension grid 320
comprises six units and the Y dimension grid 325 comprises five
units. The two-dimensional grid 335 comprises grid cells such as
grid cell 340 that may be referenced by the units of the dimension
grid 320 and the Y dimension grid 325. The geometric shape "A" 345
and the geometric shape "B" 350 are each bounded by a
minimum-bounding rectangle 355. The variable Qr 222 represents a
query region and in this example Qr 222 overlaps two grid cells,
grid cell 360 and grid cell 365.
[0056] FIG. 4 is a block diagram that illustrates an SQL table 405
and an index data structure 410. A spatial database system
generates the index data structure 410 that comprises geometric
shape ID 218 and grid cell ID 415. SQL table 405 comprises a column
for geometric shape 412 and a column for geometric shape ID 218,
associating geometric shape 412 with geometric shape ID 218.
[0057] For example, the geometric shape A, 345, is associated with
the Row_A geometric shape ID 420. Also, the geometric shape B, 350,
is associated with the Row_B geometric shape ID 425. Further, the
geometric shape C, 430, is associated with the Row_C geometric
shape ID 435.
[0058] The geometric shape ID 218 and the grid cell ID 415 may be
jointly used as an index to locate a specific geometric shape 315.
The term, "index," as used herein may be implemented as a set of
pointers that are logically ordered by the values of a database
key. The term "database key" as used herein is a column or an
ordered collection of columns that are identified in the
description of a table, index, or referential constraint. Indexes
provide quick access to data 60 and can enforce uniqueness on the
rows in the table. A table is a named data object comprising a
specific number of columns and a set of rows. An index entry 440 is
an entire row in the index data structure 410 and comprises a grid
cell ID 415 and a geometric shape ID 218.
[0059] The index data structure 410 is used to associate each grid
cell 340 that overlaps with the geometric shape 315 thereby
enabling searches of the information associated with a geometric
shape 315. For example, geometric shape A, 345, overlaps the
following grid cells: grid cell (1,3) as shown in element 445, grid
cell (2,3) as shown in element 450, grid cell (3,3) as shown in
element 455, grid cell (1,4) as shown in element 460, grid cell
(2,4) as shown in element 465, and grid cell (3,4) as shown in
element 470. Element 445, element 450, element 455, element 460,
element 465, and element 470 overlap with geometric shape A 345 and
are therefore associated with Row_A geometric shape ID, as shown in
element 420.
[0060] Similarly, geometric shape B, 350, overlaps with the
following grid cells: grid cell (4,2) as shown in element 475, grid
cell (5,2) as shown in element 480, grid cell (4,3) as shown in
element 485, grid cell (5,3) as shown in element 490, grid cell
(4,4) as shown in element 495, and grid cell (5,4) as shown in
element 498. Element 475, element 480, element 485, element 490,
element 495, and element 498 overlap with geometric shape B 350 and
are therefore associated with Row_B geometric shape ID 425.
[0061] FIG. 5 illustrates a method 500 of system 10 that determines
more efficiently than in the past the grid-sampling information
that is used to determine the value of a grid index 204 that is
typically the minimum value of the index performance indicator NeQr
208, and that is used in searching data 60 in a multidimensional
database 45. More particularly by using additional grid levels 210
to minimize the number of index entries such as index entry 440 to
be processed, system 10 efficiently determines the index
performance indicator NeQr 208 in a multidimensional database 45.
The grid-indexing searches may be performed on data 60, such as
spatial data 55 that may be stored on a disk 50. The method
comprises: creating a histogram of geometry sizes (a geometry size
histogram) (step 505, further explained in FIG. 6), computing a set
of appropriate sizes for the query region Qr 222 (step 510, further
explained in FIG. 8), computing a set of appropriate first level
grid sizes (step 515, further explained in FIG. 10), for a size of
each query region Qr 222, computing the minimum performance
indicator "NeQrmin" 160 (step 520, further explained in FIG. 11),
and returning the optimal grid sizes for each size of the query
region Qr 222 (step 525).
[0062] FIG. 6 illustrates the computation of the geometry histogram
230 process of step 505 (FIG. 5). The computation of the geometry
histogram 230 is based on several steps that analyze the spatial
characteristics of a user-specified table. The geometries in the
table are scanned to determine the minimum and maximum extents of
the coordinate values and the largest and average maximum size of
the bounding rectangle 355 (FIG. 3B) (step 605). An example of an
SQL query that can determine these values for two-dimensional data
follows: [0063] SELECT [0064] MIN(shape . . . xmin) AS xmin, [0065]
MIN(shape . . . ymin) AS ymin, [0066] MAX(shape . . . xmax) AS
xmax, [0067] MAX(shape . . . ymax) AS ymax, [0068] MAX( [0069] CASE
WHEN shape . . . xmax-shape . . . xmin>shape . . . ymax-shape .
. . ymin [0070] THEN shape . . . xmax-shape . . . xmin [0071] ELSE
shape. .ymax - shape. .ymin [0072] END) AS maxmbr, [0073] AVERAGE(
[0074] CASE WHEN shape . . . xmax-shape . . . xmin>shape . . .
ymax-shape . . . ymin [0075] THEN shape . . . xmax-shape . . . xmin
[0076] ELSE shape . . . ymax-shape . . . ymin [0077] END) AS avgmbr
[0078] FROM schema.table
[0079] System 10 computes the "bucket" sizes, BucketSize 216, for
the geometry histogram 230 (step 610). BucketSize 216 is computed
by dividing the size of the largest maximum bounding rectangle 355
into an appropriate number of intervals. System 10 bases the
BucketSize 216 on a logarithmic scale with 50 "buckets" such as
bucket 234. System 10 scans geometries to generate the geometry
histogram 230 (step 615) as follows: [0080] scaleFactor=pow(10.0,
4-int(log10(maxmbr))) [0081] WITH mbrs(mbr) AS ( [0082] SELECT
[0083] CASE WHEN shape . . . xmax-shape . . . xmin>shape . . .
ymax-shape . . . ymin [0084] THEN shape. .xmax - shape. .xmin
[0085] ELSE shape. .ymax - shape. .ymin [0086] END*:scaleFactor
[0087] AS mbr [0088] FROM sde.counties), [0089] buckets (bucket) as
( [0090] SELECT [0091] CASE [0092] WHEN mbr<10.0 then
ceil(mbr/0.5)*0.5 [0093] WHEN mbr<100.0 then ceil(mbr/5)*5
[0094] WHEN mbr<1000.0 then ceil(mbr/50)*50 [0095] WHEN
mbr<10000.0 then ceil(mbr/500)*500 [0096] WHEN mbr<100000.0
then ceil(mbr/5000)*5000 [0097] ELSE 100000 [0098] END AS bucket
[0099] FROM mbrs) [0100] SELECT [0101] bucket/:scaleFactor AS
bucket, [0102] COUNT(*) AS count [0103] FROM groups [0104] GROUP BY
bucket [0105] ORDER by bucket
[0106] FIG. 7 illustrates an example of the values or bucket sizes
of BucketSize 216 of a geometry histogram 230 (FIG. 2) and counts
(BucketCount 232, FIG. 2) of the geometries in each "bucket" 234.
The values of FIG. 7 are used later in an exemplary computation of
"NeQr" 208.
[0107] FIG. 8 illustrates the computation of the query region sizes
(step 510, FIG. 5). A range of end-user "friendly" region sizes are
computed (step 805) by first picking a set of multipliers. In one
embodiment, system 10 uses the values 1, 2, and 5 as multipliers
for each decade of query region sizes. These multipliers are
divided by 10, 100, 1000, 10000 to produce an exemplary set of 12
query region multipliers 905 as shown in FIG. 9. A maximum query
region size is determined by taking the smaller of the data extents
and rounding up to the next higher power of 10 (step 810). The
smaller of the values of the extent 226 is computed as follows:
MinExtent=min(xmax-xmin, ymax-ymin)
System 10 rounds MinExtent up as follows:
Maxqr=pow(10.0, floor(log10(MinExtent)))
System 10 computes an array of query region sizes by multiplying
Maxqr by each of the query region multipliers (step 815).
[0108] FIG. 10 illustrates a computation of the first level grid
sizes (step 515, FIG. 5). Empirical analysis has shown that an
optimal grid size is in the range between the average MBR (AvgMBR
236) divided by 10 to the AvgMBR 236 multiplied by 100. Various
methods can be used to compute values in this range. In one
embodiment, system 10 uses a logarithmic distribution with five
steps for each decade. In one embodiment, the logic loops through
powers of 10 from -1 (1/10) to +2 (100) in increments of 0.2, which
provides 5 steps per decade.
[0109] When a grid cell size G 224 is smaller than the average
minimum boundary rectangle 355, many index entries such as index
entry 440 are produced. Therefore, determining a grid cell size G
224 that is large enough to minimize the number of index entries,
NeQr 208 while maintaining a useful grid cell size G 224 improves
techniques of the past. The grid cell size G 224 of the first level
210 is therefore smaller than the grid cell size G 224 of
subsequent levels of level 210. By estimating coarser grid cell
sizes for grid cell size G 224 on subsequent levels of level 210,
system 10 produces fewer index entries for large geometric shapes
than a conventional system produces. Although the use of coarser
grid cell sizes for grid cell size G 224 produce fewer index
entries, this benefit is potentially offset by the larger number of
index entries that may be contained in the grid cells that
intersect the query region Qr 222. System 10 determines
near-optimal values of the grid cell sizes that minimize the cost
factor "NeQr" 208.
[0110] FIG. 11 illustrates a method for step 520 (FIG. 5) in
determining NeQrMin 160. Step 1105 sets NeQrMin to a "very large
number" and sets k to 1. Step 1110, further described in FIG. 12
determines a matrix of candidate grid sizes. In this example, three
grid levels are used but this can be extended as desired. FIG. 12
illustrates setting a first entry of each row to level 1 grid size
(step 1205). Multiplier start value (2.0), multiplier increment
(0.5), and multiplier stop value (7.0) are set (step 1210). For
each level 2-N, iterate through multiplier values and multiply by
level-1 value (step 1215). The matrix of grid sizes is saved (step
1220). One embodiment of system 10 uses the values 1305 indicated
in FIG. 13A as this has proven to be appropriate for a large set of
sample data that has been analyzed. FIG. 13B shows an example of
the matrix of sample grid sizes that would be produced for a
candidate first level grid size with the value "10".
[0111] System 10 makes use of the statistical intersections of the
MBR of a geometry with a particular grid cell size. In the simplest
case with a one-dimensional grid of size "G" 224, if an extent of
size "e" is placed on this grid, the average number of
intersections "int" is given by:
int=1+(e/G) (1).
For a space of dimension "d" 228, the extent size "e" is taken from
the greatest extent of all dimensions of the MBR. The average
number of intersections "i" is given by:
i=(1+(e/G))**d (2)
[0112] FIG. 14 illustrates a method for step 1115 of FIG. 11 of
computing the number of index entries 208 (NeQr 208) that are
covered by a query region 222 (Qr 222). The values G[I] are
provided as input to the process from step 1110 of FIG. 11. In FIG.
14, I is set to 1 and NeQr is set to 0 (step 1405). The values
Ne[I] are computed by invoking the process described in FIG. 15.
The method of step 1500 of FIG. 15 estimates the total number of
index entries 212 (Ne 212) to represent all of the geometries at
the appropriate grid sizes. The method of step 1410 further
multiplies Ne 212 by the fraction of the total geometry coordinate
space that is covered by the query region 222 (Qr 222). The
following values are computed for each defined grid cell size "G"
224:
GridCellsInMap[i]=(1+(MapWidth/G[i]))*(1+(MapHeight/G[i])) (3)
GridCellsInQueryRegion[i]=(1+(QrWidth/G[i]))*(1+(QrHeight/G[i]))
(4)
NeQr[i]=Ne[i]*GridCellsInQueryRegion[i]/GridCellsInMap[i] (5)
The total cost "NeQr" is then the sum of "NeQr[i]" over the grid
sizes for all levels. In step 1415, it is determined whether
I=Numlevels. If so, processing continues to step 1420, otherwise,
processing returns to step 1410. In step 1420, NeQr is
returned.
[0113] FIGS. 14 and 15 show the process for an exemplary
2-dimensional map as a subset of the processing for an arbitrary
n-dimensional space. It should be clear that the same or similar
logic applies to n dimensions, where n is greater than, or equal to
3.
[0114] An index performance indicator NeQrMin 160 is minimized as
shown in step 520 (FIG. 11), and improves the performance of
grid-indexing searches on multidimensional data 30, such as spatial
data 55. More particularly, as the value of the NeQr 208 is
reduced, the number of search operations is reduced. That is, the
number of index entries 440 to be searched is reduced. System 10
decreases the time required for database search operations that use
a grid index 204 over the past, and improves the spatial grid index
204 over the past by determining the minimum value of NeQr 208 and
the corresponding values of the grid cell size 224. In step 1120 it
is determined whether NeQr<NeQrMin. If so, processing continues
to step 1125, otherwise processing continues to step 1130.
Therefore as shown in step 1125, system 10 minimizes the number of
index entries 212 that will be processed in the index data
structure 410. In step 1130, K is set to K+1. In step 1135, it is
determined whether k>NumG. If so, processing continues to step
1140, otherwise, processing continues to step 1110. In step 1140,
NeQrMin and associated 1-n level grid sizes are returned.
[0115] FIG. 15 shows a method 1500 of estimating the number of
index entries "Ne[i]" that geometric shapes produce for all grid
size levels "i". In one embodiment, system 10 uses a threshold 216
of four to determine when a new level "i" 210 is used. This process
is applied to each "Bucket" 234 of the "Geometry histogram 230"
shown in FIG. 7.
[0116] Method 1500 of system 10 operates with a plurality of
levels, "i," such as level 210. FIG. 15 describes an implementation
of system 10 that determines when another level 210 is used.
[0117] The number of levels, NumLevels 240 (FIG. 2), may be
determined to ensure optimal operations with specific spatial data
55 and the invention may be practiced with any number of levels,
NumLevels 240. System 10 initializes method 1500 by setting i=0 and
Ne[i]=0, where i is an increment for the level number, NumLevels
240 (step 1505). System 10 loops through all sizes of histogram
bucket 234 (step 1510) using NumBuckets 242. System 10 operates by
determining the grid cell sizes 224 associated with a sample 206 on
a per-level basis using three levels 210. In one embodiment, system
10 operates efficiently if four or less grid cells 310 overlap with
a geometric shape 315; i.e., an exemplary threshold 216 of system
10 is four (LevelThreshold 246).
[0118] Statistics are computed on a per-level basis (step 1515) by
computing BucketIntersections 244. Exemplary statistics are grid
cell intersections, BucketIntersections 244.
BucketInterSections=(1+BucketSize/G[I])**2.
[0119] System 10 determines whether more than LevelThreshold 246
grid cells 310 overlap with the current bucket size 216 (decision
step 1520). If YES, system 10 improves the collection of statistics
by estimating the grid cell size 224 based on the sample 206 taken
at the next level 210. If the bucket size 216 overlap more than
four grid cells 310, then the next level 210 with a larger grid
cell size 224 is used to practice system 10 (decision step 1530).
The grid cell size 224 is incremented by incrementing: "i"="i"+1
(step 1525).
[0120] Therefore, if the result of decision step 1520 is YES, then
at other levels 210 a concentration of geometric shapes 310 is
determined (step 1515). If there is such a concentration then the
appropriate grid cell size, G, 224 may be ascertained and is
associated with the concentration of geometric shapes 310. The
operation of step 1515 is described in detail with reference to
FIG. 3G. If the result of decision step 1520 is NO, then the
current level of analysis is used for grid indexing (step
1535).
[0121] FIG. 16 is a block diagram of a computer system 1600,
suitable for employment of system 10. The computer system 1600 may
be implemented on a general-purpose microcomputer, or other
conventional workstation or graphics computer devices, wireless
devices, or mainframe computers. In one embodiment, the computer
system 1600 comprises a user interface 1605, a user input device
1610, a display 1615, a printer 1620, a processor 1625, a read only
memory (ROM) 1630, the data storage device 50, such as a hard
drive, a random access memory (RAM) 1635, and a storage media
interface 1640, all of which are coupled to a bus 1645 or other
communication means for communicating information. Although the
computer system 1600 is represented herein as a standalone system,
it is not limited to such, but instead can be part of a networked
system. For example, the computer system 1600 may be connected
locally or remotely to the storage device 50 that is fixed or
removable and data transmission devices 1650. Further the computer
system 1600, such as the server computer system 20 or the client
computer system 15, also can be connected to other computer systems
via the data transmission devices 1650. Elements 20 and 15 are
described with reference to FIG. 1.
[0122] The RAM 1635, the data storage device 50 and the ROM 1630,
are memory components 1655 that store data 60 and instructions for
controlling the operation of processor 1625, which may be
configured as a single processor or as a plurality of processors.
The processor 1625 executes a program 1660 to perform the methods
of system 10, as described herein. Element 60 is described with
reference to FIG. 1.
[0123] While the program 1660 is indicated as loaded into the RAM
1635, it may be configured on a storage media 1665 for subsequent
loading into the data storage device 50, the ROM 1630, or the RAM
1635 via an appropriate storage media interface 1640. Storage media
1665 can be any conventional storage media such as a magnetic tape,
an optical storage media, a compact disk, or a floppy disk.
Alternatively, storage media 1665 can be a random access memory
1635, or other type of electronic storage, located on a remote
storage system.
[0124] Generally, the computer programs and operating systems are
all tangibly embodied in a computer-usable medium, such as the
memory 1655, the data storage device 50, or the data transmission
devices 1650, thereby making an article of manufacture, such as a
computer program product, according to the invention. As such, the
terms "computer program product" as used herein are intended to
encompass a computer program 1660 accessible from any
computer-readable device or media.
[0125] Moreover, the computer programs 1660 and operating systems
are comprised of instructions which, when read and executed by the
computer system 1600, cause the computer system 1600 to perform the
steps necessary to implement and use system 10. Under control of
the operating system, the computer programs 1660 may be loaded from
the memory 1655, the data storage device 50, or the data
transmission devices 1650 into the memories 1655 of the computer
system 1600 for use during actual operations. Those skilled in the
art will recognize many modifications may be made to this
configuration without departing from the scope of system 10.
[0126] The user interface 1605 is an input device, such as a
keyboard or speech recognition subsystem, for enabling a user to
communicate information and command selections to the processor
1625. The user can observe information generated by the computer
system 1600 via the display 2165 or the printer 1620. The user
input device 2X222 is a device such as a mouse, track-ball, or
joy-stick, that allows the user to manipulate a cursor on the
display 2165 for communicating additional information and command
selections to the processor 1625.
[0127] When operating in accordance with one embodiment of system
10, the computer system 1600 determines an index performance
indicator NeQr 208 to evaluate the grid index 204 performance, and
comprises a technique for improving grid-indexing searches that use
grid indexes 204 and operate on the multidimensional database 45.
More particularly the computer system 1600 reduces the amount of
data 60 that results from sampling during statistics collections
that are used to determine an efficient grid cell size 224 so that
the grid indexing that locates a particular minimum bounding
rectangle 355 is sufficiently efficient. The processor 1625 and the
program 1660 collectively operate as a module for improving
grid-indexing searches that operate on the multidimensional
database 45. It will be appreciated that system 10 offers many
advantages over conventional techniques.
[0128] System 10 is typically implemented using one or more
computer programs 1660, each of which executes under the control of
an operating system and causes the computer system 1600 to perform
the desired functions as described herein. Thus, using the present
specification, the invention may be implemented as a machine,
process, method, system, or article of manufacture by using
standard programming and engineering techniques to produce
software, firmware, hardware or any combination thereof.
[0129] It is to be understood that the specific embodiments of the
invention that have been described are merely illustrative of
certain applications of the principle of system 10. Numerous
modifications may be made to the system and method for determining
an optimal grid index specification for multidimensional data
described herein without departing from the spirit and scope of
system 10.
* * * * *