Quando un fornitore vi presenta la sua soluzione per l'analisi dei dati, sicuramente non scorda di qualificarla: "in-memory".
Effettuare il processo di analisi, con tutti i dati già caricati in memoria centrale, è infatti sinonimo di rapidità di navigazione sui dati di sintesi: tutti i grandi marchi che operano nella Business Intelligence hanno adeguato i loro prodotti a questo slogan.
Fino a non molto tempo fa, questa soluzione era limitata da vincoli tecnici: lo spazio di indirizzamento dei sistemi commerciali era a 32 bit, e la disponibilità di RAM era ben lontana da quella odierna. Anche le prestazioni di elaborazione sono migliorate, grazie ai sistemi multi-core, ed a più sofisticate tecniche per il multi-tread. Chi, in quegli anni, ha progettato prevedendo l'abbassamento del costo di RAM e processori (che poi si è verificato), ha sicuramente giocato la carta giusta.
"In memory"significa che l'applicazione memorizza l'intero insieme dei dati, su pagine di memoria virtuale, così da averli "a portata di mano" per i conteggi che l'analista di volta in volta richiede.
Per la verità, i diversi prodotti di analisi dati, portano in memoria cose diverse: può essere una “nuvola” di dati, legati solo da associazioni referenziali, oppure dati già strutturati come ipercubo; anche se la velocità di navigazione è comparabile, queste differenze hanno conseguenze sulla flessibilità del sistema, e sui tempi di implementazione.
Ma piuttosto di entrare nel merito di queste differenze, vorrei fare con voi l'avvocato del diavolo, e riflettere sugli eventuali limiti dell'analisi “in-memory”.
Vi confesso, infatti, che la prima volta che mi parlarono di analisi "in memory" (negli anni '90), ebbi un senso di orrore: "Ma come ?" mi dissi "Tutti sanno che non è quello il posto dove mettere i dati !".
Il posto giusto, è nei DataBase. Solo lì sono sincronizzati (sempre che le applicazioni facciano le "commit" come si deve). Solo lì sono protetti (sempre che il DBMS scriva i log come si deve). Solo lì sono certificabili (sempre che il DBA abbia fatto il suo dovere).
L'idea che il programma di Business Intelligence dovesse prendersi la briga di raccogliere dati in giro per i dischi, per poi ricopiarli in un posto diverso, rendendoli persistenti, come passaggio preliminare obbligatorio per iniziare l'analisi, mi suonava come una bestemmia alla faccia dei signori Codd e Date, e dei loro ottimi principi sulla logica relazionale.
Ma c'erano aspetti anche peggiori...
Per esempio: questi dati, nelle pagine di memoria virtuale, si trovano in strutture proprietarie, accessibili solo dal programma di Business Intelligence che li ha generati, senza rispettare nessuno standard.
E ancora: quando il documento viene aperto, per effettuare l'analisi, quei dati vanno a tappezzare la memoria virtuale del nostro sistema; se un secondo documento utilizzasse dati simili, non farebbe nessun riutilizzo dei dati predisposti -con gran dispendio di RAM- dal primo.
Ma l'aspetto decisivo, a sostegno del mio disappunto, era che quei dati erano inesorabilmente vecchi.
E' stato più tardi, con l'esperienza pratica (soprattutto con dati molto numerosi), che mi sono stati più chiari i vantaggi della tecnica "in-memory".
Due parole sul tempo: una dimensione per molti aspetti misteriosa, e -per noi informatici- intrigante. Tralascerò le riflessioni filosofiche, che pure meriterebbero ben più attenzione di quella che abitualmente riserviamo, per restare sul tema dell'analisi "in-memory".
Cominciamo a distinguere se la nostra analisi riguarda il passato, il momento attuale, oppure se intende prevedere il prossimo futuro.
Bene: tutte le analisi che -nelle intenzioni- hanno per oggetto il momento attuale, scivolano istantaneamente nel passato; per i diversi analisti che devono scambiarsi le loro osservazioni, diventa importante mettersi d'accordo sul momento del passato da prendere come riferimento comune.
E’ subito evidente che è indispensabile ragionare "a bocce ferme"; il più delle volte viene preso come riferimento la situazione che c'era nel corso della notte appena trascorsa. Ed è una ortuna, perché la notte è anche il momento ideale per far elaborare l'intero processo di estrazione dei dati dai database.
In altri casi, questo momento è la fine del mese, o la fine di un esercizio contabile; in ogni caso il processo di estrazione, necessario all'analisi "in memory", si sposa perfettamente con il requisito di identificare con precisione in momento in cui si riferiscono i dati oggetto dell'analisi.
Un "Report on-line" non sarebbe altrettanto preciso: il vantaggio di presentare dati "freschi", verrebbe vanificato dall'ambiguità sulla loro posizione rispetto ai processi aziendali (a domande del tipo: "Ma in questo report, quell'ordine c'è o no ?", saremmo in difficoltà a dare una risposta immediata).
In alcuni casi (per fortuna, rari), è richiesta l'analisi "real time", ed ogni modifica alla banca dati deve poter essere analizzata immediatamente. Occorre predisporre dei trigger, attivati da specifici eventi, per aggiornare immediatamente la nuvola. Anche in questi casi, l'aver evitato il passaggio dal "DataWarehouse", aggiornando i dati direttamente in memoria, riduce a complessità del sistema.
Il tempo, nell'analisi dei dati, è rilevante anche come misura dell'evoluzione dei processi oggetto d'analisi. Ad esempio, l'andamento del livello di giacenza nel tempo, è estremamente utile quando analizziamo le scorte di magazzino, ma si tratta di dati che difficilmente troverete nella banca dati di partenza. Nel sistema gestionale, infatti, troviamo descritte tutte le movimentazioni di magazzino, ma l'effetto sulla rimanenza va calcolato "al volo". Anche l'andamento, nel tempo, dei parametri relativi al ciclo attivo (ordini, spedizioni, tempi di evasione, ecc.) è una informazione derivabile dai dati presenti nel sistema gestionale (righe d'ordine, con le date di inserimento, e di evasione), ma nessun sistema gestionale storicizza il livello del portafoglio ordini, nel tempo: questa è una informazione da calcolare "al volo". Il conteggio risulterà ragionevolmente veloce, solo se il sistema di Analisi Dati è predisposto ad effettuare rapidamente un gran numero di operazioni, su un gran numero di elementi, cioè se lavora "in memory".
Abbiamo visto che il processo alla base dell'analisi "in-memory", (lo snap shot e clonatura dei dati oggetto d'analisi, ed il loro posizionamento all'interno della memoria virtuale), è coerente con le necessità di qualificazione del tempo di riferimento dei dati. In pratica, però, presenta anche un grosso vantaggio: la flessibilità dell’analisi.
La possibilità di implementare attraverso prototipi, giungendo per approssimazioni successive alla configurazione finale del nostro strumento d'analisi, significa maggiore precisione nel raggiungimento dell'obiettivo, che -spesso- all'inizio del progetto si intravede appena.
In conclusione, la tecnica “in-memory”, determina un minor costo di implementazione, rispetto a soluzioni "classiche", basate su DataWareHouse ed Ipercubi. Non dimentichiamoci, però, che poi i dati devo essere gestiti con altrettanta tempestività, e questo può voler dire metter mano a qualche processo aziendale.
Scrivi commento
Lilly Sterling (venerdì, 03 febbraio 2017 00:29)
Right here is the right web site for everyone who really wants to find out about this topic. You understand a whole lot its almost tough to argue with you (not that I personally would want to�HaHa). You definitely put a brand new spin on a subject which has been written about for years. Excellent stuff, just wonderful!
Palmira Godwin (sabato, 04 febbraio 2017 08:07)
What's up colleagues, good paragraph and good arguments commented here, I am in fact enjoying by these.
Karol Engel (sabato, 04 febbraio 2017 14:47)
My brother suggested I may like this blog. He was once totally right. This post actually made my day. You can not consider simply how so much time I had spent for this information! Thanks!
Tammi Scheuermann (domenica, 05 febbraio 2017 03:19)
I think this is one of the most significant info for me. And i'm glad reading your article. But should remark on some general things, The web site style is wonderful, the articles is really excellent : D. Good job, cheers
Creola Schroyer (domenica, 05 febbraio 2017 12:35)
I simply couldn't depart your web site prior to suggesting that I actually loved the standard information a person provide to your visitors? Is going to be back steadily to inspect new posts
Lila Denk (domenica, 05 febbraio 2017 12:58)
I have read so many articles concerning the blogger lovers but this paragraph is actually a pleasant post, keep it up.
Kelsie Hermanson (lunedì, 06 febbraio 2017 04:58)
Thanks for every other informative website. Where else may I am getting that type of info written in such a perfect method? I have a venture that I'm simply now running on, and I've been at the glance out for such information.
Lavenia Aguinaga (lunedì, 06 febbraio 2017 05:58)
I really like your blog.. very nice colors & theme. Did you create this website yourself or did you hire someone to do it for you? Plz answer back as I'm looking to create my own blog and would like to find out where u got this from. thanks a lot
Kip Stockton (lunedì, 06 febbraio 2017 11:23)
Thanks for some other magnificent article. The place else could anyone get that kind of info in such an ideal approach of writing? I've a presentation subsequent week, and I'm on the search for such information.
Rosio Walworth (martedì, 07 febbraio 2017 10:46)
An intriguing discussion is worth comment. I think that you should write more on this subject, it might not be a taboo matter but generally folks don't speak about these subjects. To the next! Kind regards!!
Hyo Severino (giovedì, 09 febbraio 2017 06:58)
Hola! I've been reading your website for some time now and finally got the courage to go ahead and give you a shout out from Kingwood Texas! Just wanted to tell you keep up the great job!
Vania Serra (giovedì, 09 febbraio 2017 15:41)
Have you ever thought about including a little bit more than just your articles? I mean, what you say is valuable and all. But just imagine if you added some great visuals or videos to give your posts more, "pop"! Your content is excellent but with images and video clips, this blog could definitely be one of the most beneficial in its niche. Excellent blog!
Lee Dowless (venerdì, 10 febbraio 2017 05:08)
Thanks a bunch for sharing this with all folks you actually recognize what you are speaking approximately! Bookmarked. Please additionally consult with my site =). We will have a hyperlink trade arrangement among us