SQL/MX Database Distribution White Paper

NonStop SQL/MX Database Distribution White Paper 22 November 2004
Hewlett-Packard Company – 529627-001 Page 3 of 12
1.3. Nonobvious Aspects of Visibility
A database object is globally visible on all nodes where its catalog has been registered. However, catalog
registration is not automatic, and no global monitoring of catalog names occurs on individual Expand
nodes.
1.3.1. Identically Named Catalogs
Because a catalog is initially created only on the local Expand node, it is possible (but not generally
recommended) to create identically named catalogs on individual Expand nodes. Continuing the example
from Section 1.2:
On \EAST, this command is entered:
CREATE CATALOG CATY;
On \NORTH, this command is entered:
CREATE CATALOG CATY;
Now, a catalog named CATY exists on both \EAST and \NORTH. However, they are not the same
catalog. CATY on \NORTH is not - and cannot be made - visible on \EAST, and vice versa. On
\NORTH, the command
REGISTER CATALOG CATY ON \EAST.$EASTDB;
would be rejected with an error saying that another catalog named CATY already exists on
\EAST, and vice versa.
Typically, this is not a desirable situation. A catalog that is intended for global use should be created once,
and then registered on each of the Expand nodes where it should be visible.
1.3.2. Visibility of Related Catalogs
Database objects can be interdependent through mechanisms such as views, triggers, and referential
integrity constraints. Such interdependencies can cross schema and catalog boundaries; catalogs with
interdependent database objects are said to be related.
Related catalogs are required to have identical visibility. That is, they must be visible on the exact same set
of nodes. This is easiest to illustrate with an example of what could happen if identical visibility were not
required.
Continuing the example from Section 1.2:
Catalog CATX is visible on all three nodes. On \NORTH, these commands are executed:
CREATE CATALOG CATZ;
CREATE SCHEMA CATZ.Z_SCHEMA;
CREATE TABLE CATZ.Z_SCHEMA.T1 (....);