Applicazioni e requisiti

Completato

Le applicazioni possono gestire i dati in molti modi. Alcune applicazioni fungono da sistemi di archiviazione e recupero dei dati. I dati possono essere archiviati per diversi motivi. Il software di backup archivia i dati utente tramite snapshot, consentendo all'utente di ripristinare lo stato del computer e dei file in caso di errore hardware o eliminazione accidentale. I siti Web di grandi dimensioni, ad esempio archive.org, effettuano una ricerca per indicizzazione nei siti Web più popolari e conservano uno snapshot per consentire agli utenti di visualizzare le versioni precedenti. Un rivenditore potrebbe voler archiviare le informazioni relative a ogni singola transazione a scopo fiscale e di contabilità.

Altre applicazioni recuperano i dati a supporto dei processi decisionali. Questo succede, ad esempio, nei sistemi di business intelligence. Un sistema di business intelligence può elaborare milioni di transazioni e ricavare informazioni sulle tendenze delle vendite. Il rivenditore può usare queste informazioni per prendere decisioni commerciali e relative alle scorte.

Le applicazioni possono anche estrarre informazioni per l'analisi. Google1, ad esempio, ha scoperto che le tendenze di ricerca di determinate parole chiave hanno una stretta correlazione con le visite dei medici per i sintomi di tipo influenzale.

I dati possono anche fornire un servizio. Questo avviene, ad esempio, con praticamente ogni tipo di servizio Web dinamico che risponde alle richieste degli utenti. Le istanze specifiche includono il software relativo a mappe e navigazione. Raccogliendo informazioni sugli indirizzi e sulle reti stradali, un sistema, ad esempio Google Maps, può rispondere alle query relative alle indicazioni stradali.

Requisiti delle applicazioni

Applicazioni diverse hanno requisiti diversi in relazione ai sistemi di archiviazione. Netflix, ad esempio, deve fornire video a larghezza di banda elevata a milioni di utenti in tutti i paesi/aree geografiche in cui opera. Ricerca Bing deve analizzare una query e recuperare risultati accurati entro un intervallo di tempo molto breve. In questa sezione si esamineranno brevemente i vari requisiti delle applicazioni in relazione ai sistemi di archiviazione:

  • Capacità: i sistemi Archiviazione devono essere in grado di gestire i requisiti di capacità per un'applicazione. Un sistema di archiviazione deve essere in grado di gestire l'intero volume dei dati necessari per l'applicazione e deve anche consentire un certo livello di scalabilità per soddisfare i requisiti a breve termine e futuri dell'applicazione.

  • Prestazioni: i sistemi Archiviazione devono essere in grado di gestire le aspettative delle applicazioni in caso di prestazioni. Tali requisiti possono essere classificati nelle categorie generali seguenti:

    • Latenza: il sistema deve rispondere alle richieste entro un determinato intervallo di tempo previsto. Nei sistemi Web questo requisito è piuttosto importante in quanto influisce direttamente sull'esperienza dell'utente.
    • Larghezza di banda: il sistema deve essere in grado di spostare i dati a una determinata velocità. Per le applicazioni che si basano su feed continui di dati (ad esempio i video), si tratta di una metrica cruciale.
  • Modelli di accesso: modelli specifici in cui un'applicazione accede ai dati può essere usata per progettare e implementare sistemi di archiviazione efficienti. In particolare, i modelli seguenti sono di interesse per i progettisti di sistemi di archiviazione:

    • Granularità dell'accesso: fa riferimento alla quantità minima di dati recuperati in un'operazione tipica. Il valore può variare da pochi byte a più megabyte, a seconda del tipo di applicazione.
    • Frequenza di accesso: si riferisce alla frequenza con cui si accede ai dati dal sistema. Se ci sono determinati elementi a cui viene eseguito l'accesso continuamente, è possibile ottimizzare i risultati tramite tecniche come la memorizzazione nella cache.
    • Località di accesso: si riferisce alla località spaziale e temporale. Un esempio di località è la distanza degli elementi dati quando vengono recuperati per l'applicazione. La località può essere considerata sia in termini di microlivello (distanza del vettore stride in un indice di matrice durante una moltiplicazione di matrici) sia di macrolivello (quale data center nel mondo deve rispondere a una richiesta utente specifica).
  • Durabilità: si riferisce alle aspettative dell'applicazione su come devono essere salvati in modo permanente i dati nel sistema.

  • Tolleranza di errore: la tolleranza di errore è un termine generico che indica diversi attributi di un sistema. Può essere descritta in base ai requisiti seguenti:

    • Affidabilità: se un particolare elemento dati viene segnalato come scritto da un sistema, può sempre essere recuperato dal sistema?
    • Disponibilità: esiste un determinato periodo di tempo in cui il sistema non risponde alle richieste? Con che frequenza succede? Ciò influisce sull'applicazione e cosa è possibile fare per ridurre al minimo l'impatto del tempo di inattività?
    • Accuratezza: quanto sono accurati i risultati restituiti dal sistema? Questa domanda può sembrare banale per un sistema semplice costituito da un unico archivio dati, ma se un sistema è distribuito con più copie degli stessi dati, può trattarsi di un problema molto significativo. Alcune applicazioni sono in grado di gestire i dati non aggiornati, mentre altre richiedono una risposta accurata ogni volta.
  • Sicurezza: quanto è necessario proteggere i dati quando vengono archiviati e accessibili dall'applicazione? È prevista la protezione da accesso accidentale o dannoso e/o da modifiche ed eliminazioni? Quali tipi di restrizioni di accesso è possibile imporre a utenti e applicazioni che accedono al sistema?

  • Provenance: processo in base al quale è possibile tracciare e registrare l'origine dei dati e il relativo spostamento tra sistemi di archiviazione. Per un'applicazione, è necessario poter tenere traccia di tutte queste informazioni? Per alcune applicazioni che gestiscono dati sensibili e/o riservati, si tratta di un requisito.

Questi requisiti determinano la progettazione delle applicazioni. Le applicazioni che richiedono grande capacità o scalabilità nel breve o nel lungo termine devono essere progettate di conseguenza. Come si vedrà in questo modulo, i sistemi di archiviazione che gestiscono grandi volumi di dati sono in genere troppo lenti o costosi per essere contenuti in un sistema monolitico. Vengono in genere distribuiti in più computer.

Se sono necessarie prestazioni avanzate, le scelte di progettazione propendono in genere per la memorizzazione nella cache o la replica. Questi sistemi sono progettati usando i modelli di accesso per determinare le strategie ottimali per migliorare le prestazioni. Per le applicazioni che servono i client su Internet, è possibile che vengano usati più data center per offrire prestazioni più veloci e migliorare l'esperienza utente reindirizzando gli utenti al server più vicino disponibile che ha i dati richiesti.

Per usare determinate tecniche di replica o memorizzazione nella cache, l'applicazione deve stabilire il livello di accuratezza o aggiornamento necessario per i dati recuperati dal sistema. Per alcune applicazioni possono essere adeguati anche dati non aggiornati, mentre altre richiedono dati estremamente accurati e aggiornati. Ciò influisce a sua volta sul livello di coerenza che il sistema di archiviazione deve fornire all'applicazione.


Riferimenti

  1. Ginsberg, Jeremy e Mohebbi, Matthew H e Patel, Rajan S e Brammer, Lynnette e Smolinski, Mark S e Brilliant, Larry (2009). Detecting influenza epidemics using search engine query data Nature