I Global Objects sono tabelle che possono essere create in un Datashelf, accessibili da più DataBox.
È possibile definire due tipologie di Global Objects:
✓ Shared , condivise tra tutte le Databox di un Datashelf
✓ Partitioned , accessibili da ogni DataBox la cui DataBoxKey corrisponda al valore del campo omonimo nella tabella partizionata
I Global Objects risiedono fisicamente nel DataBox di sistema, denominato _ShelfCatalog, di cui ogni DataShelf è automaticamente provvisto e sempre contenente l’oggetto speciale DataBox List.
La creazione può essere fatta da un qualsiasi DataBox Link di un Package, senza spcificare la DataBoxKey, ovvero da da un editor SQL, aperto nel contesto della DataBox List.
Per accedere ad un editor SQL nel contesto della DataBox List è sufficiente aprire quest'ultima dal Navigator dei Data Shelves, selezionando anche, se necessario, il pulsante Show Sql dal ribbon Home, e sostituire l'espressione SQL di default con quella desiderata. |
Per creare un Global Object di tipo Shared (Shared Table) è sufficiente che il nome abbia la forma st_TableName.
Analogamente, per creare un Global Object di tipo Partitioned (Partitioned Table) è sufficiente che il nome abbia la forma pt_TableName.
Inoltre, le Partitioned Table devono contenere un campo obbligatorio, denominato DataBoxKey, avente type NVARCHAR e dimensione 200.
I dati delle Partitioned Table sono visibili solo alle DataBox per cui è valorizzato nella tabella partitioned il campo DataBoxKey. I dati delle tabelle shared sono condivise tra tutte le DataBox. |
Nel caso di operazioni di inserimento, rimozione e modifica dei dati e metadati dei Global Objects , effettuate da DataShelf Workspace:
✓ Lo statement INSERT avviene sia da contesto DataShelf che da contesto DataBox;
✓ Lo statement DELETE per shared table funziona sia da contesto DataShelf sia da contesto DataBox;
✓ Lo statement DELETE per Partitioned Table, da contesto DataShelf svuota la tabella, da contesto DataBox cancella solo i dati relativi alla DataBox corrente;
✓ Gli statement ALTER TABLE e DROP avvengono solo da contesto DataShelf.
Nel caso di operazioni di inserimento, rimozione e modifica dei dati e metadati dei Global Objects , effettuate da un DataBox Link di un Package:
✓ Lo statement INSERT avviene specificando o meno, a seconda delle necessità, la DataBox nel DataBox Link;
✓ Lo statement DELETE per shared table funziona specificando o meno, a seconda delle necessità, la DataBox nel DataBox Link;
✓ Lo statement DELETE per Partitioned Table, svuota la tabella se non è specificata la DataBox, ovvero cancella solo i dati relativi alla DataBox corrente, in caso essa sia specificata;
✓ Gli statement ALTER TABLE e DROP avvengono solo senza specificare la DataBox.
Nel caso di Importazione/esportazione dell'intero DataShelf, i Global Object sono trattati alla stessa stregua di qualsiasi altra tabella di un DataShelf e non necessitano di attenzioni specifiche. |
L'esportazione di singole DataBox comporta l'esportazione contestuale:
✓ dell'intera Shared Table;
✓ della porzione di Partitioned Table relativa alla DataBox corrente.
L'importazione di singole DataBox comporta l'importazione contestuale esclusivamente della porzione di Partitioned Table relativa alla DataBox corrente.
In particolare, sono evidenziati i seguenti comportamenti:
✓ Se il Global Object non esiste, l'import ne effettua la creazione;
✓ Se il Global Object esiste ma ha definizione diversa, l'import fallisce;
✓ Se il Global Object esiste ed ha esattamente la stessa definizione, allora l'importazione avviene in "append".
APPROFONDIMENTO: COMPORTAMENTI PARTICOLARI NEI DATABOX LINK ✓ Le DataBox Action Drop e Replace agiscono relativamente alla sola porzione di Partitioned Table corrispondente alla DataBox e non hanno effetto sulle Shared Tables; ✓ L'utilizzo dei Global Objects non è permesso per le DataBox Action di tipo Create o OpenOrCreate e ReplaceOrCreate, nel caso in cui la DataBox non esista; ✓ L'istruzione DML merge non è consentita per i Global Objects. |