How are geodatabases stored in a DBMS?
Many geodatabases utilize relational databases such as Oracle, IBM DB2, or Microsoft SQL Server for data storage and management of geographic information. This enables the geodatabase to be scaled to extremely large sizes and support a large number of users and editors. These geodatabases also support a number of critical data management workflows, such as versioning, replication, and historical archiving.
Physical storage of geodatabases
The primary mechanism for geodatabase storage is via tables. Tables are stored either as files on disk or within the contents of a DBMS as follows:
Type of geodatabase
Data storage method
A file system folder containing data files
ArcSDE for SQL Server Express (included with ArcGIS Desktop [ArcEditor or ArcInfo], ArcGIS Engine, and ArcGIS Server at the Workgroup level)
Microsoft SQL Server Express Edition
ArcSDE geodatabase support included with ArcGIS Server at the Enterprise level. (This requires that you acquire your own DBMS, except in the case of ArcSDE for PostgreSQL, which includes an installation of PostgreSQL.)
Storing and managing spatial data
Geodatabase storage in a DBMS contains two sets of tables—dataset tables (user-defined tables) and system tables.
- Dataset tables—Each dataset in the geodatabase is stored in one or more tables. The dataset tables work with the system tables to manage data.
- System tables—The geodatabase system tables keep track of the contents of each geodatabase. They essentially describe the geodatabase schema that specifies all dataset definitions, rules, and relationships. These system tables contain and manage all the metadata required to implement geodatabase properties, data validation rules, and behaviors.
The internal structure of these tables was restructured beginning with the ArcGIS 10 release. The information related to the schema in the geodatabase, which prior to ArcGIS 10 was stored in over 35 geodatabase system tables, was consolidated into four main tables:
- GDB_Items—Contains a listing of all items contained within a geodatabase such as feature classes, topologies and domains
- GDB_ItemTypes—Contains a predefined list of recognized item types, such as Table
- GDB_ItemRelationships—Contains schema associations between items such as which feature classes are contained within a feature dataset
- GDB_ItemRelationshipTypes—Contains a predefined list of recognized relationship types such as DatasetInFeatureDataset
For example, a simple feature class stored in a geodatabase within a SQL Server DBMS using binary geometry storage is made up of a business table, an associated feature (f) table, and a spatial index (s) table. These tables work with a set of system tables: the i table, the gdb_items, sde_table_registry, sde_layers, and sde_spatial_references system tables. These are used to track information about the feature class.
Each DBMS has a slight variation in the set of tables and columns used to store and manage a geodatabase. The type of DBMS you are using to store your geodatabase impacts the physical storage schema.
Geodatabases also use triggers, functions, stored procedures, and user-defined types in the DBMS to implement functionality and maintain consistency. A detailed discussion of these is not necessary, since you would not need to interact with most of these database objects.
If you are interested in accessing the information in your geodatabase using SQL, see A quick tour of using SQL with ArcSDE geodatabases to get started.
For more information on the dataset and system table structure, see the following topics: