File: WWW-mSQL-HOWTO

package info (click to toggle)
doc-linux-it 2000.01-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 8,136 kB
  • ctags: 19
  • sloc: perl: 249; makefile: 50; sh: 42
file content (1320 lines) | stat: -rw-r--r-- 45,813 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
  Server Web basati su mSQL e perl mini HOWTO
  Oliver Corff, corff@zedat.fu-berlin.de
  v0.1, 17 settembre 1997

  Questo Mini HOWTO, fortemente ispirato dall'articolo di Michael
  Schilli Gebunkert: Datenbankbedienung mit Perl und CGI, pubblicato nel
  computer magazine tedesco iX nell'agosto 1997, descrive come costruire
  un database client/server SQL utilizzando WWW e HTML per l'interfaccia
  utente.  Documentazione tradotta da Gianmario Parisi, gian
  mario.parisi@comune.torino.it

  1.  Scopi di questo documento


  1.1.  Destinatari

  Chiunque voglia installare un server database per il web ma non sa
  quale software  necessario e come installarlo dovrebbe trarre
  beneficio dalla lettura di questo testo. Questo testo fornisce tutte
  le informazioni necessarie per ottenere un database SQL per web server
  funzionante; esso non riguarda alcun dettaglio della programmazione
  CGI, n spiega il linguaggio SQL. Sono disponibili dei libri
  eccellenti su entrambi gli argomenti, ed  intenzione di questo testo
  fornire una piattaforma funzionante sulla quale un utente pu in
  seguito studiare la programmazione CGI e SQL.

  Per ottenere una piccolo sistema SQL funzionante (non l'esempio del
  sistema di prenotazione di una grande compagnia aerea, o il database
  per la gestione di una missione spaziale) sar sufficiente disporre
  del software descritto in questo testo e la documentazione che lo
  accompagna. Il manuale utente di msql (un database introdotto nel
  testo) fornisce sufficienti informazioni su SQL per costruire il
  proprio database.

  Il lettore di questo testo dovrebbe avere una buona conoscenza su come
  ottenere file via ftp se non ha accesso ai CD-ROM, ed una comprensione
  di base di come ottenere file binari eseguibili partendo dai sorgenti.
  In ogni modo, tutti i passi spiegati nel testo sono stati provati su
  sistemi reali e dovrebbero funzionare sul sistema del lettore.


  1.2.  Convenzioni usate nel testo


  Un comando utente:

  # make install



  Uscita a video d un programma:


       Programma installato. Leggere README per particolari su come iniziare.




  Codice d'esempio:

  ______________________________________________________________________
  # Mio commento
  char letter;
  ______________________________________________________________________


  2.  Introduzione

  Si pu assumere con sicurezza che database con grandi volumi di dati o
  una complessa struttura relazionale (come, probabilmente, un database
  lessicale per linguaggio naturale) deve essere accessibile a molti
  utenti ed operatori simultaneamente. Idealmente, dovrebbe essere
  possibile usare differenti piattaforme hardware e software esistenti
  che possono essere combinate nel sistema. Allo scopo di ridurre i
  costi di implementazione, solo un sistema, il database server, deve
  essere potente. Le stazioni utente devono tipicamente mostrare i dati
  e accettare i comandi, ma l'elaborazione  eseguita su una sola
  macchina, cosa che porta al nome di database client-server. Inoltre,
  l'interfaccia utente dovrebbe essere facile da mantenere e dovrebbe
  richiedere il meno possibile sul lato client.

  Un sistema che soddisfa questi criteri pu essere costruito attorno
  agli elementi seguenti tra protocolli, concetti e software:

     Linux
        fornisce il sistema operativo.  una implementazione stabile di
        Unix che fornisce autentici servizi multi-utente e multi-tasking
        con pieno supporto di rete (TCP/IP e. a.).  Eccetto i costi
        effettivi dei supporti e di spedizione,  disponibile
        gratuitamente in forma di cosiddette distribuzioni che di solito
        includono tutto il necessario dal SO base all'elaborazione
        testi, scripting, sviluppo software, generatori di interfacce,
        ecc.

     HTML
         l'Hypertext Markup Language usato per costruire interfacce
        verso sistemi di rete quale le Intranet ed il World Wide Web.
        HTML  molto semplice  pu essere prodotto con un editor di
        testo ASCII.

     Browser
        sono applicazioni con interfaccia testuale (per es. Lynx) o
        grafica (per es. Mosaic, Netscape, Arena ecc.) che accettano,
        valutano e mostrano documenti HTML.  Sono le uniche parti di
        software utilizzate direttamente dall'utente del database.
        Utilizzando i browser,  possibile mostrare vari tipi di dati
        (testo, immagini) e comunicare con server http (vedi nel
        seguito) su ogni modello di computer per cui sia disponibile un
        browser.

     server http
        forniscono l'accesso all'area di un computer host dove sono
        immagazzinati i dati destinati ad uso pubblico su una rete.
        Essi "comprendono" il protocollo http e procurano le
        informazioni richieste dall'utente.

     SQL
        lo Structured Query Language (linguaggio strutturato per
        interrogazioni)  un linguaggio per manipolare dati in database
        relazionali.  Ha una grammatica molto semplice e costituisce uno
        standard ampiamente supportato. Database basati su SQL sono
        diventati il nucleo del classico concetto di database
        client/server. Ci sono molti famosi sistemi SQL disponibili,
        come Oracle, Informix, ecc., e poi c' anche msql disponibile a
        costo molto basso o nullo se usato in ambienti accademici e di
        istruzione.

     CGI
        la Common Gateway Interface  l'interfaccia di programmazione
        tra il sistema che mantiene i dati (nel nostro caso un sistema
        basato su SQL) ed il protocollo di rete (HTML, naturalmente).  I
        CGI possono essere costruiti attraverso molti linguaggi di
        programmazione, ma un linguaggio particolarmente popolare  il
        perl.

     perl
         un linguaggio di scripting estremamente potente che combina
        tutti i meriti del C, di diversi linguaggi shell e dei linguaggi
        per manipolazione di file come awk e sed. Perl ha moltissime
        interfacce modularizzate e pu essere usato, ad esempio, per
        controllare database SQL.


  3.  Procedura di Installazione



  3.1.  Requisiti Hardware

  Non possono essere fatte affermazioni generali riguardo i requisiti
  hardware di un server database. Troppi fattori dipendono dal numero di
  utenti, dal tipo di applicazione, dal carico di rete ecc. In piccoli
  ambienti con pochi utenti e scarso traffico di rete una macchina
  i486-equivalente con 16 Mb di RAM pu essere completamente
  sufficiente.  Linux, il sistema operativo,  molto efficiente in
  termini di risorse, e pu fornire abbastanza potenza per eseguire
  un'ampia variet di applicazioni allo stesso tempo. Naturalmente,
  processori pi veloci e pi RAM significano pi velocit, ma molto pi
  importante del processore  l'ammontare di RAM. Pi RAM ha il sistema,
  meno esso  costretto ad eseguire swap di processi su disco nel caso
  la memoria diventi un collo di bottiglia.

  Disponendo di 32 MB di RAM ed un bus PCI, operazioni di ricerca e
  ordinamento possono essere eseguite senza ricorso a file di swap ecc.,
  ottenendo prestazioni velocissime.

  Il modello di installazione descritto in questo articolo  stato
  realizzato su un IBM 686 (133 MHz) con 32 MB di RAM ed un hard disk
  IDE da 1.2 GB.  Assumendo che il processo di installazione parta da
  zero, viene fornita una lista dei passi necessari.


  3.2.  Requisiti Software


  Il software descritto in questo articolo  disponibile su Internet o
  su CD-ROM. Sono stati usati i seguenti prodotti:

    Red Hat Linux PowerTools: Red Hat 4.2 - 6 CD Complete Easy-to-Use
     estate '97; in alternativa http://www.redhat.com;

    msql SQL database server:  ora disponibile in due versioni. Le
     versioni differiscono nel numero di transazioni che possono
     gestire, nell'interfaccia di amministrazione, ecc. La versione pi
     vecchia, 1.0.16,  disponibile dai mirror di Sunsite. Gli
     eseguibili ELF possono essere trovati a
     sunsite:apps/database/sql/msql-1.0.16 o su CD-ROM (disco 4 di
     InfoMagic Linux Developer's Resource, 6-CD, Dicembre 1996) o
     alternativamente dalla seguente URL: http://www.infomagic.com.

     La versione pi nuova, 2.0.1, pu essere direttamente ottenuta dal
     homepage della Hughes in Australia (http://www.hughes.com.au) o da
     numerosi mirror sparsi per il mondo;

    perl da CPAN: Il  Comprehensive Perl Archive Network.  Walnut Creek
     CDROM, ISBN 1-57176-077-6, Maggio 1997;


    programmi d'esempio CGI di Michael Schilli's dalla rivista tedesca
     iX 8/1997, pagine 150--152, disponibile via ftp da ftp.uni-
     paderborn.de:/doc/magazin/iX;


  3.3.  Installazione del sistema operativo

  Linux  installato nella forma della distribuzione Red Hat 4.2. Allo
  scopo di installare con successo, la macchina deve avere un drive CD-
  ROM accessibile da DOS, un drive CD-ROM avviabile (bootable),
  altrimenti dev'essere preparato un disco di boot seguendo le
  istruzioni sul CD di Linux.

  Durante l'installazione l'utente pu selezionare e configurare
  numerosi pacchetti software.  conveniente selezionare i seguenti
  elementi:


    supporto di rete TCP/IP,

    il server http Apache,

    il linguaggio di scripting perl

    il sistema X Window

    i browser Arena (grafico) e Lynx (testuale).

  Tutti questi pacchetti sono forniti con la distribuzione Linux.  Se
  questi pacchetti non vengono installati ora, si avr la possibilit di
  farlo in seguito con l'assistenza di glint, il gestore per
  l'installazione software con interfaccia grafica ed intuitiva.
  Assicurarsi di operare come utente root durante l'installazione dei
  pacchetti software.

  Va oltre gli scopi di questo articolo descrivere la procedura di
  installazione ed inizializzazione della rete. Consultare la
  documentazione in linea (manpage, HTML, texinfo) e stampata (Linux
  Bible, ecc. ecc.).

  La procedura di installazione di Red Hat  matura e richiede poche
  attenzioni da parte dell'utente oltre alle scelte usuali (come fornire
  il nome host ecc.).  Una volta terminata con successo l'installazione,
  il sistema  sostanzialmente pronto per l'esecuzione.

  Installare il sistema X Window non  obbligatorio per un server puro,
  ma ci rende l'accesso al sistema ed il test molto pi semplice. La
  procedura di installazione di X  eseguita con uno qualsiasi tra
  diversi programmi; XF86Setup offre la pi estesa procedura guidata e
  necessita del minor numero di operazioni manuali per la gestione di
  fastidiosi dettagli (come programmazione del clock video, ecc.).
  L'unico requisito  che il software possa rilevare l'adattatore video.
  Un adattatore video accelerato economico (come schede basate su Trio
  S64 precedenti a S64UV+) di solito funziona ``al volo''.

  A questo punto assumiamo che il nostro sistema sia attivo ed in
  esecuzione e che Apache, Perl e X Window siano stati installati con
  successo.  Si assumer inoltre che tutte le strutture standard come
  come file e directory siano mantenute come definito
  nell'installazione. Ultimo, ma non meno importante, lasceremo
  l'hostname cos com', e accettiamo in questo momento il nome
  localhost. Useremo questo nome per testare l'installazione.  Una volta
  che l'intero sistema funziona pu essere aggiunto il vero nome.
  Notare che il setup della rete richiede anche di editare il file
  /etc/hosts, tra gli altri. Idealmente questo dovrebbe essere fatto con
  gli strumenti di amministrazione forniti all'utente root.
  3.4.  Il server http


  Il server http fornito con Linux  conosciuto come Apache dagli umani
  e come httpd dal sistema. La manpage (man httpd) spiega come
  installare ed avviare il demone http (quindi httpd) ma, come detto, se
  l'installazione  avvenuta senza problemi, il server dovrebbe essere
  in esecuzione.  Si pu verificare l'albero delle directory: deve
  esserci una directory /home/httpd/ con tre sottodirectory: ../cgi-
  bin/, ../html/ e ../icons/. In ../html/ deve esserci un file
  index.html. In seguito modificheremo o sostituiremo questo file con
  l'index.html effettivo definito da noi. Tutte le informazioni di
  configurazione sono registrate in /etc/httpd/conf/. Il sistema  ben
  preconfigurato e non richiede un ulteriore setup se l'installazione
  non ha subito errori.


  3.5.  I Browser

  Ci sono essenzialmente tre tipi di browser disponibili per Linux:
  sistemi puramente testuali come Lynx, semplici e sperimentali come
  Arena (gratis!) e commerciali come Netscape (Shareware!) con supporto
  Java.  Mentre Lynx e Arena sono forniti con Linux, Netscape deve
  essere recuperato da altre fonti. Netscape  disponibile in forma
  binaria precompilata per Linux su architetture ix86 e potr essere
  eseguito ``al volo'' appena estratto dall'archivio.


  3.5.1.  Configurazione di Lynx


  Una volta avviato, Lynx cercher una URL predefinita solitamente non
  molto significativa se il sistema non ha un accesso permanente ad
  Internet.  Per cambiare la URL predefinita (e molti altri dettagli di
  configurazione) l'amministratore di sistema dovrebbe editare
  /usr/lib/lynx.cfg.  Il file  grande, circa 57000 byte e contiene
  informazioni a volte contraddittorie. Esso dichiara la propria home
  come /usr/local/lib/.  Non lontano dall'inizio del file c' una linea
  che comincia con STARTFILE.  Rimpiazzare questa linea con la voce
  seguente: STARTFILE:http://localhost assicurandosi che non siano
  inseriti spazi ecc. :

  ______________________________________________________________________
  # STARTFILE:http://www.nyu.edu/pages/wsn/subir/lynx.html
  STARTFILE:http://localhost
  ______________________________________________________________________


  Dopo aver salvato il file, Lynx dovrebbe mostrare il nostro documento
  index.html se avviato senza argomenti.


  3.5.2.  Configurazione del browser Arena


  Arena dapprima cerca la propria URL predefinita quando lanciato senza
  argomenti. Questa  codificata nell'eseguibile ma pu essere
  sovrascritta tramite la variabile d'ambiente WWW_HOME.
  L'amministratore di sistema pu inserire la linea
  WWW_HOME="http://localhost" in /etc/profile. La variabile deve essere
  esportata, o tramite una istruzione separate (export WWW_HOME) o
  appendendo WWW_HOME all'istruzione export esistente:




  ______________________________________________________________________
  WWW_HOME="http://localhost"
  export WWW_HOME
  ______________________________________________________________________


  Al successivo login, la nuova URL predefinita sar nota ad Arena a
  livello di sistema.


  3.5.3.  Installazione e configurazione di Netscape


  Netscape  un prodotto commerciale e quindi non incluso nelle
  distribuzioni Linux.  scaricabile da Internet o disponibile in
  collezioni software su CD-ROM. Netscape giunge in forma binaria
  precompilata per ogni importante piattaforma hardware. Per scopi di
  installazione,  utile creare una directory /usr/local/Netscape/ dove
  scompattare l'archivio. I file possono essere lasciati sul posto
  (eccetto per le librerie Java: seguire le istruzioni nel file README
  accluso ai binari Netscape), ed  sufficiente creare un link in
  /usr/local/bin/ eseguendo il comando

  # ln -s /usr/local/Netscape/netscape .


  dalla directory /usr/local/bin/.

  Netscape  ora pronto per l'uso e pu essere configurato attraverso il
  men `Options''. In ``General Preferences'' c' una scheda
  ``Appearance'' con il campo ``Home Page Location''. Immettere qui
  http://localhost e non dimenticare di salvare le opzioni (attraverso
  ``Options'' --- ``Save Options'') prima  di uscire da Netscape.
  All'avvio successivo, Netscape mostrer l'homepage di Apache.


  3.6.  Cooperazione tra Apache e i Browser


  Si pu ora condurre il primo test reale del browser e del server http:
  avviare uno dei browser disponibili e la pagina Apache: Red Hat Linux
  Web Server apparir.  Questa pagina mostra la locazione dei file e
  altre informazioni basilari sull'installazione del server http. Se
  questa pagina non viene mostrata controllare se i file menzionati
  sopra sono nel posto giusto e se la configurazione del browser 
  corretta. Chiudere i file di configurazione editati prima di lanciare
  il browser di nuovo. Se tutti i file sono a posto e la configurazione
  del browser sembra corretta, esaminare il setup di rete della propria
  macchina. L'hostname potrebbe essere differente da quello immesso
  nella configurazione, o il setup di rete potrebbe essere in s non
  corretto.  molto importante che /etc/hosts contenga almeno una linea
  come

  ______________________________________________________________________
  127.0.0.1               localhost localhost.localdomain
  ______________________________________________________________________


  che implica la possibilit di connettersi localmente alla propria
  macchina. Questo  verificabile richiamando uno dei programmi di rete
  che richiedono un hostname come argomento, come telnet localhost
  (ammesso che telnet sia installato). Se l'esecuzione fallisce occorre
  verificare la configurazione di rete prima di continuare.



  3.7.  Il Motore Database e la sua installazione


  L'installazione del database richiede poca preparazione in pi
  rispetto ai passi precedenti.  Ci sono pochi motori database SQL
  disponibili, con differenti prerequisiti per l'amministrazione e
  l'esecuzione, ed uno dei migliori  msql, o ``Mini-SQL'' di David
  Hughes. msql  shareware. A seconda della versione utilizzata, 
  previsto un addebito di 250 dollari USA o pi per siti commerciali, 65
  dollari o pi per utenti privati, mentre enti educativi, formativi e
  organizzazioni no-profit registrate possono usare il software
  gratuitamente.  I costi esatti sono forniti nelle note di licenza
  della documentazione del database. Le cifre indicate sono solo un
  indicatore approssimativo.

  Alcune parole per giustificare la scelta di msql da parte dell'autore.
  Prima di tutto, c' l'esperienza personale. Durante la ricerca di
  motori database, msql si  dimostrato il pi semplice da installare e
  mantenere, e fornisce una sufficiente copertura del linguaggio SQL
  tale da soddisfare le esigenze generali. Solo durante la stesura di
  questo articolo l'autore ha scoperto le seguenti parole nell'Alligator
  Descartes' DBI FAQ (perl database interface FAQ):


       Dal punto di vista dell'autore, se l'insieme di dati  rela
       tivamente piccolo, con tabelle inferiori al milione di
       righe, e meno di mille tabelle in un dato database, allora
       mSQL  una soluzione perfettamente accettabile per il vostro
       problema. Questo database  estremamente economico, merav
       igliosamente robusto ed ha un supporto eccellente. [...]


  Msql  disponibile attualmente in due versioni, msql-1.0.16 e
  msql-2.0.1, che differiscono in prestazioni (non osservabili in
  progetti di piccola scala) e software allegato (la versione pi
  recente presenta pi strumenti, un proprio linguaggio di scripting
  ecc.). Verranno descritte entrambe le versioni di msql siccome la loro
  installazioni differisce in alcuni punti.


  3.7.1.  Installazione di msql-1.0.16


  msql  disponibile in formato sorgente ed in forma binaria compilata
  con supporto ELF. L'uso dei binari ELF rende l'installazione semplice
  in quanto l'archivio msql-1.0.16.ELF.tgz contiene un albero di
  directory assoluto e completo, cosicch tutte le directory sono create
  correttamente quando estratte da /.

  Se si decide di compilare msql-1.0.16 e si intende usare il pacchetto
  MsqlPerl piuttosto che l'interfaccia DBI (vedere una trattazione
  dettagliata delle differenze pi oltre) tenere presente che MsqlPerl
  potrebbe segnalare degli errori in fase di test che richiedono
  l'installazione di una patch per correggere una errata gestione
  dell'SQL.  La patch  descritta nella documentazione MsqlPerl (file
  patch.lost.tables).  In particolare le richieste di MsqlPerl
  includeranno tre linee in msqldb.c dopo la linea 1400 che riporta
  entry->def = NULL;:

          *(entry->DB) = 0;
          *(entry->table) = 0;
          entry->age = 0;




  La porzione di codice dovrebbe apparire come

  ______________________________________________________________________
          freeTableDef(entry->def);
          safeFree(entry->rowBuf);
          safeFree(entry->keyBuf);
          entry->def = NULL;
          *(entry->DB) = 0;
          *(entry->table) = 0;
          entry->age = 0;
  ______________________________________________________________________



  La compilazione di msql richiede diversi passi. Dopo la scompattazione
  dell'archivio con i sorgenti  necessario costruire una directory
  destinazione. Questo si ottiene con

  # make target


  Se tutto va bene, il sistema risponde con


       Build of target directory for Linux-2.0.30-i486 complete




  Bisogna ora spostarsi nella directory appena creata ed immettere dap
  prima il comando

  # ./setup


  La sequenza ./  necessaria per assicurarsi di eseguire il comando
  setup in questa directory e non un altro con lo stesso nome. Verr
  richiesto di scegliere la locazione della directory con i sorgenti e
  se si desidera una installazione come utente root. Una volta che
  l'utente ha effettuato le scelte il sistema esegue una serie di test
  per verificare la disponibilit di software (compilatore, utilit
  ecc.) per terminare col messaggio


       Ready to build mSQL.
       You may wish to check "common/site.h" although the defaults should be
       fine.  When you're ready, type  "make all" to build the software




  Si potr immettere

  # make all


  Se tutto va come previsto, si legger:









  make[2]: Leaving directory `/usr/local/Minerva/src/msql'
  <-- [msql] done

  Make of mSQL complete.
  You should now mSQL using make install

  NOTE : mSQL cannot be used free of charge at commercial sites.
         Please read the doc/License file to see what you have to do.

  make[1]: Leaving directory `/usr/local/Minerva/src'




  Tutti i binari devono essere resi visibili dal percorso di ricerca
  creando dei link software in /usr/local/bin/. Spostarsi nella
  directory ed immettere il comando

  # ln -s /usr/local/Minerva/bin/* .


  dopo il quale i link saranno impostati correttamente.


  3.7.2.  Test di msql-1


  Dopo l'installazione  possibile testare se il database funziona.
  Prima di ogni altra cosa il server (demone) deve essere avviato.
  L'amministratore di sistema con i privilegi di root immette il comando

  # msqld &


  (non dimenticare di aggiungere il simbolo &, altrimenti msql non verr
  eseguito in background) dopodich apparir il seguente messaggio a
  schermo:


       mSQL Server 1.0.16 starting ...

       Warning : Couldn't open ACL file: No such file or directory
       Without an ACL file global access is Read/Write




  Questo messaggio ci informa che ogni cosa funziona ma che non esistono
  restrizioni di accesso. Per il momento  sufficiente avviare il demone
  msql da shell, ma in seguito si potrebbe desiderare che il sistema
  esegua automaticamente il comando per noi.  Il comando deve essere
  inserito in uno script rc.d appropriato.  Solo ora l'amministratore
  pu immettere il primo comando effettivo di database:

  # msqladmin create inventur


  msql risponde con Database "inventur" created.. Come ulteriore prova,
  si verifichi che la directory /usr/local/Minerva/msqldb/ contiene ora
  la sottodirectory vuota ../inventur/. Potremmo manipolare il nuovo
  database con gli strumenti di amministrazione; queste procedure sono
  tutte coperte in dettaglio dalla documentazione msql.




  3.7.3.  Installazione di msql-2.0.1


  C' una versione pi recente e pi potente del server mSQL di Huges,
  l'installazione del quale differisce in pochi punti.  L'installazione
  ex-novo di msql-2 implica i passi seguenti.  Copiare l'archivio nel
  punto di estrazione previsto, per esempio /usr/local/msql-2/, poi
  estrarre i file:

  # tar xfvz msql-2.0.1.tar.gz



  Spostarsi nella directory radice dell'albero di installazione e
  immettere

  # tar xfvz msql-2.0.1.tar.gz



  spostarsi in targets e cercare il proprio tipo di piattaforma.
  Dovrebbe esserci una nuova sottodirectory Linux-(vostra
  versione)-(vostra cpu)/.  Spostarsi in essa ed avviare il programma di
  setup:

  # ./setup



  C' anche un file site.mm che pu essere editato.  Vogliamo conservare
  il percorso di installazione in /usr/local/Minerva/ (predefinito per
  msql 1.0.16)?  In questo caso modificare la linea INST_DIR=... di
  conseguenza. Altrimenti, lasciare tutto com'.

  Ora possiamo lanciare la compilazione del database

  # make
  # make install



  Se tutto va per il vero giusto, vedremo un messaggio come:


       [...]

       Installation of mSQL-2 complete.

       *********
       **   This is the commercial, production release of mSQL-2.0
       **   Please see the README file in the top directory of the
       **   distribution for license information.
       *********




  Dopo che tutto  installato correttamente dobbiamo curarci dei
  dettagli amministrativi. Qui comincia la vera differenza da msql-1.
  Anzitutto, creare un utente responsabile della amministrazione del
  database.


  # adduser msql


  Poi si imposti msql come proprietario di tutti i file nella directory
  mSQL col comando:

  # cd /usr/local/Minerva
  # chown -R msql:msql *



  Poi possiamo creare link per tutti gli eseguibili binari del database
  in /usr/local/bin/ col comando:

  # ln -s /usr/local/Minerva/bin/* .





  3.7.4.  Test di msql-2

  Possiamo avviare il server database con il comando msql2d &; dovremmo
  ottenere una risposta simile a questa:


       Mini SQL Version 2.0.1
       Copyright (c) 1993-4 David J. Hughes
       Copyright (c) 1995-7 Hughes Technologies Pty. Ltd.
       All rights reserved.

               Loading configuration from '/usr/local/Minerva/msql.conf'.
               Server process reconfigured to accept 214 connections.
               Server running as user 'msql'.
               Server mode is Read/Write.

       Warning : No ACL file.  Using global read/write access.




  Ci sembra perfetto. Il database  compilato ed installato, e possiamo
  ora continuare con i moduli perl siccome questi si basano in parte
  sulla presenza di un database funzionante per il test.

  Incidentalmente, questo  anche un buon momento per stampare il
  manuale completo fornito con msql-2.0.1:

  # gzip -d manual.ps.gz
  # lpr manual.ps



  Possiamo ora procedere con la compilazione delle interfacce, ma  una
  buona idea mantenere il server SQL attivo ed in esecuzione perch ci
  rende il test delle librerie di interfaccia un po' pi semplice.


  3.8.  Scelta delle interfacce: DBI/mSQL, MsqlPerl, Lite

  Una frase spesso citata del Camel Book (la principale documentazione
  perl) afferma che c' pi di un modo di ottenere un risultato quando
  si usa perl. Questo, ahim, resta vero anche per il nostro modello di
  applicazione. Ci sono fondamentalmente tre modi di accedere ad un
  database msql via CGI. Prima di tutto la domanda  se utilizzare o
  meno perl. Se usiamo perl (su ci si focalizza questo articolo)
  potremo ancora scegliere tra due modelli completamente diversi di
  interfaccia. A fianco del perl, possiamo anche utilizzare il
  linguaggio scripting di msql, chiamato Lite, che  ragionevolmente
  semplice e simile al C.


  3.8.1.  DBI e DBD-mSQL

  Al momento della redazione di questo articolo, l'uso della interfaccia
  perl DBI per l'accesso a database viene preferito. DBI ha alcuni
  vantaggi: fornisce un controllo unificato di accesso ad un numero di
  database commerciali per mezzo di un unico insieme di comandi. Il
  database effettivamente in uso su un dato sistema  poi contattato
  attraverso un driver che nasconde efficacemente le peculiarit del
  database al programmatore. Cos, l'uso di DBI permette una agevole
  transizione tra differenti database di differenti produttori. In un
  singolo script  possibile contattare diversi database. Fare
  riferimento alle DBI-FAQ per i dettagli.  C', tuttavia, uno
  svantaggio: l'interfaccia DBI  ancora in fase di sviluppo e i numeri
  di versione aumentano rapidamente (talvolta gli aggiornamenti si hanno
  in meno di un mese). Analogamente, anche i singoli driver di database
  sono aggiornati frequentemente e possono riferirsi a specifiche
  versioni dell'interfaccia di database.  Utenti che effettuano nuove
  installazioni dovrebbero attenersi strettamente ai numeri di versione
  dati in questo articolo perch altre versioni possono causare problemi
  di compilazione e di test la risoluzione dei quali non  cosa per
  gente debole di cuore.


  3.8.2.  MsqlPerl

  MsqlPerl  una libreria per l'accesso a msql direttamente da script
  perl. Essa scavalca l'interfaccia DBI ed  piuttosto compatta.
  Sebbene essa lavori bene con entrambe le versioni di msql, il suo uso
  non  pi consigliato a vantaggio dell'interfaccia DBI generalizzata.
  Nondimeno, in un contesto specifico, MsqlPerl pu risultare la scelta
  giusta grazie alle dimensioni contenute ed alla facilit di
  installazione. Da notare, essa ha meno dipendenze dalla versione di
  quelle rivelate dall'interazione di DBI con diversi driver di
  database.


  3.8.3.  Il linguaggio scripting di msql: Lite

  Ultimo ma non meno importante, msql-2 possiede un suo linguaggio di
  script: Lite. Il linguaggio  un parente stretto del C, snellito dalle
  sue stranezze e arricchito con caratteristiche di tipo shell (in
  sintesi, qualcosa di simile ad una versione di perl molto
  specializzata). Lite  un linguaggio semplice ed  ben documentato nel
  manuale msql-2. Il pacchetto msql-2 fornisce anche una applicazione di
  esempio basata su Lite.

  Non descriveremo Lite in questa sede perch esso  specifico di
  msql-2, e perch si assume che i lettori di questo articolo abbiano un
  interesse ed una comprensione di base del perl. Nondimeno un
  approfondimento di Lite  altamente raccomandato: Lite pu fornire la
  soluzione vincente in un ambiente basato esclusivamente su msql-2
  (senza ricorso ad altri database), grazie alla sua concezione semplice
  e diretta.


  3.9.  La via generale: DBI e DBD-msql

  Assumiamo che perl sia stato installato durante il setup di sistema o
  attraverso il gestore pacchetti summenzionato. Non daremo altri
  dettagli qui.  Per verificare che la versione di perl sia aggiornata
  eseguiamo:


  # perl -v



  perl dovrebbe rispondere col seguente messaggio:



        This is perl, version 5.003 with EMBED
               Locally applied patches:
               SUIDBUF - Buffer overflow fixes for suidperl security

               built under linux at Apr 22 1997 10:04:46
               + two suidperl security patches

       Copyright 1987-1996, Larry Wall




  Probabilmente, tutto  a posto.  Il passo successivo include
  l'installazione delle librerie perl per database in generale (DBI), il
  driver msql (DBD-mSQL) e CGI. Il driver CGI  necessario in ogni caso.
  Sono necessari i seguenti archivi:

  1. DBI-0.81.tar.gz

  2. DBD-mSQL-0.65.tar.gz

  3. CGI.pm-2.31.tar.gz (or successivo)

  Qui occorre una puntualizzazione per i neofiti: l'installazione di
  test descritta qui funziona bene utilizzando software con esattamente
  questi numeri di versione, mentre combinazioni di altre versioni
  falliscono per un motivo o per l'altro.  Il debug di combinazioni di
  versioni difettose  sconsigliabile a chi non abbia grande familiarit
  con i dettagli delle convenzioni di chiamata delle interfacce ecc.  In
  alcuni casi un metodo pu essere semplicemente rinominato pur
  effettuando lo stesso compito, ma a volte la struttura interna cambia
  significativamente. Quindi, ancora una volta,  necessario mantenere i
  numeri di versione qui indicati se si vuole operare in sicurezza,
  anche se nel frattempo fossero comparse versioni successive.
  Aggiornamenti frequenti di queste interfacce sono una regola piuttosto
  che un'eccezione, quindi l'installazione di versioni differenti da
  quelle indicate pu essere fonte di problemi.

   molto importante che il driver di database per mSQL (DBD-mSQL) sia
  installato dopo l'interfaccia generica DBI.

  Si comincer creando la directory /usr/local/PerlModules/ siccome 
  molto importante mantenere l'albero originale delle directory perl
  intatto. Potremmo anche scegliere un nome di directory diverso siccome
  il nome non  assolutamente critico, e sfortunatamente ci non 
  specificato nei file README dei vari moduli perl.  Dopo aver copiato
  gli archivi suddetti in /usr/local/PerlModules/ li scompattiamo con

  # tar xzvf [file-archivio]



  per ognuno dei tre archivi. Non dimenticare di fornire il nome di file
  corretto a tar. Il processo di installazione per i tre moduli 
  essenzialmente standardizzato; solo i messaggi a schermo che mostrano
  passi significativi per i singoli pacchetti sono riportati nel
  seguito.

  3.9.1.  Installazione dell'interfaccia database di perl - DBI


  L'interfaccia verso il database deve sempre essere installata prima
  del driver di database specifico. La scompattazione dell'archivio DBI
  crea la directory /usr/local/PerlModules/DBI-0.81/.  Spostandosi nella
  directory, si trovano un file README (che andrebbe letto) ed un perl-
  Makefile (estensione .PL).  Diamo il comando

  # perl Makefile.PL



  Il sistema dovrebbe rispondere con un lungo messaggio la cui parte
  importante  mostrata qui:



       [...]
       MakeMaker (v5.34)
       Checking if your kit is complete...
       Looks good
               NAME => q[DBI]
               PREREQ_PM => {  }
               VERSION_FROM => q[DBI.pm]
               clean => { FILES=>q[$(DISTVNAME)/] }
               dist => { DIST_DEFAULT=>q[clean distcheck disttest [...]
       Using PERL=/usr/bin/perl

       WARNING! By default new modules are installed into your 'site_lib'
       directories. Since site_lib directories come after the normal library
       directories you MUST delete old DBI files and directories from
       your 'privlib' and 'archlib' directories and their auto subdirectories.

       Writing Makefile for DBI




  Questo dovrebbe andare bene, come indicato dal programma (looks good),
  e possiamo procedere col passo successivo:

  # make


  Se non si hanno messaggi di errore (il protocollo dettagliato mostrato
  a schermo non  un messaggio di errore) si testi la nuova libreria
  installata con il comando

  # make test


  Osservare le seguenti linee di output (effettuare lo scroll all'indi
  etro con [Shift]-[PgUp]):












  [...]
  t/basics............ok
  t/dbidrv............ok
  t/examp.............ok
  All tests successful.
  [...]
  DBI test application $Revision: 1.20 $
  Switch: DBI-0.81 Switch by Tim Bunce, 0.81
  Available Drivers: ExampleP, NullP, Sponge
  ExampleP: testing 2 sets of 5 connections:
  Connecting... 1 2 3 4 5
  Disconnecting...
  Connecting... 1 2 3 4 5
  Disconnecting...
  Made 10 connections in  0 secs ( 0.00 usr  0.00 sys =  0.00 cpu)

  test.pl done




  Il passo finale  quello di installare tutti i file nelle directory
  appropriate. Ci si ottiene col comando

  # make install


  Non resta altro. Se per qualche ragione l'installazione fallisce e
  deve essere rieseguita non dimenticarsi di eseguire prima

  # make realclean


  Questo rimuove i resti indesiderati della precedente installazione. Si
  possono anche rimuovere i file installati copiando il contenuto dello
  schermo (mostrato abbreviato)


       Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBIXS.h
       Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.so
       Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.bs
       [...]
       Writing /usr/lib/perl5/site_perl/i386-linux/auto/DBI/.packlist
       Appending installation info to /usr/lib/perl5/i386-linux/5.003/perllocal.pod




  in un file, rimpiazzando ogni occorrenza di Installing con rm.  Se
  tale file viene chiamato uninstall si pu poi eseguire

  # . uninstall


  che rimuover i file installati.


  3.9.2.  Il driver msql di perl DBD-mSQL


  Il driver msql pu essere installato soltanto dopo la felice
  installazione dell'interfaccia generica per database di perl.

  I passi fondamentali sono gli stessi di sopra; cos avremo dapprima


  # perl Makefile.PL



  Qui, il sistema dovrebbe rispondere con un invito alla lettura della
  documentazione a corredo. Esso rilever poi dove risiede msql, e
  chieder quale versione  in uso.



       $MSQL_HOME not defined. Searching for mSQL...
       Using mSQL in /usr/local/Hughes

        -> Which version of mSQL are you using [1/2]?




  inserire il numero di versione corretto. Seguiranno poche linee di
  testo.  Osservare le seguenti:


       Splendid! Your mSQL daemon is running. We can auto-detect your configuration!

       I've auto-detected your configuration to be running on port: 1114




  Si pu ora testare il driver con

  # make test


  Di nuovo, segue un output piuttosto lungo. Se esso termina con


       Testing: $cursor->func( '_ListSelectedFields' ). This will fail.
               ok: not a SELECT in msqlListSelectedFields!
       Re-testing: $dbh->do( 'DROP TABLE testaa' )
               ok
       *** Testing of DBD::mSQL complete! You appear to be normal! ***




  si  sulla buona strada ed  possibile installare il driver con

  # make install


  Questo conclude le operazioni di installazione; il prossimo paragrafo
  riguarda MsqlPerl e se si  scelto l'uso di DBI pu essere saltato.


  3.10.  L'interfaccia MsqlPerl

  Se si decide di usare esclusivamente l'interfaccia MsqlPerl non
  occorre il driver di database generico, ma solo MsqlPerl-1.15.tar.gz,
  siccome, come detto in precedenza, MsqlPerl fornisce una interfaccia
  diretta tra server database e perl senza l'uso dell'interfaccia DBI.
  Installazione e test sono immediati.

  Dopo aver eseguito perl Makefile.PL l'utilit make pu essere avviata.
  Dapprima occorrer rispondere alla domanda su dove risiede msql.  Se
  msql  in /usr/local/Minerva/ si potr confermare la risposta di
  default.

  Poi eseguire make test. Prima di ci bisogna assicurarsi di avere un
  database chiamato test e di possedere i diritti di lettura/scrittura
  su di esso. Tale database pu essere creato con

  # msqladmin create test




  3.11.  La libreria CGI di perl


  L'installazione del componente CGI di perl  il pi semplice dei tre
  passi.  sufficiente eseguire i comandi seguenti nell'ordine dato e
  tutto  fatto:


  # perl Makefile.PL
  # make
  # make install




  Diversamente dai driver precedenti questa interfaccia non ha una
  opzione di test (# make test) siccome gli altri moduli devono essere
  testati in ogni caso.

  Viene anche creata una sottodirectory con script CGI di esempio. 
  possibile copiare i contenuti di questa directory in /home/http/cgi-
  bin/ ed usare il browser per sperimentare gli script.


  3.12.  Lista di controllo dell'installazione

  Abbiamo compiuto i passi seguenti, nell'ordine dato:

  1. Installazione di Linux con supporto di rete

  2. Installazione di un server http (Apache)

  3. Installazione di un browser (Arena, lynx o Netscape)

  4. Installazione di un server SQL (msql)

  5. Installazione di una interfaccia perl SQL

  6. Installazione dei file CGI

  Infine,  possibile fare un po' di pulizia. Tutti i rami di directory
  contenenti i sorgenti per le installazioni possono essere rimossi
  (tuttavia, non vanno cancellati gli archivi originali!) siccome tutti
  i file binari e la documentazione si trovano in directory differenti.


  4.  Esecuzione di un database di esempio


  Dopo il completamento dell'installazione del sistema si pu finalmente
  eseguire una modello di applicazione. A seconda della versione di msql
  installata e dell'interfaccia perl utilizzata si dovr modificare il
  programma di esempio in qualche punto.


  Innanzitutto, il file index.html posto in /home/httpd/html/ deve
  essere modificato per permettere di richiamare l'applicazione database
  campione.  possibile porre il database (che verr chiamato
  database.cgi o inventur.cgi nonostante il nome del file perl.lst.ck)
  nella directory /home/httpd/html/test/.

  Per ottenere lo scopo, appendere una linea (naturalmente dipendente
  dalle scelte di installazione) simile alla seguente nel file
  index.html:

  ______________________________________________________________________
  <LI>Test the <A HREF="test/database.cgi">Database, DBI:DBD-mSQL style!</A>
  <LI>Test the <A HREF="test/inventur.cgi">Database, MsqlPerl style!</A>
  ______________________________________________________________________



  Solitamente si dovrebbe mantenere una sola di queste due scelte, ma
  disponendo di entrambi i tipi di interfaccia database installata 
  possibile lasciare entrambe le linee cos come sono. Sar in seguito
  possibile comparare le prestazioni, ecc.


  4.1.  Adattamento dello script di esempio per MsqlPerl

  Allo script campione deve essere notificato l'uso dell'interfaccia
  MsqlPerl.  Le modifiche intervengono in diversi punti. Dapprima,
  vicino all'inizio del file, rimpiazzare la clausola use:

  ______________________________________________________________________
  #
  # use DBI;            # Interfaccia Database Generica
  use Msql;
  ______________________________________________________________________



  Poi, alla linea 27, la sintassi MsqlPerl non richiede la menzione di
  un driver specifico:


  ______________________________________________________________________
  # $dbh = DBI->connect($host, $database, '', $driver) ||
  $dbh = Msql->connect($host, $database) ||
  ______________________________________________________________________



  Poi, dalla linea 33 per tutto l'intero script, bisogna modificare
  tutte le istanze di do con query:


  ______________________________________________________________________
  # $dbh->do("SELECT * FROM hw") || db_init($dbh);
  $dbh->query("SELECT * FROM hw") || db_init($dbh);
  ______________________________________________________________________



  Infine, la linea 207 deve essere commentata:


  ______________________________________________________________________
  # $sth->execute || msg("SQL Error:", $sth->errstr);
  ______________________________________________________________________

  Inoltre, pu diventare necessario scambiare tutte le chiamate errstr
  come quella nel precedente frammento di codice con errmsg.  Anche
  questa scelta dipende dalla versione.

  Dopo queste modifiche, lo script dovrebbe girare senza intoppi.


  4.2.  Adattamento dello script di esempio per for msql-2

  La sintassi SQL  stata ridefinita durante lo sviluppo di msql-2. Lo
  script originale fallir l'esecuzione delle istruzioni di
  inizializzazione tabella nelle linee 45 -- 58. Il modificatore primary
  key non  pi supportato da msql-2, e dovrebbe essere semplicemente
  evitato:

  ______________________________________________________________________
      $dbh->do(<<EOT) || die $dbh->errstr; # Neue Personen-Tabelle
          create table person (
  # We do not need the 'primary key' modifier anymore in msql-2!
  #           pn        int primary key,   # Personalnummer
              pn        int,               # Personalnummer
              name      char(80),          # Nachname, Vorname
              raum      int                # Raumnummer
          )
  EOT
      $dbh->do(<<EOT) || die $dbh->errstr; # Neue Hardware-Tabelle
          create table hw (
  # We do not need the 'primary key' modifier anymore in msql-2!
  #           asset int primary key,       # Inventurnummer
              asset int,                   # Inventurnummer
              name   char(80),             # Bezeichnung
              person int                   # Besitzer
          )
  EOT
  ______________________________________________________________________



  Sfortunatamente, questo script accetter nuovi elementi con identico
  numero di personale; il modificatore msql-1 primary key intende
  prevenire esattamente questo comportamento. La documentazione msql-2
  mostra come usare la clausola CREATE INDEX per ottenere elementi
  univoci.


  5.  Conclusione e Riepilogo

  Se si  installato msql-2 sul proprio sistema si pu dare un'occhiata
  ai programmi d'esempio scritti in Lite, il linguaggio di scripting
  proprietario di msql-2.

  Entrambe le versioni di msql sono fornite con un insieme base di
  strumenti di amministrazione che permettono all'utente di creare e
  cancellare tabelle (msqladmin) e di esaminare le strutture di database
  (relshow).

  La seconda generazione di msql (cio msql-2) presenta qualche
  strumento in pi: msqlimport e msqlexport. Questi permettono
  l'esportazione e l'importazione di dati sotto forma di file di testo
  da e verso database SQL.  Possono essere usati per il caricamento di
  quantit di dati esistenti d'un colpo in tabelle gi create, o
  l'estrazione di dati da tabelle, in modo che l'utente non debba
  scrivere alcuna linea di perl o SQL o qualsiasi altro codice per
  questi compiti.


  Se si desidera scrivere propri script perl per l'interazione con
  database si trover sufficiente supporto nei file di esempio e nella
  estensiva documentazione in linea fornita col modulo DBI.

  Ad ogni modo, si  ora pronti per cominciare e presentare i propri
  dati ad utenti della propria rete, o anche del Web.