SlideShare a Scribd company logo
1 of 35
Download to read offline
Migrazione di basi di dati dall’ambiente
MS-Access all’ambiente MS SQL
Università degli Studi di Trieste
Azienda Alcatel-Lucent
Ferroni Fabio
Anno 2014/2015
Relatore: Chiar.mo Prof. Maurizio Fermeglia
Responsabile Progetto: Ing. Stefano Bonifacio
Indice
1. Introduzione
2. Problematiche
2.1 Da WinXP a Win7 64 bit
2.2 Access come RDBMS
2.3 Architettura db esistenti
3. Possibili soluzioni
3.1 Access 2007 back end – front end
3.2 Sql Server 2008
3.3 MySql
3.4 Confronto e prestazioni
4. Progetto DataBase ScioltiWDM
4.1 Interfaccia e Funzionalità
4.2 Stato dell'arte e Problematiche
4.3 Ristrutturazione
5. Conclusioni
1. Introduzione
Il seguente documento ha lo scopo di analizzare i principali
problemi e le possibili soluzioni adottate nella migrazione di basi di
dati dall'ambiente MS-Access '97 all'ambiente MS-Sql 2008; tale
analisi verrà impiegata nel medio/breve termine per coadiuvare le
scelte relative alla nuova struttura di gestione di database aziendale
presso l'azienda Alcatel-Lucent della filiale di Trieste.
La necessità di tale migrazione è nata in seguito al cessato supporto di
assistenza tecnica da Microsoft per WindowsXp che garantisce gli
aggiornamenti di sicurezza; lo standard aziendale è passato, dunque,
da un sistema operativo 32 bit, WindowsXp per l'appunto, a Microsoft
Windows Seven 64 bit.
Tale cambiamento ha causato degli impedimenti nel normale
funzionamento del sistema di basi di dati esistente; la difficoltà
principale si riferisce ad una incompatibilità nativa fra
MS-Access'97 e sistemi 64 bit.
La soluzione a tale problema è stata vincolata, per motivi di licenza,
all'utilizzo di MS-Access'07 in modalità Back End – Front End,
MySQL o Microsoft SQL Server 2008.
Il processo di analisi si è sviluppato per fasi, spesso sovrapposte, e
classificate in modo diverso a seconda dei diversi studi:
1
• Studio delle tecnologie
• Analisi di fattibilità
• Raccolta dei requisiti
• Progettazione
• Test
Non è stato possibile, tuttavia, effettuare il porting in produzione di
tutte le basi di dati aziendali in quanto, data la mole di dati da migrare
e la complessità con cui sono stati progettati i database esistenti, tale
operazione avrebbe richiesto ulteriore tempo, specialmente nella fase
di test.
E' stato scelto di dare un taglio verticale alle varie fasi, cioè gli
argomenti vengono raggruppati per attinenza e non per ordine
cronologico, tale scelta scaturisce dall'obbiettivo che ci si pone:
analizzare i pregi e i difetti dei suddetti tools non tanto in maniera
assoluta, quanto in relazione l'uno con l'altro, evidenziandone
prestazioni, affidabilità e scalabilità.
2
2. Problematiche
In questo capitolo si trattano le problematiche riscontrate,
tenendo conto solo di quelle inerenti al progetto dal punto di vista
tecnico; si ritiene che complicazioni in itinere di carattere
infrastrutturale piuttosto che organizzativo non siano rilevanti al fine
di questo tipo di analisi.
2.1 Da WinXP a Win7 64 bit
Dall'aprile 2014 Microsoft non garantisce aggiornamenti di
sicurezza per WindowsXp, la stessa azienda comunica:
Yes, Windows XP support is ending on April 8. After April 8, 2014, Windows XP
users will no longer receive new security updates, non-security hotfxes, free or
paid assisted support options, or online technical content updates from
Microsoft. Third parties may provide ongoing support, but it’s important to
recognize that support will not address fxes and security patches in the core
Windows kernel.
Windows XP and Ofce 2003 were great software releases more than a decade
ago, but technology has evolved along with the needs and expectations of your
customers and partners that have already adopted modern platforms and
devices. Companies still on Windows XP are also missing out on tangible
benefts of modernizing their IT investments from dramatically enhanced
security, broad device choice to meet the needs of a mobile workforce, higher
user productivity, and lower total cost of ownership by future-proofng their IT
3
investments. A 12-year-old operating system can no longer address today’s
business and technology needs nor security threats
[I]
.
Tale cambiamento ha portato ad adottare Windows Seven 64 bit come
standard aziendale.
All'upgrade del sistema operativo ha avuto seguito l'upgrade dei tools
non più nativamente compatibili; con il sistema 64 bit, a titolo
d'esempio, si sarebbe reso necessario eseguire Access'97 come
amministratore, con gli evidenti problemi di sicurezza.
Il primo tentativo di risoluzione si è orientato, dunque, ad esportare
l'intera rete di database in Access'07.
2.2 Access come RDBMS
Per impostazione predefinita, i database creati in Access 2007
sono nel formato di file accdb, a cui in genere viene fatto riferimento
come al formato di file di Access 2007. Questo formato supporta
nuove caratteristiche, come i campi multivalore, le macro di dati e la
pubblicazione in Access Services. È possibile convertire i database
creati in Microsoft Office Access 2003, Access 2002, Access 2000 o
Access 97 nel formato di file accdb. È necessario ricordare, tuttavia,
che un database nel formato di file accdb non può essere aperto o
collegato utilizzando versioni di Access precedenti ad Access 2007.
Inoltre, il formato accdb non supporta la replica né la sicurezza a
livello utente[II]
, se si converte il file con estensione mdb nel nuovo
formato (file con estensione accdb), tutte le impostazioni relative alla
protezione a livello utente verranno eliminate automaticamente.
4
La migrazione dei database Access, dalla versione 97 alla 2007, ha
evidenziato chiaramente l’abbassamento prestazionale in termini di
perfomance.
Di seguito un'analisi delle possibili cause ed un elenco di soluzioni in
fase di test per riportare le prestazioni ad un livello accettabile.
CAUSE:
1. Naturale evoluzione della specie
Dallo sviluppo di Access 97 a quello del 2007 sono passati circa
10 anni. In questo lasso temporale l’hardware dei computer ha avuto
un incremento in termini di potenza di calcolo e di quantità di RAM,
oltre che di velocità del bus, di accesso ai dati ecc.. non indifferente.
Incremento evidenziato soprattutto con l’avvento di Windows Vista,
sistema operativo ricordato proprio per il suo massivo consumo di
risorse. Quindi la configurazione standard per uso ufficio, definita da
Microsoft, è passata da una CPU Pentium 4 / Pentium 4 HT a
processori Dual/Quad core e da un quantitativo di memoria RAM di
512 MB alla soglia dei 4GB (Limite che poi ha spinto lo sviluppo dei
processori a 64 bit per poter supportare quantitativi maggiori).
2. Interfaccia grafica.
L’interfaccia grafica è passata da sottile e minimale ad una
piena di colori, effetti transazionali, menu a scomparsa, Ribbon e
Quick Access Toolbar.
Come in tutta la serie Office, Microsoft ha modificato radicalmente
l’interfaccia, influendo sul carico computazionale dei pc.
5
3. Il motore Database Engine JET.
Il motore JET non è sviluppato e pensato per un utilizzo in rete.
Questo è quanto si legge su alcuni KB (Knowledge Base) della
Microsoft. Questa sua natura fa si che ad ogni richiesta di esecuzione
di una query, di una procedura vba, di una semplice lettura o scrittura
su una tabella, il flusso dati che transita da Access attraverso le varie
maschere alle tabelle del database è enorme.
Sommando a questo l’utilizzo contemporaneo del database da n utenti,
le performance ne risentono parecchio.
POSSIBILI SOLUZIONI:
1. Naturale evoluzione della specie.
Dalle prove fatte si è visto che sui pc con almeno 4 GB di RAM,
la situazione è un po’ meno tragica. Grazie al passaggio a Windows 7,
con il conseguente rinnovamento del parco macchine, si dovrebbe
trarre benefici dall’adeguamento tecnologico, andando così a ridurre il
gap prestazionale tra le applicazioni sviluppate in Access 97 e le
nuove in formato 2003/2007.
2. Interfaccia grafica
Per questo punto purtroppo c’è poco da fare, è una modifica
fatta e voluta da Microsoft, ma anche qui il rinnovamento tecnologico
non può che aiutare.
6
3. Il motore Database Engine JET.
I consigli ufficiali Microsoft indicano di sviluppare, in un
contesto di rete, sempre e comunque applicativi con logica client
server. Da prove eseguite, si è notato come lo sviluppo di
un'applicazione esterna in VB.NET che preleva il database da una
repository centrale e lo copia in locale sui vari pc, ha dato
miglioramenti evidenti rendendo l’attività lavorativa accettabile.
Si tenga presente che il passaggio alla versione 2007 ha aumentato
drasticamente l’incidenza di database corrotti anche a distanza di
pochi giorni l’uno dall’altro. E’ stato previsto quindi, sempre
all’interno dell’applicativo VB.NET un controllo sull’apertura del
database, ed in caso di errore, l’applicativo provvederà a scaricare una
nuova copia del db dalla repository di rete.
Infine l’applicativo VB.NET prevede anche un controllo sulla
versione del database e provvede ad aggiornarlo in caso di upgrade.
PROBLEMI NOTI NON RISOLTI:
Rimane il problema della dimensione dei database, che in
versione 2003/2007 crescono a dismisura eseguendo query di
modifica.
Il problema purtroppo non è risolvibile se non tramite work-around, in
quanto ci si scontra proprio con un voluto blocco fisico/strutturale dei
file mdb che non possono superare i 2GB di grandezza.
L'aumento delle dimensioni dei database è dato dal fatto che lo spazio
allocato per i record in Access 2007 è maggiore rispetto a quello
allocato in Access '97, quindi eseguendo query di modifica ( INSERT,
UPDATE, DELETE ), lo spazio liberato rimane inutilizzato fin
7
quando non viene eseguita una compattazione; le attività aziendali
impongono un forte utilizzo di operazioni di cancellazione, update o
inserimento e questo comporta la necessità di effettuare compattazioni
ogni 3 giorni circa, dal momento che i 2GB di grandezza massima dei
database viene esaurito molto velocemente.
2.3 Architettura db esistenti
La struttura di base di dati esistente si presenta complessa;
gli oltre 470 database sono stati realizzati quasi totalmente in
Access'97 e sono stati progettati per un carico di lavoro di un paio di
ordini di grandezza inferiore al lavoro che effettivamente svolgono;
la dimensione massima di un file mdb, inoltre, è di 1 GB, tale
limitazione ha vincolato le scelte implementative portando ad avere
tabelle ripetute, assenza di relazioni fra tabelle e un massiccio utilizzo
di codici VBA.
8
Collegamento basi di dati
9
3. Possibili soluzioni
I tentativi di risoluzione ai problemi analizzati nel capitolo
precedente hanno reso necessario il passaggio ad un gestore di
database diverso dall'Access '97.
Per valutare la bontà dei tools a disposizione è stato seguito un
approccio prettamente pratico, basato sull'analisi e sul monitoraggio
del funzionamento dei database esistenti, nella seguente maniera :
. Analisi di compatibilità : Valutazione delle caratteristiche dei tool
riportate dalla Software House mettendole in relazione con le
necessità aziendali.
. Virtualizzazione : Creazione di un ambiente operativo virtuale su cui
effettuare dei test.
. Modifica del codice : Aggiornamento del codice VBA e, dove
possibile, sostituituzione con codice SQL.
10
3.1 Access 2007 back end – front end
Contrariamente a quanto ci si potrebbe aspettare, la migrazione
dei database da Access '97 alla versione 2007 non è stata
completamente indolore;
la conversione, mediante gli strumenti di conversione nativi, ha
evidenziato problematiche più gravi del previsto, in ordine di
importanza:
1. Con Access 2007, Microsoft ha incrementato le dimensioni dei
database fino ad un max di 2GB, ciononostante si è notato che le basi
di dati tendono a crescere molto più velocemente di come facevano
con Access'97.
Alcune possibili cause:
. MS Access è un tool file-based non transaction-based.
. Le Query, specialmente quelle che richiedono grandi risorse,
occupano molto spazio che non viene recuperato fin quando
non si effettua la compattazione del database
. Locktypes, cursortype e cursorlocation in ADODB possono
occupare molte risorse se intensamente utilizzati.
11
. Funzioni DAO.
. Come per le query, la creazione di oggetti ( maschere, report,
form etc ) occupa spazio che non verrà recuperato fino alla
compattazione.
2. Per la sicurezza a livello utente in Access 2003 e versioni
precedenti viene utilizzata una combinazione di password e
autorizzazioni, ovvero un insieme di attributi che specifica il tipo di
accesso consentito a un utente ai dati o agli oggetti del database. È
possibile impostare password e autorizzazioni per singoli utenti o
gruppi di utenti. Queste combinazioni di password e autorizzazioni
diventano account di sicurezza che definiscono gli utenti e i gruppi di
utenti ai quali è consentito l'accesso agli oggetti del database. La
combinazione di utenti e gruppi di utenti è a sua volta nota come
gruppo di lavoro, le cui informazioni vengono memorizzate da Access
in un file di informazioni sul gruppo di lavoro stesso. All'avvio, il file
di informazioni sul gruppo di lavoro viene letto da Access che applica
le autorizzazioni in base ai dati contenuti nel file.
Come scelta voluta da parte di Microsoft, tale tipo di sicurezza si è
persa con il passaggio dai formati mdb a accdb.
3. Nell'utilizzo client-server i metodi della classe
System.IO.Filestream non sono riconosciuti come validi;
nel nostro caso si sono trovate incongruenze con i metodi .seek e
.index.
12
3.2 Sql Server 2008
L'edizione di MS Sql che andremo ad analizzare è la Enterprise
2008, la versione completa della suite MS-SQL.
SQL Server 2008 Enterprise Edition è una piattaforma completa di
gestione dei dati e Business Intelligence, che assicura caratteristiche di
fascia enterprise per la scalabilità , il data warehousing, l'analisi
avanzata e la protezione delle applicazioni business-critical. Questa
edizione rende possibile consolidare i server ed eseguire operazioni
OLTP (Online Transactional Processing) e reporting su larga scala.
Le principali caratteristiche di questo tool sono le seguenti:
.Disponibilità elevata. Garanzia di continuità delle attività di
business, grazie a tecnologie in grado di proteggere i dati da
errori umani e di ridurre al minimo i tempi di inattività per le
operazioni di ripristino di emergenza.
13
•Prestazioni e scalabilità. Implementazione di un'infrastruttura
dall'efficacia comprovata per la gestione di grandi volumi di
dati e degli elevati carichi di lavoro delle grandi organizzazioni.
•Protezione. Rispetto dei requisiti di privacy e conformità e
disponibilità di funzionalità integrate per la protezione dei dati
dall'accesso non autorizzato.
•Gestibilità. Gestione dell'infrastruttura per mezzo di
funzionalità automatiche di diagnostica, ottimizzazione e
configurazione che abbattono i costi operativi, riducendo le
operazioni di manutenzione e consentendo la gestione di grandi
quantità di dati.
•Business Intelligence. Semplicità di esecuzione di query e
analisi di grandi quantità di informazioni nei data warehouse e
data mart per ottenere informazioni di business traducibili in
azione[III]
.
TRANSACT-SQL
La caratteristica che differenzia principalmente Sql Server dagli
altri DBMS è il TSql.
In informatica Transact-SQL ( T-SQL ) è l'estensione proprietaria del
linguaggio SQL sviluppata da Microsoft e Sybase.
Transact-SQL espande le prestazioni di SQL aggiungendo:
•Funzioni per controllo di flusso;
•Possibilità di definire variabili locali.
14
•Varie funzioni per la manipolazione di stringhe, date, espressioni
matematiche.
•Miglioramento delle istruzioni DELETE e UPDATE.
3.3 MySql
MySql offre, come SQL Server, delle edizioni gratuite e altre
coperte da licenza; in questo documento riteniamo utile analizzare la
versione Enterprise di MySql, cioè la versione a pagamento;
tale considerazione deriva dal fatto che in nessun modo la versione
freeware di MySql potrebbe essere utilizzata in ambito aziendale per
le evidenti limitazioni a cui si andrebbe incontro.
MySQL o Oracle MySQL è un Relational Database Management
System (RDBMS) composto da una parte client e una server.
Le caratteristiche di questo tool possono essere riassunte nei seguenti
punti:
. Scalabilità e flessibilità: MySQL ha la capacità di integrarsi
15
con applicazioni le cui dimensioni non superano pochi MB,
fino ad enormi data warehouse contenenti terabyte di informazioni.
La flessibilità di piattaforma è una funzionalità chiave di MySQL,
che è in grado di supportare Linux, UNIX e Windows. Inoltre la
natura open source di MySQL consente di personalizzare il server
database.
. Prestazioni : L’architettura storage-engine consente di
configurare il server di MySQL per applicazioni specifiche, per
mezzo di utility di caricamento dati ad alta velocità, le cache
specializzate, gli indici full text ed altri meccanismi di
aumento delle prestazioni.
. Supporto delle transazioni: Le funzionalità di MySql
includono il supporto per transazioni ACID (Atomic,
Consistent, Isolated, Durable), lock a livello di riga, gestione
delle transazioni distribuite e supporto per transazioni
multiversione in cui chi legge non blocca mai chi scrive e
viceversa. L' integrità dei dati è garantita anche dall’integrità
referenziale controllata dal server, dai livelli di isolamento delle
transazioni specializzate e dall’individuazione dei deadlock.
. Protezione dei dati: L’autenticazione del database
assicura la possibilità di verificare gli utenti fino al livello
macchina client.
MySql supporta protocolli SSH e SSL che garantiscono la
sicurezza delle connessioni.
Le utility di backup e ripristino fornite da MySQL e da software
di terze parti consentono di eseguire il backup fisico e logico
16
completo, così come il ripristino completo e point-in-time.
3.4 Confronto e prestazioni
Il confronto che intendiamo effettuare è impostato sulla ricerca
di affidabilità, sicurezza, velocità e semplicità di utilizzo.
A parità di caratteristiche si terrà conto dei costi di licenza.
Da quanto emerso dal capitolo precedente si ritiene inutile includere
nel suddetto confronto Microsoft Access 2007 in quanto inadatto ad
una realtà aziendale.
Schematizzando:
Caratterstiche MS-Sql Server MySql
Sistema operativo Windows Windows, Linux,
Unix, Mac
Drivers Gia presenti No
Drivers ODBC, JDBC,
ADO.NET
Si Si
OleDb Si No
Viste di sola lettura Si Si
Prodotti opensource
associati
Pochi
(codeplex, .net)
Molti
Viste Aggiornabili Si, anche attraverso
Triggers
Si, non supporta l'uso
dei Triggers per
l'aggiornamento delle
17
viste
Viste indicizzabili Si No
View designer grafico Si No
Campi calcolati Si No
Indici basati su
funzioni
No – ma è possibile
creare campi calcolati
e creare un indice su
di essi
No
A.C.I.D Si Solo alcuni motori di
archiviazione – es.
InnoDb si, MyIsam
no
Chiavi esterne,
DELETE/UPDATE in
cascata
Si InnoDb si, MyIsam
no
Inserimento multi-riga Si Si
Stored procedures/
funzioni
Si, nativamente Si, terze parti
Triggers Si Si
Set e Table returning
function che possono
essere utilizzate nella
clausola FROM
Si No
Tool di gestione
Grafico
Si, Sql menagement
studio
No
Accedere a tabelle da
altri database nello
stesso Server
Si –
server.db.schema.
Table
anche su altri server
Si – db.table, ma non
su altri server
Autenticazione Standard db security Standard db security,
18
e NT / Active
Directory
Authentication
controllo degli IP
WITH ROLLUP Si Si
WITH CUBE Si No
Schema Si No
CROSS APPLY Si No
COUNT(DISTINCT)
AGGREGATE(DISTI
NCT)
Si Si
Funzioni OVER …
PARTITION BY
Si No
Limiti Dimensioni
Database
No No
SQL Data Type[IV]
:
MS-Sql Server MySql
Boolean Bit N/A
Integer Int Int – Integer
Float Float – Real Float
Currency Money N/A
String ( fissa ) Char Char
String ( variabile ) Varchar Varchar
Binary object Binary – Varbinary –
Image
Blob - Text
19
4. Progetto DataBase ScioltiWDM
ScioltiWDM è uno dei circa 470 database ufficiali aziendali; si
occupa principalmente di monitorare le camere termiche, ovvero le
camere che testano il funzionamento delle schede hardware prodotte, a
temperature estreme.
4.1 Interfaccia e Funzionalità
Per obblighi di riservatezza concordati con i responsabili di
questo documento di tesi in azienda, non è possibile entrare troppo
nello specifico sul funzionamento dell'apparato produttivo; nel seguito
alcune funzionalità di ScioltiWDM verranno deliberatamente omesse,
altre non verranno spiegate e altre spiegate in parte; tale atteggiamento
non precluderà comunque la comprensione dell'attività svolta.
ScioltiWDM ha una struttura visuale abbastanza semplice, è composto
essenzialmente da 3 maschere :
. La maschera principale :
20
è composta da 3 sezioni disposte in verticale: la parte in alto permette
di scegliere il tipo di apparato, la parte centrale permette di avere
informazioni su una determinata scheda a partire dal codice ALU o
dal codice Telettra e la parte in basso che permettere di accedere alle
maschere secondarie.
. Maschera “Ricerca TRS Archiviati”:
Questa maschera serve per la ricerca di TRS archiviati partendo dalla
matricola; da, inoltre, la possibilità di stampare il documento o
inviarlo via mail.
Per TRS si intende una particolare formattazione di un report atta a far
risaltare gli errori avvenuti durante la catena di test.
21
. Maschera di gestione delle camere :
Questa maschera si occupa del monitoraggio delle attività delle
camere termiche; nell'area in bianco a destra sono elencate le schede
attualmente in fase di test nella camera 1, per ogni scheda viene
specificato il numero seriale, la data e l'ora in cui è iniziato il test e la
presenza o meno di errori.
4.2 Stato dell'arte e Problematiche
ScioltiWDM, come tutti gli altri database aziendali, è stato
costruito per rispondere a necessità di carattere marginale; nel corso
degli anni è stato modificato fino ad ottenere un ruolo fondamentale
nella produzione.
Tale approccio di sviluppo si riflette nella struttura del database:
i) Non esiste una progettazione concettuale ne una progettazione
logica, dunque non sono definite relazioni fra tabelle ne chiavi
primarie o esterne.
22
ii) Le tabelle sono ripetute :
Il prefisso “Arc” indica che si tratta di un archivio, “ALU”, “BA”,
“CC” etc indicano il reparto di competenza e il suffisso numerico
indica l'anno di riferimento.
Ad esempio la tabella Arc_EZ_00 è un archivio del settore indicato
con la sigla EZ dell'anno 2000.
Tutte le tabelle “Arc” hanno la stessa struttura, gli stessi campi e
svolgono lo stesso ruolo all'interno del database.
Il prefisso delle matricole indica la tabella e l'anno di appartenenza, ad
esempio una matricola del tipo EZ140000001 appartiene alla tabella
Arc_EZ_14.
Durante l'esecuzione di una query il codice VBA seleziona una tabella
facendo il parsing della matricola di riferimento e, quindi, creando le
relazioni fra le tabelle in maniera dinamica.
iii) Le query sono gestite da codice VBA e, nel codice, gli elementi
hanno conservato il nome di default assegnato da Access:
agli oggetti delle maschere ci si riferisce con nomi del tipo Elenco0,
Casella13 etc.
Di seguito è riportata la porzione di codice che gestisce il parsing delle
23
matricole:
Public Function Check_matricola(matricola As String) As String
Set tabella = arc.OpenRecordset("Struttura_Tabelle")
Struttura_Tabelle è una tabella che contiene informazioni relative agli
archivi presenti nel database; ogni record ha un campo Nome_tabella
e un campo Intestazione.
Il codice VBA analizza le matricole e verifica che la stringa 'matricola'
contenga una delle intestazioni presenti nella tabella
Strutture_Tabelle;
matr_EZ_Ok = True
If Len(matricola) <> 11 Then
Select Case Mid(matricola, 1, 2)
Case "BA"
temp = "Arc_BA"
Case "AL"
tabella.MoveFirst
i = 1
Do
If Mid(matricola, 1, 6) = tabella![Intestazione] Then
temp = tabella![nome_ tabella]
matr_EZ_Ok = True
Else
matr_EZ_Ok = False
End If
tabella.MoveNext
i = i + 1
24
Loop Until (matr_EZ_Ok Or i = num_tabelle + 1)
tabella.Close
If matr_EZ_Ok = False Then temp = "Arc_MIX"
Il parsing delle matricole avviene per mezzo della funzione Mid()
che ha come parametri la variabile matricola e l'intervallo da
esaminare; la variabile matr_EZ_Ok serve a verificare che il matching
matricola/tabella sia avvenuto, dunque il codice seleziona le prime 2
lettere della matricola e le compara con il campo intestazione della
tabella Struttura_Tabelle; nel caso in cui sia presente l'anno di
riferimento, il codice avvia un ciclo per eseguire un matching con i
primi 6 caratteri della matricola.
Se la tabella viene trovata, viene assegnato alla variabile temp la
stringa contenente il nome della tabella, altrimenti si fa restituire alla
funzione Check_matricola una stringa di errore.
La funzione Check_matricola viene richiamata nella fase preliminare
di tutte le operazioni di SELECT, DELETE e UPDATE dei record di
una qualsiasi tabella di archivio.
25
4.3 Ristrutturazione
La fase di ristrutturazione rappresenta uno stadio intermedio fra
quello che doveva essere una completa riprogettazione del sistema di
database e il vecchio sistema Access-based.
Tale fase si è resa necessaria a fronte di obblighi operativi che
includevano la non interruzione del servizio offerto da ScioltiWDM e
la necessità di avere un sistema funzionante dopo l'imminente
aggiornamento a Windows Seven;
si è proceduto, dunque, per soluzioni progressive che possiamo
raggruppare in 2 fasi:
• Rimozione delle ridondanze
• Migrazione della base di dati in SQL Server
I) Rimozione delle ridondanze:
In questa fase si è tentato di normalizzare la base di dati:
le 38 tabelle relative all'archiviazione sono state rimpiazzate da
un'unica tabella con la stessa struttura di campi adottata dalle
precedenti tabelle, è stato aggiunto il campo “Reparto” per distinguere
i vari reparti e, quindi le varie matricole, in cui si divide la catena di
produzione, il campo data è già presente quindi non è stato necessario
aggiungere un ulteriore campo per lo store degli anni di archiviazione;
un'operazione analoga è stata effettuata per le tabelle “Cicli”.
Sono state completamente rimosse o accorpate tabelle che presentano
un solo campo.
Sono state eliminate, inoltre, le tabelle che in tale fase hanno perso di
utilità, ovvero le tabella “Struttura_tabelle”, “Ricerca_matricole” ,
“Camera” , “Cerca” etc.
26
Dopo la fase I
Prima della fase I
Sono state aggiunte le chiavi primarie ed è stato realizzato il
diagramma delle relazioni.
Quasi tutte le tabelle non presentavano chiavi primarie naturali,
ovvero i campi necessitavano la ripetizione dei record, in queste
occasioni è stato aggiunto il campo Id.
27
II) Migrazione della base di dati in SQL Server
La migrazione in SQL Server 2008 è stata gestita con il tool
fornito da Access 2007; sotto la
scheda “Database Tools”, il wizard
abilita la creazione di un nuovo
database sul server, le tabelle
vengono spostate interamente in
back-end e le tabelle in front-end
puntano al server attraverso una
connessione ODBC.
28
5. Conclusioni
Anche se nella parte di progetto non è stato possibile coprire
tutti gli obiettivi posti all'attività di tesi, i seguenti aspetti sono stati
analizzati e completati compiutamente: l'analisi di fattibilità è andata
in porto con successo, il progetto, invece, che comprendeva la
migrazione di un database, è stata eseguita in parte:
. E' stato eseguito lo studio del codice sorgente e il
funzionamento delle varie maschere.
. E' stato realizzato il porting da Access '97 ad Access 2007.
. Sono stati individuati i principali errori di funzionamento del
del database migrato in ambito Client-Server.
. Sono stati corretti gli errori individuati nel punto precedente
nel 20% delle funzioni a titolo di esempio.
. E' stata effettuata la migrazione da Access 2007 a SQLServer
2008
. Sono stati effettuati test di funzionamento in mono-utenza e
multi-utenza.
. Non è stata completata la correzione degli errori e il porting in
29
produzione.
Ci riteniamo ugualmente soddisfatti dei risultati ottenuti; i tempi
misurati, seppur utilizzando come Server una macchina standard
aziendale, hanno riportato delle prestazioni ottime, uguali e in alcuni
casi migliori del DBMS attualmente in uso.
Il seguente grafico riporta le informazioni ottenute; sull'asse delle
ascisse è riportato il numero di misurazioni effettuate, sull'asse delle
ordinate il tempo calcolato in secondi delle suddette misurazioni.
Sono state effettuate un totale di 6 rilevamenti per ogni settore, il
migliore e il peggior tempo sono stati scartati, i restanti 4 tempi sono
rappresentati nel grafico sottostante; tale procedimento si è reso
necessario per minimizzare l'errore di misurazione effettuato
attraverso un cronometro digitale.
ScioltiWDM, il database utilizzato per i test, all'apertura effettua la
sincronizzazione di milioni di record prima di essere operativo, tale
operazione è la più pesante che effettua, per questo motivo si è
ritenuto opportuno misurare il tempo di operatività come modello di
valutazione precauzionale.
30
Come possiamo vedere dalla tabella sottostante, i tempi riportati dalle
diverse zone in cui si divide l'azienda sono più o meno omogenei
intorno ai 2 secondi, fatta eccezione per la zona P4 dove con Access
2007 si è toccato il picco di circa 24 secondi.
Dalle argomentazioni riportate in questo documento, ritengo che
SqlServer 2008 sia la scelta migliore per la futura migrazione.
Tale considerazione deriva da un'analisi completa fra ciò che è già
presente ( infrastrutture, database esistenti ), ciò che si vuole ottenere
31
1 2 3 4 5 6
0
5
10
15
20
25 Media
Access
Media SQL
Server
Misurazioni
Secondi
Zona Prima Seconda Terza Quarta Media Access
P1 1,82 2,01 1,93 1,71 1,8675
P2 1,78 2,31 2,21 2,36 2,165
P2 est 1,32 1,35 1,45 1,28 1,35
P4 23,81 21,97 22,89 22,38 22,7625
P4 ovest 3,42 3,82 4,12 3,58 3,735
P8 1,89 1,68 1,77 1,49 1,7075
Zona Prima Seconda Terza Quarta Media SQL Server
P1 1,45 1,87 1,65 1,65 1,655
P2 1,56 1,99 1,89 2,01 1,8625
P2 est 1,45 1,29 1,97 2,19 1,725
P4 7,11 7,21 8,34 8,23 7,7225
P4 ovest 2,25 2,04 2,34 2,91 2,385
P8 1,89 1,25 1,71 1,65 1,625
( funzionamento della rete di base di dati con prestazioni adatte
all'utilizzo che se ne deve fare ) e i mezzi a disposizione;
MySql non si è dimostrato molto al di sotto delle richieste, ma con un
costo di licenza annuale che si aggira intorno ai 5000 dollari,
considerate le limitazioni nella parte implementativa ( funzioni,
triggers per viste, tool di gestione grafico etc ) e considerando
l'ergonomia nativa fra prodotti Microsoft, sceglierei l'affidabilità di un
DBMS come SQL Server 2008; anche nella sua più recente versione
SQL Server 2014.
BIBLIOGRAFIA
32
[I] http://www.neowin.net/news/windows-xp-support-ends-in-90-days-
microsoft-remains-firm-on-deadline
[II] https://support.office.com/it-it/article/Convertire-un-database-nel-formato-
di-file-con-estensione-accdb-69abbf06-8401-4cf3-b950-f790fa9f359c
[III]https://www.microsoft.com/italy/server/sql/2008/prodinfo/enterprise.mspx
[IV] http://www.people.vcu.edu/~agnew/Misc/MySQL-MS-SQL.HTML
33

More Related Content

Similar to Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2
Emanuele Zanchettin
 
Integrazione e sviluppo di una piattaforma per la gestione delle conformità a...
Integrazione e sviluppo di una piattaforma per la gestione delle conformità a...Integrazione e sviluppo di una piattaforma per la gestione delle conformità a...
Integrazione e sviluppo di una piattaforma per la gestione delle conformità a...
Alessandro Umek
 
Modernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with Kubernetes
Giulio Roggero
 

Similar to Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL (20)

Modernizzare i data Center con le soluzioni Fibre Channel Gen 6 di Brocade
Modernizzare i data Center con le soluzioni Fibre Channel Gen 6 di BrocadeModernizzare i data Center con le soluzioni Fibre Channel Gen 6 di Brocade
Modernizzare i data Center con le soluzioni Fibre Channel Gen 6 di Brocade
 
Symantec Backup Exec 12.5 Small Business Server Premium And Standard Editions
Symantec Backup Exec 12.5 Small Business Server Premium And Standard EditionsSymantec Backup Exec 12.5 Small Business Server Premium And Standard Editions
Symantec Backup Exec 12.5 Small Business Server Premium And Standard Editions
 
Case study - Cedacri Group
Case study - Cedacri GroupCase study - Cedacri Group
Case study - Cedacri Group
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
Ms sql server 2005 - Upgrading to microsoft sql server 2005 - Scheda corso LEN
Ms sql server 2005 - Upgrading to microsoft sql server 2005 - Scheda corso LENMs sql server 2005 - Upgrading to microsoft sql server 2005 - Scheda corso LEN
Ms sql server 2005 - Upgrading to microsoft sql server 2005 - Scheda corso LEN
 
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...
 
Relazione Agic
Relazione AgicRelazione Agic
Relazione Agic
 
Pomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact EditionPomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact Edition
 
Presentazione tesi magistrale
Presentazione tesi magistralePresentazione tesi magistrale
Presentazione tesi magistrale
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
Presentazione IBM i virtualizzazione su Power System
Presentazione IBM i virtualizzazione su Power SystemPresentazione IBM i virtualizzazione su Power System
Presentazione IBM i virtualizzazione su Power System
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2
 
Db2 11.1: l'evoluzione del Database secondo IBM
Db2 11.1: l'evoluzione del Database secondo IBMDb2 11.1: l'evoluzione del Database secondo IBM
Db2 11.1: l'evoluzione del Database secondo IBM
 
Integrazione e sviluppo di una piattaforma per la gestione delle conformità a...
Integrazione e sviluppo di una piattaforma per la gestione delle conformità a...Integrazione e sviluppo di una piattaforma per la gestione delle conformità a...
Integrazione e sviluppo di una piattaforma per la gestione delle conformità a...
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
Db2 e book_ita
Db2 e book_itaDb2 e book_ita
Db2 e book_ita
 
Modernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with Kubernetes
 
WSO2 Oxygenate Italy 2022 Raiffeisen Information Service. Roberto Palmarin
WSO2 Oxygenate Italy 2022 Raiffeisen Information Service. Roberto PalmarinWSO2 Oxygenate Italy 2022 Raiffeisen Information Service. Roberto Palmarin
WSO2 Oxygenate Italy 2022 Raiffeisen Information Service. Roberto Palmarin
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
 
LARUS 10th - Rampado Omar
LARUS 10th - Rampado OmarLARUS 10th - Rampado Omar
LARUS 10th - Rampado Omar
 

Recently uploaded

Recently uploaded (9)

Presentzione Matematica similitudini circonferenze e omotetie.pptx
Presentzione  Matematica similitudini circonferenze e omotetie.pptxPresentzione  Matematica similitudini circonferenze e omotetie.pptx
Presentzione Matematica similitudini circonferenze e omotetie.pptx
 
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaGIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
 
GIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoGIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA Roberto
 
Descrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxDescrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptx
 
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneGIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
 
GIORNATA TECNICA 18/04 | DE LEO Antonio
GIORNATA TECNICA 18/04  | DE LEO AntonioGIORNATA TECNICA 18/04  | DE LEO Antonio
GIORNATA TECNICA 18/04 | DE LEO Antonio
 
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoGIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
 
GIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroGIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI Alessandro
 
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleGIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
 

Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL

  • 1. Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL Università degli Studi di Trieste Azienda Alcatel-Lucent Ferroni Fabio Anno 2014/2015 Relatore: Chiar.mo Prof. Maurizio Fermeglia Responsabile Progetto: Ing. Stefano Bonifacio
  • 2. Indice 1. Introduzione 2. Problematiche 2.1 Da WinXP a Win7 64 bit 2.2 Access come RDBMS 2.3 Architettura db esistenti 3. Possibili soluzioni 3.1 Access 2007 back end – front end 3.2 Sql Server 2008 3.3 MySql 3.4 Confronto e prestazioni 4. Progetto DataBase ScioltiWDM 4.1 Interfaccia e Funzionalità 4.2 Stato dell'arte e Problematiche 4.3 Ristrutturazione 5. Conclusioni
  • 3. 1. Introduzione Il seguente documento ha lo scopo di analizzare i principali problemi e le possibili soluzioni adottate nella migrazione di basi di dati dall'ambiente MS-Access '97 all'ambiente MS-Sql 2008; tale analisi verrà impiegata nel medio/breve termine per coadiuvare le scelte relative alla nuova struttura di gestione di database aziendale presso l'azienda Alcatel-Lucent della filiale di Trieste. La necessità di tale migrazione è nata in seguito al cessato supporto di assistenza tecnica da Microsoft per WindowsXp che garantisce gli aggiornamenti di sicurezza; lo standard aziendale è passato, dunque, da un sistema operativo 32 bit, WindowsXp per l'appunto, a Microsoft Windows Seven 64 bit. Tale cambiamento ha causato degli impedimenti nel normale funzionamento del sistema di basi di dati esistente; la difficoltà principale si riferisce ad una incompatibilità nativa fra MS-Access'97 e sistemi 64 bit. La soluzione a tale problema è stata vincolata, per motivi di licenza, all'utilizzo di MS-Access'07 in modalità Back End – Front End, MySQL o Microsoft SQL Server 2008. Il processo di analisi si è sviluppato per fasi, spesso sovrapposte, e classificate in modo diverso a seconda dei diversi studi: 1
  • 4. • Studio delle tecnologie • Analisi di fattibilità • Raccolta dei requisiti • Progettazione • Test Non è stato possibile, tuttavia, effettuare il porting in produzione di tutte le basi di dati aziendali in quanto, data la mole di dati da migrare e la complessità con cui sono stati progettati i database esistenti, tale operazione avrebbe richiesto ulteriore tempo, specialmente nella fase di test. E' stato scelto di dare un taglio verticale alle varie fasi, cioè gli argomenti vengono raggruppati per attinenza e non per ordine cronologico, tale scelta scaturisce dall'obbiettivo che ci si pone: analizzare i pregi e i difetti dei suddetti tools non tanto in maniera assoluta, quanto in relazione l'uno con l'altro, evidenziandone prestazioni, affidabilità e scalabilità. 2
  • 5. 2. Problematiche In questo capitolo si trattano le problematiche riscontrate, tenendo conto solo di quelle inerenti al progetto dal punto di vista tecnico; si ritiene che complicazioni in itinere di carattere infrastrutturale piuttosto che organizzativo non siano rilevanti al fine di questo tipo di analisi. 2.1 Da WinXP a Win7 64 bit Dall'aprile 2014 Microsoft non garantisce aggiornamenti di sicurezza per WindowsXp, la stessa azienda comunica: Yes, Windows XP support is ending on April 8. After April 8, 2014, Windows XP users will no longer receive new security updates, non-security hotfxes, free or paid assisted support options, or online technical content updates from Microsoft. Third parties may provide ongoing support, but it’s important to recognize that support will not address fxes and security patches in the core Windows kernel. Windows XP and Ofce 2003 were great software releases more than a decade ago, but technology has evolved along with the needs and expectations of your customers and partners that have already adopted modern platforms and devices. Companies still on Windows XP are also missing out on tangible benefts of modernizing their IT investments from dramatically enhanced security, broad device choice to meet the needs of a mobile workforce, higher user productivity, and lower total cost of ownership by future-proofng their IT 3
  • 6. investments. A 12-year-old operating system can no longer address today’s business and technology needs nor security threats [I] . Tale cambiamento ha portato ad adottare Windows Seven 64 bit come standard aziendale. All'upgrade del sistema operativo ha avuto seguito l'upgrade dei tools non più nativamente compatibili; con il sistema 64 bit, a titolo d'esempio, si sarebbe reso necessario eseguire Access'97 come amministratore, con gli evidenti problemi di sicurezza. Il primo tentativo di risoluzione si è orientato, dunque, ad esportare l'intera rete di database in Access'07. 2.2 Access come RDBMS Per impostazione predefinita, i database creati in Access 2007 sono nel formato di file accdb, a cui in genere viene fatto riferimento come al formato di file di Access 2007. Questo formato supporta nuove caratteristiche, come i campi multivalore, le macro di dati e la pubblicazione in Access Services. È possibile convertire i database creati in Microsoft Office Access 2003, Access 2002, Access 2000 o Access 97 nel formato di file accdb. È necessario ricordare, tuttavia, che un database nel formato di file accdb non può essere aperto o collegato utilizzando versioni di Access precedenti ad Access 2007. Inoltre, il formato accdb non supporta la replica né la sicurezza a livello utente[II] , se si converte il file con estensione mdb nel nuovo formato (file con estensione accdb), tutte le impostazioni relative alla protezione a livello utente verranno eliminate automaticamente. 4
  • 7. La migrazione dei database Access, dalla versione 97 alla 2007, ha evidenziato chiaramente l’abbassamento prestazionale in termini di perfomance. Di seguito un'analisi delle possibili cause ed un elenco di soluzioni in fase di test per riportare le prestazioni ad un livello accettabile. CAUSE: 1. Naturale evoluzione della specie Dallo sviluppo di Access 97 a quello del 2007 sono passati circa 10 anni. In questo lasso temporale l’hardware dei computer ha avuto un incremento in termini di potenza di calcolo e di quantità di RAM, oltre che di velocità del bus, di accesso ai dati ecc.. non indifferente. Incremento evidenziato soprattutto con l’avvento di Windows Vista, sistema operativo ricordato proprio per il suo massivo consumo di risorse. Quindi la configurazione standard per uso ufficio, definita da Microsoft, è passata da una CPU Pentium 4 / Pentium 4 HT a processori Dual/Quad core e da un quantitativo di memoria RAM di 512 MB alla soglia dei 4GB (Limite che poi ha spinto lo sviluppo dei processori a 64 bit per poter supportare quantitativi maggiori). 2. Interfaccia grafica. L’interfaccia grafica è passata da sottile e minimale ad una piena di colori, effetti transazionali, menu a scomparsa, Ribbon e Quick Access Toolbar. Come in tutta la serie Office, Microsoft ha modificato radicalmente l’interfaccia, influendo sul carico computazionale dei pc. 5
  • 8. 3. Il motore Database Engine JET. Il motore JET non è sviluppato e pensato per un utilizzo in rete. Questo è quanto si legge su alcuni KB (Knowledge Base) della Microsoft. Questa sua natura fa si che ad ogni richiesta di esecuzione di una query, di una procedura vba, di una semplice lettura o scrittura su una tabella, il flusso dati che transita da Access attraverso le varie maschere alle tabelle del database è enorme. Sommando a questo l’utilizzo contemporaneo del database da n utenti, le performance ne risentono parecchio. POSSIBILI SOLUZIONI: 1. Naturale evoluzione della specie. Dalle prove fatte si è visto che sui pc con almeno 4 GB di RAM, la situazione è un po’ meno tragica. Grazie al passaggio a Windows 7, con il conseguente rinnovamento del parco macchine, si dovrebbe trarre benefici dall’adeguamento tecnologico, andando così a ridurre il gap prestazionale tra le applicazioni sviluppate in Access 97 e le nuove in formato 2003/2007. 2. Interfaccia grafica Per questo punto purtroppo c’è poco da fare, è una modifica fatta e voluta da Microsoft, ma anche qui il rinnovamento tecnologico non può che aiutare. 6
  • 9. 3. Il motore Database Engine JET. I consigli ufficiali Microsoft indicano di sviluppare, in un contesto di rete, sempre e comunque applicativi con logica client server. Da prove eseguite, si è notato come lo sviluppo di un'applicazione esterna in VB.NET che preleva il database da una repository centrale e lo copia in locale sui vari pc, ha dato miglioramenti evidenti rendendo l’attività lavorativa accettabile. Si tenga presente che il passaggio alla versione 2007 ha aumentato drasticamente l’incidenza di database corrotti anche a distanza di pochi giorni l’uno dall’altro. E’ stato previsto quindi, sempre all’interno dell’applicativo VB.NET un controllo sull’apertura del database, ed in caso di errore, l’applicativo provvederà a scaricare una nuova copia del db dalla repository di rete. Infine l’applicativo VB.NET prevede anche un controllo sulla versione del database e provvede ad aggiornarlo in caso di upgrade. PROBLEMI NOTI NON RISOLTI: Rimane il problema della dimensione dei database, che in versione 2003/2007 crescono a dismisura eseguendo query di modifica. Il problema purtroppo non è risolvibile se non tramite work-around, in quanto ci si scontra proprio con un voluto blocco fisico/strutturale dei file mdb che non possono superare i 2GB di grandezza. L'aumento delle dimensioni dei database è dato dal fatto che lo spazio allocato per i record in Access 2007 è maggiore rispetto a quello allocato in Access '97, quindi eseguendo query di modifica ( INSERT, UPDATE, DELETE ), lo spazio liberato rimane inutilizzato fin 7
  • 10. quando non viene eseguita una compattazione; le attività aziendali impongono un forte utilizzo di operazioni di cancellazione, update o inserimento e questo comporta la necessità di effettuare compattazioni ogni 3 giorni circa, dal momento che i 2GB di grandezza massima dei database viene esaurito molto velocemente. 2.3 Architettura db esistenti La struttura di base di dati esistente si presenta complessa; gli oltre 470 database sono stati realizzati quasi totalmente in Access'97 e sono stati progettati per un carico di lavoro di un paio di ordini di grandezza inferiore al lavoro che effettivamente svolgono; la dimensione massima di un file mdb, inoltre, è di 1 GB, tale limitazione ha vincolato le scelte implementative portando ad avere tabelle ripetute, assenza di relazioni fra tabelle e un massiccio utilizzo di codici VBA. 8
  • 12. 3. Possibili soluzioni I tentativi di risoluzione ai problemi analizzati nel capitolo precedente hanno reso necessario il passaggio ad un gestore di database diverso dall'Access '97. Per valutare la bontà dei tools a disposizione è stato seguito un approccio prettamente pratico, basato sull'analisi e sul monitoraggio del funzionamento dei database esistenti, nella seguente maniera : . Analisi di compatibilità : Valutazione delle caratteristiche dei tool riportate dalla Software House mettendole in relazione con le necessità aziendali. . Virtualizzazione : Creazione di un ambiente operativo virtuale su cui effettuare dei test. . Modifica del codice : Aggiornamento del codice VBA e, dove possibile, sostituituzione con codice SQL. 10
  • 13. 3.1 Access 2007 back end – front end Contrariamente a quanto ci si potrebbe aspettare, la migrazione dei database da Access '97 alla versione 2007 non è stata completamente indolore; la conversione, mediante gli strumenti di conversione nativi, ha evidenziato problematiche più gravi del previsto, in ordine di importanza: 1. Con Access 2007, Microsoft ha incrementato le dimensioni dei database fino ad un max di 2GB, ciononostante si è notato che le basi di dati tendono a crescere molto più velocemente di come facevano con Access'97. Alcune possibili cause: . MS Access è un tool file-based non transaction-based. . Le Query, specialmente quelle che richiedono grandi risorse, occupano molto spazio che non viene recuperato fin quando non si effettua la compattazione del database . Locktypes, cursortype e cursorlocation in ADODB possono occupare molte risorse se intensamente utilizzati. 11
  • 14. . Funzioni DAO. . Come per le query, la creazione di oggetti ( maschere, report, form etc ) occupa spazio che non verrà recuperato fino alla compattazione. 2. Per la sicurezza a livello utente in Access 2003 e versioni precedenti viene utilizzata una combinazione di password e autorizzazioni, ovvero un insieme di attributi che specifica il tipo di accesso consentito a un utente ai dati o agli oggetti del database. È possibile impostare password e autorizzazioni per singoli utenti o gruppi di utenti. Queste combinazioni di password e autorizzazioni diventano account di sicurezza che definiscono gli utenti e i gruppi di utenti ai quali è consentito l'accesso agli oggetti del database. La combinazione di utenti e gruppi di utenti è a sua volta nota come gruppo di lavoro, le cui informazioni vengono memorizzate da Access in un file di informazioni sul gruppo di lavoro stesso. All'avvio, il file di informazioni sul gruppo di lavoro viene letto da Access che applica le autorizzazioni in base ai dati contenuti nel file. Come scelta voluta da parte di Microsoft, tale tipo di sicurezza si è persa con il passaggio dai formati mdb a accdb. 3. Nell'utilizzo client-server i metodi della classe System.IO.Filestream non sono riconosciuti come validi; nel nostro caso si sono trovate incongruenze con i metodi .seek e .index. 12
  • 15. 3.2 Sql Server 2008 L'edizione di MS Sql che andremo ad analizzare è la Enterprise 2008, la versione completa della suite MS-SQL. SQL Server 2008 Enterprise Edition è una piattaforma completa di gestione dei dati e Business Intelligence, che assicura caratteristiche di fascia enterprise per la scalabilità , il data warehousing, l'analisi avanzata e la protezione delle applicazioni business-critical. Questa edizione rende possibile consolidare i server ed eseguire operazioni OLTP (Online Transactional Processing) e reporting su larga scala. Le principali caratteristiche di questo tool sono le seguenti: .Disponibilità elevata. Garanzia di continuità delle attività di business, grazie a tecnologie in grado di proteggere i dati da errori umani e di ridurre al minimo i tempi di inattività per le operazioni di ripristino di emergenza. 13
  • 16. •Prestazioni e scalabilità. Implementazione di un'infrastruttura dall'efficacia comprovata per la gestione di grandi volumi di dati e degli elevati carichi di lavoro delle grandi organizzazioni. •Protezione. Rispetto dei requisiti di privacy e conformità e disponibilità di funzionalità integrate per la protezione dei dati dall'accesso non autorizzato. •Gestibilità. Gestione dell'infrastruttura per mezzo di funzionalità automatiche di diagnostica, ottimizzazione e configurazione che abbattono i costi operativi, riducendo le operazioni di manutenzione e consentendo la gestione di grandi quantità di dati. •Business Intelligence. Semplicità di esecuzione di query e analisi di grandi quantità di informazioni nei data warehouse e data mart per ottenere informazioni di business traducibili in azione[III] . TRANSACT-SQL La caratteristica che differenzia principalmente Sql Server dagli altri DBMS è il TSql. In informatica Transact-SQL ( T-SQL ) è l'estensione proprietaria del linguaggio SQL sviluppata da Microsoft e Sybase. Transact-SQL espande le prestazioni di SQL aggiungendo: •Funzioni per controllo di flusso; •Possibilità di definire variabili locali. 14
  • 17. •Varie funzioni per la manipolazione di stringhe, date, espressioni matematiche. •Miglioramento delle istruzioni DELETE e UPDATE. 3.3 MySql MySql offre, come SQL Server, delle edizioni gratuite e altre coperte da licenza; in questo documento riteniamo utile analizzare la versione Enterprise di MySql, cioè la versione a pagamento; tale considerazione deriva dal fatto che in nessun modo la versione freeware di MySql potrebbe essere utilizzata in ambito aziendale per le evidenti limitazioni a cui si andrebbe incontro. MySQL o Oracle MySQL è un Relational Database Management System (RDBMS) composto da una parte client e una server. Le caratteristiche di questo tool possono essere riassunte nei seguenti punti: . Scalabilità e flessibilità: MySQL ha la capacità di integrarsi 15
  • 18. con applicazioni le cui dimensioni non superano pochi MB, fino ad enormi data warehouse contenenti terabyte di informazioni. La flessibilità di piattaforma è una funzionalità chiave di MySQL, che è in grado di supportare Linux, UNIX e Windows. Inoltre la natura open source di MySQL consente di personalizzare il server database. . Prestazioni : L’architettura storage-engine consente di configurare il server di MySQL per applicazioni specifiche, per mezzo di utility di caricamento dati ad alta velocità, le cache specializzate, gli indici full text ed altri meccanismi di aumento delle prestazioni. . Supporto delle transazioni: Le funzionalità di MySql includono il supporto per transazioni ACID (Atomic, Consistent, Isolated, Durable), lock a livello di riga, gestione delle transazioni distribuite e supporto per transazioni multiversione in cui chi legge non blocca mai chi scrive e viceversa. L' integrità dei dati è garantita anche dall’integrità referenziale controllata dal server, dai livelli di isolamento delle transazioni specializzate e dall’individuazione dei deadlock. . Protezione dei dati: L’autenticazione del database assicura la possibilità di verificare gli utenti fino al livello macchina client. MySql supporta protocolli SSH e SSL che garantiscono la sicurezza delle connessioni. Le utility di backup e ripristino fornite da MySQL e da software di terze parti consentono di eseguire il backup fisico e logico 16
  • 19. completo, così come il ripristino completo e point-in-time. 3.4 Confronto e prestazioni Il confronto che intendiamo effettuare è impostato sulla ricerca di affidabilità, sicurezza, velocità e semplicità di utilizzo. A parità di caratteristiche si terrà conto dei costi di licenza. Da quanto emerso dal capitolo precedente si ritiene inutile includere nel suddetto confronto Microsoft Access 2007 in quanto inadatto ad una realtà aziendale. Schematizzando: Caratterstiche MS-Sql Server MySql Sistema operativo Windows Windows, Linux, Unix, Mac Drivers Gia presenti No Drivers ODBC, JDBC, ADO.NET Si Si OleDb Si No Viste di sola lettura Si Si Prodotti opensource associati Pochi (codeplex, .net) Molti Viste Aggiornabili Si, anche attraverso Triggers Si, non supporta l'uso dei Triggers per l'aggiornamento delle 17
  • 20. viste Viste indicizzabili Si No View designer grafico Si No Campi calcolati Si No Indici basati su funzioni No – ma è possibile creare campi calcolati e creare un indice su di essi No A.C.I.D Si Solo alcuni motori di archiviazione – es. InnoDb si, MyIsam no Chiavi esterne, DELETE/UPDATE in cascata Si InnoDb si, MyIsam no Inserimento multi-riga Si Si Stored procedures/ funzioni Si, nativamente Si, terze parti Triggers Si Si Set e Table returning function che possono essere utilizzate nella clausola FROM Si No Tool di gestione Grafico Si, Sql menagement studio No Accedere a tabelle da altri database nello stesso Server Si – server.db.schema. Table anche su altri server Si – db.table, ma non su altri server Autenticazione Standard db security Standard db security, 18
  • 21. e NT / Active Directory Authentication controllo degli IP WITH ROLLUP Si Si WITH CUBE Si No Schema Si No CROSS APPLY Si No COUNT(DISTINCT) AGGREGATE(DISTI NCT) Si Si Funzioni OVER … PARTITION BY Si No Limiti Dimensioni Database No No SQL Data Type[IV] : MS-Sql Server MySql Boolean Bit N/A Integer Int Int – Integer Float Float – Real Float Currency Money N/A String ( fissa ) Char Char String ( variabile ) Varchar Varchar Binary object Binary – Varbinary – Image Blob - Text 19
  • 22. 4. Progetto DataBase ScioltiWDM ScioltiWDM è uno dei circa 470 database ufficiali aziendali; si occupa principalmente di monitorare le camere termiche, ovvero le camere che testano il funzionamento delle schede hardware prodotte, a temperature estreme. 4.1 Interfaccia e Funzionalità Per obblighi di riservatezza concordati con i responsabili di questo documento di tesi in azienda, non è possibile entrare troppo nello specifico sul funzionamento dell'apparato produttivo; nel seguito alcune funzionalità di ScioltiWDM verranno deliberatamente omesse, altre non verranno spiegate e altre spiegate in parte; tale atteggiamento non precluderà comunque la comprensione dell'attività svolta. ScioltiWDM ha una struttura visuale abbastanza semplice, è composto essenzialmente da 3 maschere : . La maschera principale : 20
  • 23. è composta da 3 sezioni disposte in verticale: la parte in alto permette di scegliere il tipo di apparato, la parte centrale permette di avere informazioni su una determinata scheda a partire dal codice ALU o dal codice Telettra e la parte in basso che permettere di accedere alle maschere secondarie. . Maschera “Ricerca TRS Archiviati”: Questa maschera serve per la ricerca di TRS archiviati partendo dalla matricola; da, inoltre, la possibilità di stampare il documento o inviarlo via mail. Per TRS si intende una particolare formattazione di un report atta a far risaltare gli errori avvenuti durante la catena di test. 21
  • 24. . Maschera di gestione delle camere : Questa maschera si occupa del monitoraggio delle attività delle camere termiche; nell'area in bianco a destra sono elencate le schede attualmente in fase di test nella camera 1, per ogni scheda viene specificato il numero seriale, la data e l'ora in cui è iniziato il test e la presenza o meno di errori. 4.2 Stato dell'arte e Problematiche ScioltiWDM, come tutti gli altri database aziendali, è stato costruito per rispondere a necessità di carattere marginale; nel corso degli anni è stato modificato fino ad ottenere un ruolo fondamentale nella produzione. Tale approccio di sviluppo si riflette nella struttura del database: i) Non esiste una progettazione concettuale ne una progettazione logica, dunque non sono definite relazioni fra tabelle ne chiavi primarie o esterne. 22
  • 25. ii) Le tabelle sono ripetute : Il prefisso “Arc” indica che si tratta di un archivio, “ALU”, “BA”, “CC” etc indicano il reparto di competenza e il suffisso numerico indica l'anno di riferimento. Ad esempio la tabella Arc_EZ_00 è un archivio del settore indicato con la sigla EZ dell'anno 2000. Tutte le tabelle “Arc” hanno la stessa struttura, gli stessi campi e svolgono lo stesso ruolo all'interno del database. Il prefisso delle matricole indica la tabella e l'anno di appartenenza, ad esempio una matricola del tipo EZ140000001 appartiene alla tabella Arc_EZ_14. Durante l'esecuzione di una query il codice VBA seleziona una tabella facendo il parsing della matricola di riferimento e, quindi, creando le relazioni fra le tabelle in maniera dinamica. iii) Le query sono gestite da codice VBA e, nel codice, gli elementi hanno conservato il nome di default assegnato da Access: agli oggetti delle maschere ci si riferisce con nomi del tipo Elenco0, Casella13 etc. Di seguito è riportata la porzione di codice che gestisce il parsing delle 23
  • 26. matricole: Public Function Check_matricola(matricola As String) As String Set tabella = arc.OpenRecordset("Struttura_Tabelle") Struttura_Tabelle è una tabella che contiene informazioni relative agli archivi presenti nel database; ogni record ha un campo Nome_tabella e un campo Intestazione. Il codice VBA analizza le matricole e verifica che la stringa 'matricola' contenga una delle intestazioni presenti nella tabella Strutture_Tabelle; matr_EZ_Ok = True If Len(matricola) <> 11 Then Select Case Mid(matricola, 1, 2) Case "BA" temp = "Arc_BA" Case "AL" tabella.MoveFirst i = 1 Do If Mid(matricola, 1, 6) = tabella![Intestazione] Then temp = tabella![nome_ tabella] matr_EZ_Ok = True Else matr_EZ_Ok = False End If tabella.MoveNext i = i + 1 24
  • 27. Loop Until (matr_EZ_Ok Or i = num_tabelle + 1) tabella.Close If matr_EZ_Ok = False Then temp = "Arc_MIX" Il parsing delle matricole avviene per mezzo della funzione Mid() che ha come parametri la variabile matricola e l'intervallo da esaminare; la variabile matr_EZ_Ok serve a verificare che il matching matricola/tabella sia avvenuto, dunque il codice seleziona le prime 2 lettere della matricola e le compara con il campo intestazione della tabella Struttura_Tabelle; nel caso in cui sia presente l'anno di riferimento, il codice avvia un ciclo per eseguire un matching con i primi 6 caratteri della matricola. Se la tabella viene trovata, viene assegnato alla variabile temp la stringa contenente il nome della tabella, altrimenti si fa restituire alla funzione Check_matricola una stringa di errore. La funzione Check_matricola viene richiamata nella fase preliminare di tutte le operazioni di SELECT, DELETE e UPDATE dei record di una qualsiasi tabella di archivio. 25
  • 28. 4.3 Ristrutturazione La fase di ristrutturazione rappresenta uno stadio intermedio fra quello che doveva essere una completa riprogettazione del sistema di database e il vecchio sistema Access-based. Tale fase si è resa necessaria a fronte di obblighi operativi che includevano la non interruzione del servizio offerto da ScioltiWDM e la necessità di avere un sistema funzionante dopo l'imminente aggiornamento a Windows Seven; si è proceduto, dunque, per soluzioni progressive che possiamo raggruppare in 2 fasi: • Rimozione delle ridondanze • Migrazione della base di dati in SQL Server I) Rimozione delle ridondanze: In questa fase si è tentato di normalizzare la base di dati: le 38 tabelle relative all'archiviazione sono state rimpiazzate da un'unica tabella con la stessa struttura di campi adottata dalle precedenti tabelle, è stato aggiunto il campo “Reparto” per distinguere i vari reparti e, quindi le varie matricole, in cui si divide la catena di produzione, il campo data è già presente quindi non è stato necessario aggiungere un ulteriore campo per lo store degli anni di archiviazione; un'operazione analoga è stata effettuata per le tabelle “Cicli”. Sono state completamente rimosse o accorpate tabelle che presentano un solo campo. Sono state eliminate, inoltre, le tabelle che in tale fase hanno perso di utilità, ovvero le tabella “Struttura_tabelle”, “Ricerca_matricole” , “Camera” , “Cerca” etc. 26
  • 29. Dopo la fase I Prima della fase I Sono state aggiunte le chiavi primarie ed è stato realizzato il diagramma delle relazioni. Quasi tutte le tabelle non presentavano chiavi primarie naturali, ovvero i campi necessitavano la ripetizione dei record, in queste occasioni è stato aggiunto il campo Id. 27
  • 30. II) Migrazione della base di dati in SQL Server La migrazione in SQL Server 2008 è stata gestita con il tool fornito da Access 2007; sotto la scheda “Database Tools”, il wizard abilita la creazione di un nuovo database sul server, le tabelle vengono spostate interamente in back-end e le tabelle in front-end puntano al server attraverso una connessione ODBC. 28
  • 31. 5. Conclusioni Anche se nella parte di progetto non è stato possibile coprire tutti gli obiettivi posti all'attività di tesi, i seguenti aspetti sono stati analizzati e completati compiutamente: l'analisi di fattibilità è andata in porto con successo, il progetto, invece, che comprendeva la migrazione di un database, è stata eseguita in parte: . E' stato eseguito lo studio del codice sorgente e il funzionamento delle varie maschere. . E' stato realizzato il porting da Access '97 ad Access 2007. . Sono stati individuati i principali errori di funzionamento del del database migrato in ambito Client-Server. . Sono stati corretti gli errori individuati nel punto precedente nel 20% delle funzioni a titolo di esempio. . E' stata effettuata la migrazione da Access 2007 a SQLServer 2008 . Sono stati effettuati test di funzionamento in mono-utenza e multi-utenza. . Non è stata completata la correzione degli errori e il porting in 29
  • 32. produzione. Ci riteniamo ugualmente soddisfatti dei risultati ottenuti; i tempi misurati, seppur utilizzando come Server una macchina standard aziendale, hanno riportato delle prestazioni ottime, uguali e in alcuni casi migliori del DBMS attualmente in uso. Il seguente grafico riporta le informazioni ottenute; sull'asse delle ascisse è riportato il numero di misurazioni effettuate, sull'asse delle ordinate il tempo calcolato in secondi delle suddette misurazioni. Sono state effettuate un totale di 6 rilevamenti per ogni settore, il migliore e il peggior tempo sono stati scartati, i restanti 4 tempi sono rappresentati nel grafico sottostante; tale procedimento si è reso necessario per minimizzare l'errore di misurazione effettuato attraverso un cronometro digitale. ScioltiWDM, il database utilizzato per i test, all'apertura effettua la sincronizzazione di milioni di record prima di essere operativo, tale operazione è la più pesante che effettua, per questo motivo si è ritenuto opportuno misurare il tempo di operatività come modello di valutazione precauzionale. 30
  • 33. Come possiamo vedere dalla tabella sottostante, i tempi riportati dalle diverse zone in cui si divide l'azienda sono più o meno omogenei intorno ai 2 secondi, fatta eccezione per la zona P4 dove con Access 2007 si è toccato il picco di circa 24 secondi. Dalle argomentazioni riportate in questo documento, ritengo che SqlServer 2008 sia la scelta migliore per la futura migrazione. Tale considerazione deriva da un'analisi completa fra ciò che è già presente ( infrastrutture, database esistenti ), ciò che si vuole ottenere 31 1 2 3 4 5 6 0 5 10 15 20 25 Media Access Media SQL Server Misurazioni Secondi Zona Prima Seconda Terza Quarta Media Access P1 1,82 2,01 1,93 1,71 1,8675 P2 1,78 2,31 2,21 2,36 2,165 P2 est 1,32 1,35 1,45 1,28 1,35 P4 23,81 21,97 22,89 22,38 22,7625 P4 ovest 3,42 3,82 4,12 3,58 3,735 P8 1,89 1,68 1,77 1,49 1,7075 Zona Prima Seconda Terza Quarta Media SQL Server P1 1,45 1,87 1,65 1,65 1,655 P2 1,56 1,99 1,89 2,01 1,8625 P2 est 1,45 1,29 1,97 2,19 1,725 P4 7,11 7,21 8,34 8,23 7,7225 P4 ovest 2,25 2,04 2,34 2,91 2,385 P8 1,89 1,25 1,71 1,65 1,625
  • 34. ( funzionamento della rete di base di dati con prestazioni adatte all'utilizzo che se ne deve fare ) e i mezzi a disposizione; MySql non si è dimostrato molto al di sotto delle richieste, ma con un costo di licenza annuale che si aggira intorno ai 5000 dollari, considerate le limitazioni nella parte implementativa ( funzioni, triggers per viste, tool di gestione grafico etc ) e considerando l'ergonomia nativa fra prodotti Microsoft, sceglierei l'affidabilità di un DBMS come SQL Server 2008; anche nella sua più recente versione SQL Server 2014. BIBLIOGRAFIA 32