DB2® databases
store data in tables. In addition to tables used to store persistent
data, there are also tables that are used for presenting results,
summary tables and temporary tables; multidimensional clustering tables
offer specific advantages in a warehouse environment.
- Base tables
- These types of tables hold persistent data. There are different
kinds of base tables, including
- Regular tables
- Regular tables with indexes are the "general purpose" table choice.
- Multidimensional clustering (MDC) tables
- These types of tables are implemented as tables that are physically
clustered on more than one key, or dimension, at the same time. MDC
tables are used in data warehousing and large database environments.
Clustering indexes on regular tables support single-dimensional clustering
of data. MDC tables provide the benefits of data clustering across
more than one dimension. MDC tables provide guaranteed clustering within
the composite dimensions. By contrast, although you can have a clustered
index with regular tables, clustering in this case is attempted by
the database manager, but not guaranteed and it typically degrades
over time. MDC tables can coexist with partitioned tables and can
themselves be partitioned tables.
- Multidimensional clustering tables are not supported in a DB2 pureScale® environment.
- Insert time clustering (ITC) tables
- These types of tables are conceptually, and physically similar
to MDC tables, but rather than being clustered by one or more user
specified dimensions, rows are clustered by the time they are inserted
into the table. ITC tables can be partitioned tables.
- ITC tables are not supported in a DB2 pureScale environment.
- Range-clustered tables (RCT)
- These types of tables are implemented as sequential clusters of
data that provide fast, direct access. Each record in the table has
a predetermined record ID (RID) which is an internal identifier used
to locate a record in a table. RCT tables are used where the data
is tightly clustered across one or more columns in the table. The
largest and smallest values in the columns define the range of possible
values. You use these columns to access records in the table; this
is the most optimal method of using the predetermined record identifier
(RID) aspect of RCT tables.
- Range-clustered tables are not supported in a DB2 pureScale environment.
- Partitioned tables
- These types of tables use a data organization scheme in which
table data is divided across multiple storage objects, called data
partitions or ranges, according to values in one or more table partitioning
key columns of the table. Data partitions can be added to, attached
to, and detached from a partitioned table, and you can store multiple
data partition ranges from a table in one table space. Partitioned
tables can contain large amounts of data and simplify the rolling
in and rolling out of table data.
- Temporal tables
- These types of tables are used to associate time-based state information
to your data. Data in tables that do not use temporal support represents
the present, while data in temporal tables is valid for a period defined
by the database system, customer applications, or both. For example,
a database can store the history of a table (deleted rows or the original
values of rows that have been updated) so you can query the past state
of your data. You can also assign a date range to a row of data to
indicate when it is deemed to be valid by your application or business
rules.
- Temporary tables
- These types of tables are used as temporary work tables for various
database operations. Declared temporary tables (DGTTs)
do not appear in the system catalog, which makes them not persistent
for use by, and not able to be shared with other applications. When
the application using this table terminates or disconnects from the
database, any data in the table is deleted and the table is dropped.
By contrast, created temporary tables (CGTTs) do appear
in the system catalog and are not required to be defined in every
session where they are used. As a result, they are persistent and
able to be shared with other applications across different connections.
Neither
type of temporary table supports
- User-defined reference or user-defined structured type columns
- LONG VARCHAR columns
In addition XML columns cannot be used in created temporary tables.
- Materialized query tables (MQTs)
- MQTs are defined by a query that also determines the data for
the MQT. Use materialized query tables to improve the performance
of queries. Based on database configuration settings for query optimization,
the database manager determines that a portion of a query can be resolved
using an MQT. MQTs are classified by how their data is maintained.
- Shadow tables
- A
shadow table is a column-organized MQT copy of a row-organized table.
It can contain all columns or a subset of columns of the source row-organized
table. Shadow tables are maintained by replication.
You can create all of the preceding types of
tables using the CREATE TABLE statement.
Depending on what your data is going to look like, you might find
one table type offers specific capabilities that can optimize storage
and query performance. For example, if you have data records that
are loosely clustered (not monotonically increasing), consider using
a regular table and indexes. If you have data records that have duplicate
(but not unique) values in the key, do not use a range-clustered table.
Also, if you cannot afford to preallocate a fixed amount of storage
on disk for the range-clustered tables you might want, do not use
this type of table. If you have data that has the potential for being
clustered along multiple dimensions, such as a table tracking retail
sales by geographic region, division and supplier, a multidimensional
clustering table might suit your purposes.
In addition to the various table types described previously, you
also have options for such characteristics as partitioning,
which can improve performance for tasks such as rolling in table
data. Partitioned tables can also hold much more information than
a regular, nonpartitioned table. You can also use capabilities such
as compression, which can help you significantly reduce
your data storage costs.