Il database SYNC funge quindi da coda push/pop per le operazioni di sincronizzazione.

Tramite un proprio applicativo, stored procedure o trigger, è possibile sviluppare delle funzioni interne che gestiscono l'allineamento dei dati tra sistema Cloud e infrastruttura database interna passando dal database SYNC.


I campi SYRFC, SYROP e SYRID

Su ogni tabella del sistema, visibili solo sul database di SYNC, sono presenti una serie di campi fondamentali per capire quale tipo di operazione è stata effettuata sul record, da dove proviene (Cloud o infrastruttura interna) e in che ordine.

SYRFC (System Record From Cloud):

è un campo bit (0/1) che indica se il record presente in tabella è stato inserito da sistema Cloud o internamente, nel caso in cui il bit sia ad 1 il record in questione risulta da leggere ed elaborare in quanto inserito da Cloud, in caso il bit sia a 0, il record risulta da sincronizzare in Cloud.

SYROP (System Record Operation):
è un campo varchar(10) che indica il tipo di operazione effettuata sul record. I valori presenti in questo campo possono essere INSERT, UPDATE, DELETE.


Per tutte le operazioni di INSERT, UPDATE e DELETE si esegue quindi sempre un'operazione SQL di inserimento sulla tabella in questione.

Operazioni di INSERT: Si imposta il campo SYRFC a "0" e il SYROP a "INSERT".

Operazioni di UPDATE: Si imposta il campo SYRFC a "0" e il SYROP a "UPDATE".

Operazioni di DELETE: Si imposta il campo SYRFC a "0" e il SYROP a "DELETE".

Per leggere invece i record che hanno subito modifiche da Cloud si controlla la presenza di uno o più record sulle tabelle interessate con bit SYRFC a "1". Anche in questo caso, il campo SYROP indica l'operazione che è stata eseguita sul record in questione. E' necessario leggere i record ordinandoli per il campo SYRID (System Record ID) che rappresenta l'identità (campo contatore) di inserimento del record.

In caso di lettura, una volta letta la riga interessata è necessario eliminarla da tabella su database SYNC.


Logica di gestione delle Chiavi (RECORD_ID e SYKEY)

Su ogni tabella del sistema Goose è presente un campo chiave RECORD_ID.

Il valore del campo RECORD_ID in automatico è composto da [ID_SESSIONE_UTENTE]-[INDICE_INCREMENTALE].

L'elemento [ID_SESSIONE_UTENTE] è un valore intero incrementale che varia ad ogni sessione di login. Lo stesso user, nel caso esegua più login, avrà assegnato ID_SESSIONE differenti.

L'elemento [INDICE_INCREMENTALE] è un valore incrementale di sessione.

Questa modalità permette di generare chiavi sempre univoche anche e soprattutto in situazioni di concorrenzialità.

Per gestire la referenziazione dei record in relazione a propria infrastruttura interna è possibile utilizzare altri campi.

Il primo e più importante è il campo SYKEY di tipo varchar(50).

Il campo SYKEY non viene mai scritto da Cloud, ma può essere utilizzato internamente per associare ad uno specifico record il valore di chiave relativo a proprio database.

Nel caso si effettui una INSERT su sistema SYNC, compilando questo campo, il valore verrà associato al record in questione e risulterà sempre visibile in tutte le operazioni successive sia di UPDATE che di DELETE.

Tutte le tabelle riportano poi un campo codice specifico per la gestione di eventuali codifiche interne.

Alcuni esempi:

  • PRO_DOT.CDPRO: Codice Prodotto di tipo varchar(100)
  • CON_TRO.CDCON: Codice Prodotto di tipo varchar(50)
  • AGE_NTI.CDAGE: Codice Prodotto di tipo varchar(50)

Solitamente questi campi risultano dei varchar(50) o varchar(100) per permettere la gestione di codici anche complessi che risultano però semplici campi descrittivi.


Vuoi chiederci qualcosa?
Scrivici a: 
support@gooseapp.com