Pagine

mercoledì 13 ottobre 2010

Sistemi di Database

Premessa

I Database sono da sempre la mia passione.

Un database è, citando wikipedia, "un archivio strutturato in modo tale da consentire l'accesso e la gestione dei dati stessi (l'inserimento, la ricerca, la cancellazione ed il loro aggiornamento) da parte di particolari applicazioni software ad essi dedicate. Il database è un insieme di informazioni, di dati che vengono suddivisi per argomenti in ordine logico (tabelle) e poi tali argomenti vengono suddivisi per categorie (campi)".

In poche parole si identifica con questo termine una serie di dati immagazzinati in un computer: per fare degli esempi, è un database dalla semplice rubrica telefonica alla gestione di un magazzino, l'elenco delle fatture, l'elenco dei clienti di un hotel, le informazioni sui passaggi di un automobilista sotto le barriere telepass.... e così via dicendo.
Si può dire che il nostro mondo ormai non può più fare a meno dei sistemi di database!

Negli anni il concetto di database è stato ampliato e sviluppato in categorie di sistemi software che consentono la creazione, la modifica e la gestione in genere di database. Questi sistemi vengono chiamati Database Management System (DBMS).

Storia della organizzazione dei dati

Come risulta ovvio dalla premessa, le tecnologie che si sono sviluppate con gli anni dietro il concetto di database sono davvero molte.
Il primo problema fu trovare un sistema per organizzare le informazioni.

Inizialmente le applicazioni erano piuttosto semplici ed accedevano direttamente ai dati immagazzinati sul disco fisso secondo una logica pensata dal programmatore. Ovviamente ogni programmatore era libero di organizzare le informazioni come meglio credeva e questo creava molta etereogeneità e confusione nella gestione per la mancanza di standard.

Ben presto nacquero i primi sistemi di database semplici. Il primo in assoluto fu dbm creato dalla AT&T che supportava una struttura molto semplice sebbene altrettanto funzionale..

Tali strutture, però, crebbero in complessità in modo esponenziale e con essa il numero di persone che vi accedevano.
L'accesso diretto ai dati si rivelò presto carente e nacquero i DBMS "Database Managment System" ovvero sistemi che vennerò adibiti alla scrittura/lettura/modifica dei dati sul disco su richiesta di una o più applicazioni esterne.

Le strutture nell'organizzazione dei dati utilizzate furono diverse e si sono evolute nel tempo [fonte wikipedia]:
  1. gerarchica (rappresentabile tramite un albero e risalente agli anni sessanta),
  2. reticolare (rappresentabile tramite un grafo e risalente agli anni 70),
  3. relazionale (attualmente il più diffuso, rappresentabile mediante tabelle e relazioni tra esse e risalente agli anni settanta),
  4. ad oggetti (estensione alle basi di dati del paradigma "Object Oriented", tipico della programmazione a oggetti e risalente agli anni ottanta),
  5. semantica (rappresentabile con un grafo relazionale all'inizio del 2000).
Insieme alle strutture nacquero anche i linguaggi adibiti alla gestione delle stesse.
Senza dubbio uno dei linguaggi più conosciuti e noti è lo "Struttured Query Language" SQL.

Server di database, applicazioni database, librerie database

I sistemi di database ad oggi sono veramente molti.
La scelta della tipologia da adottare si basa sullo studio delle caratteristiche del sistema:
  • numero di utenti che deve supportare in lettura/scrittura,
  • numero di interrogazioni che avvengono contemporaneamente,
  • licenza utilizzata dal fornitore del sistema,
  • prezzo del sistema (nel caso di licenze proprietarie),
  • linguaggi che supportano il sistema,
  • richiesta o meno di personale specializzato,
  • esistenza o meno di applicazioni che sfruttano il sistema.
Queste caratteristiche devono esser prese in considerazione nel momento in cui si sceglie un sistema anzichè un altro. L'errore che spesso si commette, infatti è di comprare o comunque utilizzare un sistema sovradimensionato rispetto le proprie esigenze.

Tipicamente le tipologie di database ad oggi si dividono in tre grandi categorie:
  1. librerie di database: sono singole librerie supportate da pochi o tanti linguaggi ed applicazioni. Di solito si possono scaricare gratuitamente da internet oppure le si può trovare nativamente in alcune applicazioni.
    Nella maggior parte dei casi richiedono un carico in scrittura bassissimo (uno o due accessi contemporanei) sebbene possano spesso sopportare molte letture contemporanee. Estremamente agili e veloci, sono però carenti dal punto di vista della sicurezza e delle funzionalità.
    Esempi:
    • sqlite: un progetto davvero interessante, integrato in centinaia di applicazioni ed utilizzato da "grandi nomi" quali Mozilla, Symbian ed Adobe. E' un progetto opensource.
    • dbm: una delle prime tecnologie pre-relazionali
  2. applicazioni personali/ufficio: sono applicazioni che includono, oltre la gestione dei dati, anche un sistema di interfaccia, reportistica ed interrogazione molto variegato. Solitamente vengono utilizzati per piccoli database (qualche milione di righe al massimo) e piccoli carichi in lettura (10 o 20 al massimo) e scrittura (5 o 10 contemporanei). Hanno il vantaggio di integrare molti strumenti in un unico software sebbene la gestione dei dati lasci solitamente a desiderare. Questo permette, a fronte di un piccolo investimento, la possibilità di gestire piccoli basi dati in maniera estremamente efficiente.
    Esempi:
    • MS Access: senza dubbio è l'applicazione più interessante in questo campo. Estremamente completa, integra un sistema di gestione dei dati che, sebbene sia poco efficente, viene affiancata da strumenti di creazione di maschere e report.
      Tutto ciò da la possibilità di progettare un'applicazione indipendente e un sistema di reportistica estremamente interessante.
    • OpenOffice Base: software opensource molto interessante. Sebbene sia nato per competere con MS Access, ad oggi sembra essere ancora molto lontano dal suo antangonista. E' comunque un progetto da tenere sotto occhio perchè promette bene.
  3. server database: sono applicazioni solitamente più articolare che integrano funzionalità avanzate (come i trigger o le stored procedure) e consentono l'accesso di centinaia se non milioni di accessi in lettura/scrittura contemporanei.
    Esempi:
    • Fascia alta: Oracle Db ed IBM AS400 sono tra i sistemi più performanti, completi, professionali che ci siano sul mercato. Sfortunatamente sono anche complessi (richiedono amministratori competenti e specializzati) e piuttosto costosi.
    • Fascia medio/bassa: MS SQL Server, Postgres SQL, MySQL sono tre ottimi sistemi. Il primo proprietario mentre gli altri due open source. Tipicamente più semplici da utilizzare (sebbene una certa competenza sia auspicabile) sono l'ideale per la piccola/media impresa ma anche per il privato che vuole sviluppare una applicazione sicura con sistemi di backup efficienti.

Conclusioni

Da questo articolo si evince che la scelta disponibile nell'utilizzo di un sistema di database è veramente ampia.
Ci sono sistemi per ogni esigenza.
Se si vuole creare una piccola rubrica o la gestione di un magazzino o della fatturazione di un piccolo ufficio è possibile utilizzare MS Access.
Se si desidera creare un negozio online dove una o due persone aggiungono i prodotti e decine di persone li visionano quotidianamente si può scegliere sqlite o Mysql.
Per applicazioni aziendali in società medio/grandi (400-2000 dipendenti) è auspicabile scegliere Postgres o SQLserver.
Se al contrario si desidera supportare operativamente una grande struttura, una banca o una grossa fabbrica, la scelta obbligata ricadrà su Oracle o As400.

Nei prossimi articoli scenderò un po' nel particolare nel favoloso mondo dei database ed in particolare mi dilungerò sulla mia ultima passione: sqlite!

Nessun commento:

Posta un commento