documentazione_3di:extraway:then
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:extraway:then [2009/11/26 12:45] – rtirabassi | documentazione_3di:extraway:then [2012/07/23 15:42] (versione attuale) – eliminata rtirabassi | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
- | ====== Le selezioni in cascata ====== | ||
- | |||
- | La funzionalità di selezione in cascata((Disponibile a partire dal server eXtraWay versione 23.0.0.0 e successive)) consiste nella possibilità di esprimere, con una sola espressione di ricerca, più selezioni da compiere in sequenza potendo riflettere sulle successive l' | ||
- | |||
- | ===== Perché si usa ===== | ||
- | |||
- | Lo scopo della selezione in cascata è quella di semplificare il compito del server quando le operazioni sono complesse e ridurre l'// | ||
- | |||
- | Immaginiamo ad esempio di avere due unità informative distinte, // | ||
- | * Selezionare tutte le unità informative // | ||
- | * Selezionare tutte le unità informative // | ||
- | |||
- | In condizioni normali compiremmo la prima selezione di seguito esemplificata | ||
- | |||
- | '' | ||
- | |||
- | Questa selezione torna produce un semilavorato che è, ad esempio, '' | ||
- | |||
- | '' | ||
- | |||
- | Questo comporta l' | ||
- | |||
- | ===== Come su usa ===== | ||
- | |||
- | Abbiamo appena identificato le due diverse selezioni. Quello che ora ci serve sapere è che possiamo usare dei modificatori speciali della frase di ricerca che sono di seguito elencati: | ||
- | |||
- | ^ Modificatore ^ Descrizione ^ | ||
- | ^ <? | ||
- | ^ <? | ||
- | < | ||
- | |||
- | La precedente espressione verrà quindi tradotta come segue: | ||
- | |||
- | '' | ||
- | |||
- | In questo modo, il semilavorato della prima selezione viene automaticamente utilizzato per la risoluzione della seconda. | ||
- | |||
- | <color black/ | ||
- | |||
- | ===== Esempi e Dettagli ===== | ||
- | |||
- | I dettagli della sintassi da usare possono essere più evidenti con alcuni esempi: | ||
- | |||
- | ==== Esempio 1 ==== | ||
- | La frase di selezione... | ||
- | |||
- | '' | ||
- | |||
- | ... può essere espressa anche come... | ||
- | |||
- | '' | ||
- | |||
- | ...nel primo caso il semilavorato della prima selezione viene posto in AND con la seconda compiendone il raffinamento mentre nel secondo caso le due selezioni vengono compiute separatamente e poi combinate in AND portando, in sostanza allo stesso risultato. | ||
- | |||
- | ==== Esempio 2 ==== | ||
- | Analogamente la selezione espressa di seguito... | ||
- | |||
- | '' | ||
- | |||
- | ...è errata in quanto nella seconda parte della selezione si possono usare solo i semilavorati delle selezioni già compiute((Nel nostro caso solo <? | ||
- | |||
- | ==== Esempio 3 ==== | ||
- | In fine si noti come le espressioni... | ||
- | |||
- | ''< | ||
- | |||
- | ... e ... | ||
- | |||
- | ''< | ||
- | |||
- | ...siano di fatto corrispondenti in quanto il server provvede a // | ||
- | |||
- | ===== Considerazioni sulle performance ===== | ||
- | |||
- | ==== Introduzione ==== | ||
- | Risulta evidente sin dalla prima lettura, che questo sistema di selezione si applichi solo in casi piuttosto particolari ma no va esclusa la possibilità di farne uso per incrementare le performance di selezioni complesse.\\ Vale la pena di sottolineare alcuni aspetti: | ||
- | * Le performance in selezione sono tanto migliore quando le ricerche prevedono solo ed esclusivamente operatori AND((Ovvero di adiacenza)) oppure solo ed esclusivamente operatori OR. In questi due casi la selezione è quanto più possibile rapida. | ||
- | * Se la selezione non può essere espressa nel modo suddetto, la ricerca subisce un degrado prestazionale che è strettamente dipendente dal numero di chiavi coinvolte. Questo è vero sino a quando la ricerca non comprende operatori di negazione((NOT e NON)) o disuguaglianza((<> | ||
- | * Quando la ricerca espressa presenta operatori di negazione o disuguaglianza si ricade nel peggiore dei casi, ovvero nella selezione più gravosa che il server possa compiere. | ||
- | |||
- | Detto questo risulta evidente come la selezione... | ||
- | |||
- | '' | ||
- | |||
- | ...ricade nel secondo dei casi. Ricorrendo alla forma in cascata, potremmo avere... | ||
- | |||
- | ''< | ||
- | |||
- | ...che cambia completamente il proprio aspetto in quanto la <color green> | ||
- | |||
- | ==== I casi più complessi ==== | ||
- | Proviamo ora a vedere un caso lievemente differente, l' | ||
- | |||
- | '' | ||
- | |||
- | ...in questo caso, per poter frazionare la selezione secondo il criterio espresso avremmo... | ||
- | |||
- | '' | ||
- | |||
- | ...che apparentemente è identico al caso precedente ma ciò non è vero. In questo caso viene prima compiuta una ricerca in OR che potrebbe utilizzare catene di riferimenti molto lunghe e giungere a selezionare un elevato numero di documenti. Questo semilavorato, | ||
- | |||
- | '' | ||
- | |||
- | In questo modo la prima e la seconda selezione verrebbero eseguite molto rapidamente((In virtù della brevità della catena dei riferimenti del termine '' | ||
- | |||
- | ==== Conclusioni ==== | ||
- | L' | ||
- | - Esprimere condizioni in cascata che non sarebbero altrimenti esprimibili se non con una maggiore necessità di elaborazione sul fronte applicativo. | ||
- | - Esprimere selezioni che si potrebbero esprimere in modo // | ||
- | |||
- | Se nel primo caso questa forma di selezione è senza dubbio la migliore, la più indicata, nel secondo è opportuno che lo sviluppatore abbia piena cognizione di ciò che sta facendo ed una conoscenza approfondita dell' | ||
/data/attic/documentazione_3di/extraway/then.1259235944.txt.gz · Ultima modifica: 2017/09/08 10:58 (modifica esterna)