Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente |
utenti:extraway_platform_server:faq [2023/03/09 10:51] – [eXtraWay Platform Server - FAQ] chiara.pavanati | utenti:extraway_platform_server:faq [2023/03/09 11:45] (versione attuale) – [Organizzazione degli Allegati] chiara.pavanati |
---|
== Compattamento Dati == | == Compattamento Dati == |
| |
<color grey>Pagina in allestimento</color> | <color grey>[ Pagina in allestimento ]</color> |
| |
== Compattamento Indici == | == Compattamento Indici == |
| |
Il compattamento degli indici è una procedura che ha senso di essere effettuata fondamentalmente per guadagnar prestazioni nell'accesso agli indici. Questo avvantaggia gli archivi intensamente consultati ma, in qualche modo, confligge con archivi altresì modificati in inserimento e modifica, quindi archivi dinamici.\\ | Il **compattamento** degli **indici** è una procedura che ha senso di essere effettuata fondamentalmente per guadagnar **prestazioni** nell'**accesso** agli **indici**. Questo avvantaggia gli **archivi** intensamente consultati ma, in qualche modo, confligge con archivi altresì modificati in inserimento e modifica, quindi **archivi dinamici**. |
Quando tutti gli indici di un archivio sono nell'ordine in cui essi vengono consultati dai diversi vocabolari, il server riesce ad accedere ad essi molto più rapidamente. Quando però un archivio è dinamico, quindi soggetto quanto meno a modifiche, lo stato di compattamento degli indici degrada rapidamente e non si può dire che l'ordine degli indici rappresenti un effettivo vantaggio in fase di modifica.\\ | |
Ecco quindi che si suggerisce di ricorrere al compattamento degli indici principalmente negli archivi storici a sola consultazione. Non di meno, il compattamento degli indici è una procedura che viene compiuta pressoché in modo automatico((può essere evitata ma essa viene compiuta per //default//)) ogni qual volta si procede alla ricostruzione integrale degli indici ((specialmente quando associata anche alla ricostruzione del catalogo)). | Quando tutti gli **indici** di un **archivio** sono nell'ordine in cui essi vengono consultati dai diversi **vocabolari**, il server riesce ad accedere ad essi molto più rapidamente. Quando però un **archivio** è **dinamico**, quindi soggetto quanto meno a modifiche, lo stato di compattamento degli indici degrada rapidamente e non si può dire che l'ordine degli indici rappresenti un effettivo vantaggio in fase di modifica. |
| |
| Ecco quindi che si suggerisce di ricorrere al **compattamento** degli **indici** principalmente negli **archivi storici** a sola consultazione. Non di meno, il compattamento degli indici è una procedura che viene compiuta pressoché in modo **automatico** ((può essere evitata ma essa viene compiuta per //default//)) ogni qual volta si procede alla **ricostruzione integrale** degli **indici** ((specialmente quando associata anche alla ricostruzione del catalogo)). |
| |
Vediamo come si comporta il server in questo caso e quali siano i possibili problemi che la procedura può incontrare. | Vediamo come si comporta il **server** in questo caso e quali siano i possibili **problemi** che la **procedura** può incontrare. |
| |
Iniziamo col dire che il server genera, compiendo il compattamento, 3 files che sostituiranno gli originali e da loro denominazione modificando il primo carattere del nome dell'archivio originario. Se il nostro archivio si chiama 'abc', i files frutto del compattamento si chiameranno '@bc' ed altri files di servizio che vedremo poi si chiameranno '#bc'. I files interessati sono quelli che rappresentano i soli indici, quindi .idx, .vcb e .ref già descritti in precedenti paragrafi.\\ Partendo dai files //nomearchivio//.idx, .vcb e .ref, il server produrrà prima una terna di files //@omearchivo//.idx, .vcb e .ref aventi lo stesso contenuto ma nell'ordine richiesto.\\ Giunti a questo punto sarà necessario compire una sorta di //rotazione// dei files che consenta agli altri server che già operano con i files stessi di trovarsi aggiornati nei contenuti senza rendersi conto dell'avvenuto compattamento. Perché questo avvenga e non si rischino perdite di contenuti, la procedura è la seguente: | Iniziamo col dire che il server genera, compiendo il **compattamento**, tre **files** che sostituiranno gli originali e da loro denominazione modificando il primo carattere del nome dell'archivio originario. Se il nostro **archivio** si chiama ''abc'' , i files frutto del compattamento si chiameranno ''@bc'' ed altri files di servizio che vedremo poi si chiameranno ''#bc'' . I files interessati sono quelli che rappresentano i soli **indici**, quindi ''.idx'' , ''.vcb'' e ''.ref'' già descritti in precedenti paragrafi. |
| |
- La terna di files originali //nomearchivio// viene 'copiata' in files //#omearchivio//. | Partendo dai **files** ''nomearchivio''.idx, ''.vcb'' e ''.ref'' , il server produrrà prima una **terna** di **files** ''@omearchivo''.idx, ''.vcb'' e ''.ref'' aventi lo stesso contenuto ma nell'ordine richiesto. |
- La terna di files compattati //@omearchivio// viene 'copiata' sui files originali. | |
- Una volta avvenuta questa doppia copia, i files //@omearchivio// e //#omearchivio// possono essere rimossi. | |
| |
Per quanto la procedura non nasconda particolari complicazioni, qualcosa può andare storto, specialmente se lo spazio disponibile su disco non risulta sufficiente a contenere la doppia copia dell'archivio stesso((Il server compie una valutazione preventiva dello spazio necessario ma essa è empirica ed il disco potrebbe essere contemporaneamente utilizzato e quindi riempito da altri programmi. Inoltre il compattamento degli indici è,di fatto, un ordinamento)). La procedura può limitarsi a presentare errore((Ed in quel caso provvede a rimuovere i semilavorati non utilizzabili)) oppure indicare che l'operazione ha avuto successo ma ci sono stati problemi di copia. In questo caso avremo l'archivio in una condizione incompleta che può ricadere in uno dei seguenti casi. | Giunti a questo punto sarà necessario compire una sorta di **rotazione** dei **files** che consenta agli altri server che già operano con i files stessi di trovarsi aggiornati nei contenuti senza rendersi conto dell'avvenuto **compattamento**. Perché questo avvenga e non si rischino perdite di **contenuti**, la **procedura** è la seguente: |
| |
* Esiste la terna //nomearchivio// ed esiste la terna //@omearchivio// ma la terna //#omearchivio// è incompleta o i files non sono stati copiati per intero. Mancava spazio nel fare la copia di sicurezza. L'archivio risulta funzionante con gli indici che sono ancora "non compattati". La soluzione preferibile è quella di rimuovere i files //@omearchivio// e gli eventuali //#omearchivio// lasciando l'archivio non compattato((Se si sono riprese le attività gli indici potrebbero aver subito modifiche e quindi quelli compattati in //@omearchivio// potrebbero non essere più affidabili)). Se il problema era effettivamente lo spazio su disco si può cercare di renderne disponibile una maggior quantità e compiere nuovamente il compattamento. | - La **terna** di **files originali** ''nomearchivio'' viene 'copiata' in files ''#omearchivio'' |
* Esistono tutte e 3 le terne di files ma la copia s'è interrotta, credibilmente, durante la migrazione da //@omearchivio// a //nomearchivio//. Si può procedere in due modi:\\ | - La **terna** di **files compattati** ''@omearchivio'' viene 'copiata' sui files originali; |
* Rimuovere la terna di files //#omearchivio// e completare manualmente la sostituzione dei files //nomearchivio// con i files //@omearchivio//. Il risultato sarà l'archivio compattato. | - Una volta avvenuta questa **doppia copia**, i **files** ''@omearchivio'' e ''#omearchivio'' possono essere rimossi. |
* Rimuovere la terna di files //@omearchivio// e ripristinare manualmente i files //nomearchivio// grazie alle copie di sicurezza rappresentate dalla terna //#omearchivio//. Il risultato sarà l'archivio nella sua forma originaria prima del compattamento. In linea di massima la due soluzioni si equivalgono ma questa seconda, come nei casi precedenti in cui si torna allo stato originario dell'archivio, è da preferire. | |
| |
Esistono versioni del server che possono compiere il compattamento anche in modalità "non sicura" ovvero senza avvalersi dalla terna di files //#omearchivio//. In tal caso se la copia dei files //@omearchivio// in //nomearchivio// non è avvenuta completamente, essa può essere completata manualmente. | Per quanto la **procedura** non nasconda particolari **complicazioni**, qualcosa può andare storto, specialmente se lo **spazio disponibile** su **disco** non risulta sufficiente a contenere la doppia copia dell'archivio stesso ((Il server compie una valutazione preventiva dello spazio necessario ma essa è empirica ed il disco potrebbe essere contemporaneamente utilizzato e quindi riempito da altri programmi. Inoltre il compattamento degli indici è,di fatto, un ordinamento)). La procedura può limitarsi a presentare **errore** ((Ed in quel caso provvede a rimuovere i semilavorati non utilizzabili)) oppure indicare che l'operazione ha avuto **successo** ma ci sono stati problemi di copia. In questo caso avremo l'**archivio** in una **condizione incompleta** che può ricadere in uno dei seguenti **casi**: |
| |
| * Esiste la **terna** ''nomearchivio'' ed esiste la **terna** ''@omearchivio'' ma la **terna** ''#omearchivio'' è incompleta o i **files** non sono stati copiati per intero. Mancava **spazio** nel fare la **copia** di sicurezza. L'archivio risulta funzionante con gli **indici** che sono ancora "non compattati". La soluzione preferibile è quella di rimuovere i **files** ''@omearchivio'' e gli eventuali ''#omearchivio'' lasciando l'archivio non compattato ((Se si sono riprese le attività gli indici potrebbero aver subito modifiche e quindi quelli compattati in ''@omearchivio'' potrebbero non essere più affidabili)). Se il problema era effettivamente lo **spazio** su **disco** si può cercare di renderne disponibile una maggior quantità e compiere nuovamente il **compattamento**; |
| * Esistono tutte e tre le **terne** di **files** ma la **copia** s'è interrotta, credibilmente, durante la **migrazione** da ''@omearchivio'' a ''nomearchivio''. Si può procedere in due modi:\\ |
| * Rimuovere la **terna** di **files** ''#omearchivio'' e completare manualmente la **sostituzione** dei **files** ''nomearchivio'' con i **files** ''@omearchivio''. Il risultato sarà l'**archivio compattato**; |
| * Rimuovere la **terna** di **files** ''@omearchivio'' e ripristinare manualmente i **files** ''nomearchivio'' grazie alle copie di sicurezza rappresentate dalla terna ''#omearchivio'' . Il risultato sarà l'**archivio** nella sua forma originaria prima del **compattamento**. In linea di massima la due **soluzioni** si equivalgono ma questa seconda, come nei casi precedenti in cui si torna allo stato originario dell'archivio, è da preferire. |
| |
| Esistono **versioni** del **server** che possono compiere il **compattamento** anche in modalità "non sicura" ovvero senza avvalersi dalla **terna** di **files** ''#omearchivio'' . In tal caso se la copia dei files ''@omearchivio'' in ''nomearchivio'' non è avvenuta completamente, essa può essere completata manualmente. |
| |
==== Organizzazione degli Allegati ==== | ==== Organizzazione degli Allegati ==== |
| |
Ogni documento può contenere riferimenti ad uno o più allegati. | Ogni **documento** può contenere **riferimenti** ad uno o più **allegati**. |
| |
Rif. implicito ed esplicito. | **Rif**. implicito ed esplicito. |
| |
<color grey>Pagina in Allestimento</color> | <color grey>[ Pagina in Allestimento ]</color> |
| |
=== Cosa contiene la directory <nomarchivio>.file === | === Cosa contiene la directory <nomarchivio>.file === |
| |
La directory <nomearchivio>.file contiene, in senso assolutamente generico, allegati ai documenti dell'archivio in esame, ma di fatto assolve a più compiti e tali allegati sono organizzati in maniera differente tra loro. | La **directory** ''<nomearchivio>.file'' contiene, in senso assolutamente generico, **allegati** ai **documenti** dell'archivio in esame, ma di fatto assolve a più **compiti** e tali **allegati** sono organizzati in maniera differente tra loro. |
| |
| Perché le successive spiegazioni siano chiare al lettore si assume che abbia già conoscenza del **capitolo** ''[[#organizzazione_degli_allegati|Organizzazione degli Allegati]]'' che identifica gli **allegati referenziati** in modo implicito da quelli **referenziati** in modo esplicito. |
| |
| In prima approssimazione possiamo dire che la **directory** ''<nomearchivio>.file'' contiene: |
| |
| - Nella sua **radice** i **files** che vengono detti ''[[#perche_vi_e_un_proliferare_di_files_nella_directory_nomearchivio_.file|in area di parcheggio]]'' |
| - Nelle sue **directory numerate** (Es: ''000000\...'' ) i **files** frutto della migrazione da una precedente **architettura** ovvero di un'organizzazione intenzionalmente svincolata dai **documenti XML**. Tali files vengono comunque referenziati in modo implicito; |
| - In ogni altra **directory**, **files referenziati** in modo esplicito con percorso relativo. |
| |
| === Perché vi è un proliferare di files nella directory <nomearchivio>.file === |
| |
| La **directory** ''<nomearchivio>.file'' svolge il **compito** di **area** di **parcheggio** nell'ambito del ''[[#cosa_contiene_la_directory_nomarchivio_.file|trattamento degli allegati degli archivi eXtraWay]]'' |
| |
Perché le successive spiegazioni siano chiare al lettore si assume che abbia già conoscenza del capitolo [[#organizzazione_degli_allegati|Organizzazione degli Allegati]] che identifica gli allegati referenziati in modo implicito da quelli referenziati in modo esplicito. | Per comprendere bene cosa si intenda per **area** di **parcheggio** è opportuno comprendere prima il **flusso operativo** che consente di associare un **allegato** ad un **documento** nella piattaforma eXtraWay. Il **flusso** è identificabile con i seguenti **punti**: |
| |
In prima approssimazione possiamo dire che la directory <nomearchivio>.file contiene: | - Ad eccezione degli **allegati** di tipo esplicito (Vds. ''[[#organizzazione_degli_allegati|Organizzazione degli Allegati]]'' ), quelli implicitamente **referenziati** non sono **proprietà** del **server eXtraWay**. L'applicazione che intende associare un allegato ad un documento nuovo o esistente dovrà quindi inviare per ciascuno di essi una **copia** al **server** il quale provvederà a dare loro un **identificatore numerico univoco** e collocarli nell'area di parcheggio ovvero nella **directory** ''<nomearchivio>.file'' . Il **server** risponde all'applicazione indicando quale **identificativo numerico** è stato assegnato a ciascun **allegato**; |
- Nella sua radice i files che vengono detti [[#perche_vi_e_un_proliferare_di_files_nella_directory_nomearchivio_.file|in area di parcheggio]] | - L'applicazione completa il **documento** (in fase di inserimento o modifica) elencando, tra gli altri, anche i riferimenti implicito a tutti gli **allegati** che ha precedentemente inviato al **server** ((L'invio avviene per singoli files, uno alla volta)). Il documento viene inviato al server per il **salvataggio**; |
- Nelle sue directory numerate (es.: 000000\...) i files frutto della migrazione da una precedente architettura ovvero di un'organizzazione intenzionalmente svincolata dai documenti XML. Tali files vengono comunque referenziati in modo implicito. | - Il **server** che riceve un **documento** da salvare, che si tratti di inserimento o modifica, ne verifica i **contenuti** e stabilisce quali **identificatori** di **allegati** si riferiscano a files che si trovano o meno in **area di parcheggio**. Quando avrà deciso ''[[|dove compiere il salvataggio del documento XML]]'' sposterà presso di esso tutti gli **allegati referenziati** rimuovendo quindi quelli ancora in area di parcheggio e posizionandoli doverosamente. |
- In ogni altra directory, files referenziati in modo esplicito con percorso relativo. | |
| |
=== Perchè vi è un proliferare di files nella directory <nomearchivio>.file === | Esiste quindi uno **scollamento temporale** tra il momento in cui l'**applicazione** invia gli **allegati** al **server** perché associ ad essi ((Per la precisione alla copia che eXtraWay trattiene presso l'archivio)) un **identificatore univoco** ed il momento in cui gli **allegati inviati** vengono effettivamente associati al **documento**, momento che corrisponde al **salvataggio** dello stesso. |
| |
La directory <nomearchivio>.file svolge il compito di area di parcheggio nell'ambito del [[#cosa_contiene_la_directory_nomarchivio_.file|trattamento degli allegati degli archivi eXtraWay]]. | Va da se che molte cose possono avvenire tra questi due momenti. L'**operatore** può rinunciare a salvare le **modifiche** effettuate oppure il **contenuto** del **documento** è incompleto o replicato e quindi il **sistema** si rifiuta di salvarlo o una qualsiasi altra attività simile. |
| |
Per comprendere bene cosa si intenda per area di parcheggio è opportuno comprendere prima il flusso operativo che consente di associare un allegato ad un documento nella piattaforma eXtraWay. Il flusso è identificabile con i seguenti punti: | In ogni caso se la seconda attività, quella di effettiva **assegnazione** di un **allegato** ad un **documento**, non ha luogo l'**allegato** che si trova in **area** di **parcheggio** non sarà più utilizzato da alcun documento né il suo numero univoco potrà essere recuperato. |
| |
- Ad eccezione degli allegati di tipo esplicito (Vds. [[#organizzazione_degli_allegati|Organizzazione degli Allegati]]), quelli implicitamente referenziati non sono proprietà del server eXtraWay. L'applicazione che intende associare un allegato ad un documento nuovo o esistente dovrà quindi inviare per ciascuno di essi una copia al server il quale provvederà a dare loro un identificatore numerico univoco e collocarli nell'//area di parcheggio// ovvero nella directory <nomearchivio>.file. Il server risponde all'applicazione indicando quale identificativo numerico è stato assegnato a ciascun allegato. | Potremmo quindi asserire che i **files** presenti in **area** di **parcheggio** che presentino una **denominazione** del tipo ''<numero in 6 cifre>.<estensione del documento>'' |
- L'applicazione completa il documento (in fase di inserimento o modifica) elencando, tra gli altri, anche i riferimenti implicito a tutti gli allegati che ha precedentemente inviato al server((L'invio avviene per singoli files, uno alla volta)). Il documento viene inviato al server per il salvataggio. | si possano rimuovere una volta che la loro **datazione** evidenzia che non può essere in corso un'attività d'**assegnazione** che li riguardi e quindi essi siano rimasti in quest'area a causa di attività non condotte a termine. |
- Il server che riceve un documento da salvare, che si tratti di inserimento o modifica, ne verifica i contenuti e stabilisce quali identificatori di allegati si riferiscano a files che si trovano o meno in //area di parcheggio//. Quando avrà deciso [[|dove compiere il salvataggio del documento XML]] sposterà presso di esso tutti gli allegati referenziati rimuovendo quindi quelli ancora in //area di parcheggio// e posizionandoli doverosamente. | |
| |
Esiste quindi uno scollamento temporale tra il momento in cui l'applicazione invia gli allegati al server perché associ ad essi((Per la precisione alla copia che eXtraWay trattiene presso l'archivio)) un identificatore univoco ed il momento in cui gli allegati inviati vengono effettivamente associati al documento, momento che corrisponde al salvataggio dello stesso.\\ | Nella precedente affermazione si è volutamente usato il condizionale in quanto l'unica **garanzia** che questo avvenga può darcela l'**engine** ed è per questo che esiste una **specifica** ''[[#come_posso_rimuovere_gli_allegati_non_associati|procedura di eliminazione degli allegati non assegnati]]'' |
Va da se che molte cose possono avvenire tra questi due momenti. L'operatore può rinunciare a salvare le modifiche effettuate oppure il contenuto del documento è incompleto o replicato e quindi il sistema si rifiuta di salvarlo o una qualsiasi altra attività simile.\\ | |
In ogni caso se la seconda attività, quella di effettiva assegnazione di un allegato ad un documento, non ha luogo l'allegato che si trova in //area di parcheggio// non sarà più utilizzato da alcun documento ne il suo numero univoco potrà essere recuperato.\\ | |
Potremmo quindi asserire che i files presenti in area di parcheggio che presentino una denominazione del tipo\\ | |
<numero in 6 cifre>.<estensione del documento> | |
si possano rimuovere una volta che la loro datazione evidenzia che non può essere in corso un'attività d'assegnazione che li riguardi e quindi essi siano rimasti in quest'area a causa di attività non condotte a termine.\\ | |
Nella precedente affermazione si è volutamente usato il //condizionale// in quanto l'unica garanzia che questo avvenga può darcela l'engine ed è per questo che esiste una specifica [[#come_posso_rimuovere_gli_allegati_non_associati|procedura di eliminazione degli allegati non assegnati]]. | |
| |
=== Come posso rimuovere gli allegati non associati === | === Come posso rimuovere gli allegati non associati === |
| |
Come annunciato nel capitolo inerente [[#perche_vi_e_un_proliferare_di_files_nella_directory_nomearchivio_.file|l'area di parcheggio]] in essa possono trovarsi files che si aveva l'intenzione di associare a documenti del database ma che sono rimasti inutilizzati. Per assicurarsi di rimuovere __solo ed esclusivamente__ quelli che non risultano referenziati da alcun documento è stata implementata una [[documentazione_3di:extraway_os:manuali:rmattach|procedura automatica che svolge quest'attività in modo sicuro]]. | Come annunciato nel **capitolo** inerente ''[[#perche_vi_e_un_proliferare_di_files_nella_directory_nomearchivio_.file|l'area di parcheggio]]'' in essa possono trovarsi **files** che si aveva l'intenzione di associare a documenti del **database** ma che sono rimasti inutilizzati. Per assicurarsi di rimuovere __solo ed esclusivamente__ quelli che non risultano referenziati da alcun **documento** è stata implementata una ''[[tecnici:prodotti_e_servizi:extraway_platform_server:procedure_rimozione_allegati_documenti|procedura automatica che svolge quest'attività in modo sicuro]]'' |