This topic describes the relationship between database container objects and environments in the Delphix Engine object model.
The core Delphix objects revolve around the notion of environments and databases, known at the API layer as containers. Understanding how these objects relate to each other is crucial to operating effectively within the CLI. This section provides an overview of these objects; for more information about a particular representation such as Oracle RAC, see the Web Service API Guide.
An environment is the root of the representation of external state that manages database instances. An environment could be a single host (
UnixHostEnvironment) or an Oracle cluster (
OracleClusterEnvironment). Environments exist to contain repositories, and each environment may have any number of repositories associated with it. A repository is the entity that contains database instances. Repositories are typically installation directories (
OracleInstall) within an environment. Within each repository of any number of
SourceConfig objects, which represent known database instances. The source config exists independent of Delphix, and could represent a possible dSource (in which case there is no associated database object), or could be managed entirely by Delphix (for VDBs). The source config contains intrinsic properties of the database instance, while the source (described below) contains information specific to Delphix and only exists when the source config is linked to a dSource or VDB.
Most environment objects are created through the act of discovery. By specifying a host, Delphix will attempt to automatically discover all environments, repositories, and source configs. These objects can also be added manually after the fact in cases where discovery fails.
The environment hierarchy can be represented this way:
The generic type is listed in the top portion of each box, with an example of the Oracle single instance objects in the lower portion of each box. Each of these objects can contain multiple child objects with it.
The core of all databases within Delphix is the
Container that contains all the physical data associated with the database, whether it is a dSource or VDB. Within each container is a
Timeflow, which represents a single timeline of change within the database history. Currently, a container can only have one timeflow, though this limitation may be relaxed in a future release. Within a timeflow are two important object:
TimeflowSnapshot objects and
TimeflowRange objects. Timeflow ranges represent the provisionable ranges within the history of the timeflow, while timeflow snapshot represent a point at which at snapshot was taken and therefore more likely to provision in a short amount of time. The resulting data hierarchy can be represented this way:
Each container may be associated with a
Source. A source is the Delphix representation of an external database when it is associated with a container, and contains information specific to managing that source. Not all source configs within an environment have a source associated with them (as is the case with linkable databases), but all sources must have a source config. Containers may have no sources associated with them if they are unlined; sources can be manually attached at a later point. Currently, each container can have at most once source associated with it, though this may change in a future release.