documentazione_3di_riservata:docway4:dw4-mongodb-elasticsearch
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
documentazione_3di_riservata:docway4:dw4-mongodb-elasticsearch [2021/01/19 09:56] – abarducci | documentazione_3di_riservata:docway4:dw4-mongodb-elasticsearch [Data sconosciuta] (versione attuale) – eliminata - modifica esterna (Data sconosciuta) 127.0.0.1 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
- | ====== DocWay4: Configurazione MongoDB/ | ||
- | |||
- | DocWay4 (e gli altri applicativi ad esso legati) supportano l' | ||
- | |||
- | Viene garantita (per quanto possibile) la piena compatibilità fra le 2 configurazioni (eXtraWay o MongoDB/ | ||
- | |||
- | Solo le funzionalità di eXtraWay richieste da DocWay sono state riportate sull' | ||
- | * Caricamento e salvataggio di documenti in base al numero fisico (assegnato da MongoDB); | ||
- | * Esecuzione di query in linguaggio nativo eXtraWay. Sono state fatte verifiche solo su query utilizzate su DocWay, non tutte le funzionalità di eXtraWay sono supportate (es. query su bacino di adiacenza); | ||
- | * Mantenimento delle selezioni derivanti da ricerca tramite cache applicativa. Questo significa che non esiste una unica cache condivisa da tutti gli applicativi, | ||
- | * Assegnazione di Seriali; | ||
- | * Gestione delle regole di univocità; | ||
- | * Gestione di gerarchie; | ||
- | * Vocabolari; | ||
- | * Gestione Thesauri (non tutte le relazioni supportate da eXtraWay, ma solo quelle richieste da DocWay); | ||
- | * Gestione file con salvataggio su Storage Server. Per ottimizzazione delle prestazioni non viene invocato il servizio REST dello Storage ma viene invocato il salvataggio dei file tramite codice JAVA (configurazione Storage Server su ogni applicativo). | ||
- | |||
- | ===== Requisiti ===== | ||
- | |||
- | Gli unici requisiti software richiesti dall' | ||
- | |||
- | * **MongoDB ver. 4.2.0** - Non è possibile utilizzare una versione precedente di MongoDB perché, per la gestione dei seriali sequenziali, | ||
- | * **Elasticsearch ver. 6.4.2** - Versione sulla quale è stato fatto lo sviluppo (corrispondeva alla versione più recente in fase di avvio della riscrittura del Broker); | ||
- | * **Storage Server**. | ||
- | |||
- | |||
- | ===== Progetti ===== | ||
- | |||
- | ^ Progetto | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | **[[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | [[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | **[[http:// | ||
- | | [[http:// | ||
- | | **[[http:// | ||
- | |||
- | |||
- | In grassetto sono indicate applicazioni che possono essere installate come webapp o processi sul server. | ||
- | |||
- | |||
- | ===== Configurazione ===== | ||
- | |||
- | ==== it.highwaytech.broker.properties ==== | ||
- | |||
- | Attraverso il file di properties del broker è possibile configurare il database da utilizzare: | ||
- | * eXtraWay; | ||
- | * MongoDB/ | ||
- | |||
- | Di seguito il set di properties da configurare per l' | ||
- | |||
- | < | ||
- | ################################################################### | ||
- | # Configurazione registrazione cancellazione record su eXtraWay | ||
- | ################################################################### | ||
- | |||
- | # Se abilitata vengono registrate le cancellazioni su extraway nella nuova ud delinfo che va aggiunta | ||
- | # ai conf di tutti gli archivi (true/ | ||
- | xway.enableDeleteRegister=false | ||
- | |||
- | ################################################################### | ||
- | # Configurazione MongoDB / Elasticsearch | ||
- | ################################################################### | ||
- | |||
- | mongoelastic.enable=false | ||
- | |||
- | # Possiblita' | ||
- | mongoelastic.index.async=false | ||
- | |||
- | ############## | ||
- | |||
- | # URI di connessione all' | ||
- | # | ||
- | mongodb.uri=mongodb:// | ||
- | |||
- | # Elenco di database supportati | ||
- | mongodb.dbs=xdocwaydoc, | ||
- | |||
- | # Definizione di eventuali alias di nomi di database. Tipicamente utilizzati dai 3diWS per apportare modifiche | ||
- | # "non consone" | ||
- | # Il formato di definizione e' il seguente: | ||
- | # dbalias.N=ALIAS_DBNAME|MONGODB_DBNAME | ||
- | # dove: | ||
- | # - N rappresenta il numero progressivo di definizione del path | ||
- | # - ALIAS_DBNAME rappresenta il nome dell' | ||
- | # - MONGODB_DBNAME rappresenta l' | ||
- | # Esempio: | ||
- | # dbalias.1=aliasdw4name|xdocwaydoc | ||
- | # dbalias.2=aliasaclname|acl | ||
- | |||
- | # Numero massimo di tentativi di esecuzione di un salvataggio in transazione in caso di conflitti dovuti ad | ||
- | # accessi concorrenti | ||
- | mongodb.transactions.max_attempts=100 | ||
- | |||
- | # Tempo di attesa (in millisecondi) fra 2 tentativi di accesso in transazione ad un documento (conflitto di accesso | ||
- | # al record fra thread concorrenti) | ||
- | mongodb.transactions.conflict_sleep=15 | ||
- | |||
- | # Lunghezza del codice di nrecord da associare ai record salvati | ||
- | mongodb.nrecord.length=10 | ||
- | |||
- | # Validita' | ||
- | mongodb.doc_lock.max_time=24 | ||
- | |||
- | ############## | ||
- | |||
- | # Elenco di host elasticsearch: | ||
- | elastic.hosts=127.0.0.1: | ||
- | elastic.threads.count= | ||
- | elastic.sniff=false | ||
- | # | ||
- | # | ||
- | elastic.connectionRequestTimeout=30000 | ||
- | elastic.maxRetryTimeout=30000 | ||
- | elastic.socketTimeout=30000 | ||
- | |||
- | # Gestione SSL | ||
- | # N.B.: In caso di abilitazione di xPack su SSL occorre configurare il keystore contenente il certificato per la connessione ai nodi di elasticsearch | ||
- | elastic.ssl=false | ||
- | # | ||
- | # | ||
- | # | ||
- | |||
- | # Definisce se occorre forzare il refresh dell' | ||
- | elastic.forceRefresh=false | ||
- | |||
- | # Directory all' | ||
- | # creata ed utilizzata una directory ' | ||
- | # | ||
- | # Tempo (in minuti) di sleep del thread di che si occupa di ritentare il salvataggio degli indici su Elasticsearch per i quali era stato | ||
- | # riscontrato errore (default = 1 min) | ||
- | elastic.indexErrorsJob.sleep=1 | ||
- | |||
- | # Configurazione della relazione fra un archivio eXtraWay e il relativo indice su Elasticsearch. Viene definito per ogni nome di archivio eXtraWay il nome (o alias) dell' | ||
- | # su Elasticsearch e l' | ||
- | # xway2elastic.[XWAY_DBNAME].indexName=[ELASTIC_INDEXNAME] | ||
- | # xway2elastic.[XWAY_DBNAME].mapping=[ELASTIC_INDEXNAME] | ||
- | xway2elastic.xdocwaydoc.indexName=xdocwaydoc | ||
- | xway2elastic.xdocwaydoc.mapping=it.tredi.xway2elastic.parser.DocWayDoc2Json | ||
- | xway2elastic.xdocwayproc.indexName=xdocwayproc | ||
- | xway2elastic.xdocwayproc.mapping=it.tredi.xway2elastic.parser.DocWayProc2Json | ||
- | xway2elastic.acl.indexName=acl | ||
- | xway2elastic.acl.mapping=it.tredi.xway2elastic.parser.Acl2Json | ||
- | |||
- | # Per ogni indice di Elasticsearch e' possibile definire un elenco di nomi di indici sui quali devono essere riportate tutte le operazioni di salvataggio e cancellazione. Utile | ||
- | # in fase di reindex a caldo in modo da garantire l' | ||
- | # le ricerche tramite scroll, quindi fa una fotografia dell' | ||
- | # xway2elastic.[ELASTIC_INDEXNAME].reindex=[ELASTIC_INDEX1], | ||
- | |||
- | #observer cleaning routine interval in secondi | ||
- | observersCheckIntervalSeconds=600 | ||
- | #eta massima in secondi dei observer con data della chiusura in secondi [6 ore] | ||
- | observersMaxAgeSeconds=21600 | ||
- | #eta massima in secondi dei observer senza data della chiusura in secondi [12 ore] | ||
- | observersEndedMaxAgeSeconds=43200 | ||
- | </ | ||
- | |||
- | Per abilitare l' | ||
- | |||
- | Nel caso si vogliano definire degli alias ai database definiti in ' | ||
- | |||
- | < | ||
- | dbalias.1=avepa|xdocwaydoc | ||
- | </ | ||
- | |||
- | L' | ||
- | |||
- | ==== mongodb.config.json ==== | ||
- | |||
- | File di configurazione di MongoDB attraverso il quale devono essere replicate le configurazioni eXtraWay relative a: | ||
- | * storage di File; | ||
- | * thesauri; | ||
- | * UD Type definite sull' | ||
- | * regole di univocità; | ||
- | * gestione di seriali. | ||
- | |||
- | === Configurazione Storage Server === | ||
- | |||
- | < | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | } | ||
- | </ | ||
- | |||
- | I principali parametri della configurazione sono i seguenti: | ||
- | * **mongodbUri** - URI MongoDB da utilizzare per la connessione allo Storage Server; | ||
- | * **database** - Nome del database associato allo Storage Server; | ||
- | * **filesystemRoot** - Percorso assoluto alla directory //montata// contenente i file caricati sullo storage. L' | ||
- | * **filesystemRelativePathSaveFormat** - In caso di DatabaseConfiguration.storageSaveFileLikeExtraway=false indica il format che dalla data corrente recuperata dal objectid del medium relativo all' | ||
- | * **mimeTypeAlwaysOctetStream** - Se impostato a true il mimetype viene sempre impostato a " | ||
- | * **mimeTypeOnlyByName** - Se mimeTypeAlwaysOctetStream=false e mimeTypeOnlyByName è impostato a true il mimetype viene ricavato dal nome del file; | ||
- | * **showSlowSaveAction** - Utilizzato per loggare eventuali salvataggi lenti di file sullo storage. Oltre a questo parametro occorre settare i timeout di slowSaveActionMillis e slowSaveActionByteForMillis. Il primo indicate il tempo limite impiegato per il salvataggio al di sopra del quale verificare il log dell' | ||
- | * **showSlowReadAction** - Simile a showSlowSaveAction, | ||
- | |||
- | === Definizione di Thesauri === | ||
- | |||
- | < | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | }, | ||
- | { | ||
- | " | ||
- | " | ||
- | } | ||
- | } | ||
- | ] | ||
- | </ | ||
- | |||
- | La porzione di JSON precedente mostra un estratto della configurazione dei Thesauri di eXtraWay su MongoDB. Di seguito alcune informazioni sulla configurazione: | ||
- | * **uniqueName** - Corrisponde al nome univoco associato al thesauro; | ||
- | * **database** - Nome del database MongoDB utilizzato per la registrazione dei thesauri; | ||
- | * **thesauroDefinitions** - Definizione del thesauro. I valori di questa sezione devono essere recuperati e allineati al file di configurazione dei Thesauri su eXtraWay (file //.dsp//, sezione // | ||
- | |||
- | <WRAP center round important 100%> | ||
- | **N.B.**: La gestione dei Thesauri non è stata implementata completamente su MongoDB. Sono state gestite le sole relazioni utilizzate in DocWay. | ||
- | </ | ||
- | |||
- | Per l' | ||
- | * la console eXtraWay (eXtraWay Tools) per l' | ||
- | * la console MongoDB/ | ||
- | |||
- | === Configurazioni del database === | ||
- | |||
- | < | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | }, | ||
- | ... | ||
- | { | ||
- | " | ||
- | " | ||
- | } | ||
- | ], | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | }, | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | } | ||
- | ], | ||
- | " | ||
- | " | ||
- | { | ||
- | " | ||
- | {" | ||
- | ] | ||
- | }, | ||
- | { | ||
- | " | ||
- | {" | ||
- | ] | ||
- | } | ||
- | ] | ||
- | }, | ||
- | { | ||
- | " | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | }, | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | } | ||
- | ], | ||
- | ... | ||
- | } | ||
- | ] | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | La configurazione del database prevede i seguenti parametri: | ||
- | |||
- | * **name** - Nome del database (identico al nome su eXtraWay); | ||
- | * **storageSaveFileLikeExtraway** - Indica se salvare gli allegati come faceva eXtraWay. Se true gli allegati verranno salvati come avveniva in extraway nelle cartelle cioè per un attachId 11232653.ext nel path filesystemRoot/ | ||
- | * **storageSaveFileLikeExtrawayPathOnRoot** - Percorso relativo dalla root del file system dello Storage Server Prefisso per la gestione dei file dell' | ||
- | * **uniqueIndexOnProxyCollectionForShardingXmlRecordCollection** - Necessario al calcolo del seriali in caso di sharding della collection XmlRecord. Se si pensa che il database dovrà essere configurato in sharding questa chiave deve essere impostata a TRUE dal primo istante, altrimenti può essere lasciata a FALSE (non vengono utilizzate le proxy collection per il calcolo dei seriali); | ||
- | * **thesauroConfigurations** - Thesauri utilizzati sul database; | ||
- | * **entityConfigurations** - Definizione delle entity utilizzate (UDType di eXtraWay) | ||
- | * **type** - Tipo di entity, corrisponde al valore di UD Type di eXtraWay; | ||
- | * **sequentials** - Definizione dei seriali di sequenza (per i quali non devono essere lasciati buchi nella numerazione) | ||
- | * **serials** - Definizione di seriali " | ||
- | * **uniqueRule** - Regola di univocità in formato eXtraWay | ||
- | * **unique** - Regola di univocità espressa in formato JSON per controlli su MongoDB | ||
- | |||
- | Di seguito vengono riportati i parametri di configurazione dei seriali: | ||
- | |||
- | * **path** - XPath XML associato al seriale; | ||
- | * **prefix** - Eventuale prefisso da assegnare al seriale (ad esempio PE per le Persone Esterne); | ||
- | * **length** - Lunghezza del seriale; | ||
- | * **required** - TRUE se il valore è richiesto sul documento, FALSE altrimenti (seriale opzionale); | ||
- | * **serialId** - Identificativo del seriale. | ||
- | |||
- | <WRAP center round important 100%> | ||
- | Se occorre impostare lo sharding sul database MongoDB è necessario impostare a TRUE il valore di **uniqueIndexOnProxyCollectionForShardingXmlRecordCollection**. Questa attività può essere fatta solo in fase di prima definizione dell' | ||
- | </ | ||
- | |||
- | |||
- | ==== elasticsearch.config.json ==== | ||
- | |||
- | Attraverso il file elasticsearch.config.json vengono configurate tutte le informazioni necessarie all' | ||
- | |||
- | < | ||
- | { | ||
- | " | ||
- | { | ||
- | " | ||
- | " |