Obligement - L'Amiga au maximum

Jeudi 21 septembre 2017 - 07:09  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


En pratique : mSQL - principes de base
(Article écrit par Olivier Adam - septembre 2000)


"Les bases de données, l'Amiga, etc."

Le but de cet article, en quelques mots, sera de vous présenter brièvement un des systèmes de gestion de base de données parmi les plus classiques : mSQL.

Nous en étudierons quelques-uns des concepts les plus simples. Ainsi, chacun pourra mesurer toute l'universalité de ce système. Il se trouve que ce système fonctionne sur mon Amiga. J'en déduis qu'il devrait fonctionner aussi sur le vôtre, pour peu que le prérequis soit respecté. Par contre, je suis obligé d'avouer qu'il faut savoir piloter un Amiga pour envisager cette installation.

En effet, la mise en oeuvre de ce système requiert des connaissances assez poussées de l'Amiga :
  • Le Shell,
  • MultiUser,
  • AmiTCP,
  • Ixemul.
1. Historique

Les Systèmes de Gestion de Base de Données

1.1 Architecture

L'informatique sert à traiter des données, dit-on. En effet, et la formule la plus couramment adoptée est la base de données. Cette base pourrait parfaitement être un fichier de tableur, bien sûr, bien que si cette base était accédée par plusieurs personnes, il serait plus sage de l'écarter du contact direct des utilisateurs. Dans cette optique, un Serveur de Base de Données est une couche entre des bases et des clients, qui interrogent ces bases :

base <----> serveur <----> client

Il s'agit donc d'une architecture client/serveur, qui utilise TCP/IP pour transporter ses commandes.

1.2 SQL ou Structured Query Language

Né aux environs de 1977, ce langage fut conçu pour interroger les bases de données et pour les piloter. Devenu une norme, il a été décliné sous de nombreuses versions on peut citer par exemple : mSQL, MySQL, PostGreSQL.

Dans notre cas, nous nous intéresseront à mSQL

1.3 Fonctionnement

Le serveur, tournant en tâche de fond, est interrogé par les clients qui s'y connectent.

Le serveur nourrit la base et la maintient. Seul. Cela signifie qu'il n'est pas nécessaire pour les clients de savoir où ces fameuses bases se trouvent. De même, la structure physique des données sur le disque n'a aucune sorte d'importance.

Il est administré par ceux qui peuvent exécuter les commandes msql, soit l'utilisateur nommé msql, soit le super-utilisateur : root. Ces commandes, externes au serveur, sont utilisées pour créer ou détruire des bases, voire pour importer des données...

Pour le reste du monde, seule la commande msql est accessible, bien que par sécurité, il faille restreindre les accès, à l'aide par exemple, d'une table d'IP créée dans le fichier netdb de votre configuration TCP/IP à la rubrique ACCESS.

Pour vraiment exploiter ce SGBD de façon académique, il faut interdire toute connexion externe (hors localhost), et travailler avec un serveur Web, qui interroge la base à l'aide de scripts, par exemple, écrits en php. Ce genre de configuration est possible avec un Amiga, bien entendu.

1.4 mSQL pour mini-SQL

Ce système de Hugues Technologies, emprunte tout au SQL, bien qu'il soit moins étoffé. D'où son nom : Mini-SQL, il est multi plates-formes, et il existe un kit msql pour Amiga, dont l'auteur est Christophe Sollet ; il s'agit d'un portage très fidèle de la version Un*X, démontrant une fois de plus le sex-appeal de notre dream-machine favorite.

1.5 Mini, mini, c'est vite dit !

Mouillé, le bébé peut peser très lourd : le nombre d'enregistrements est énorme. La documentation déclare que le logiciel accepte dans le million d'enregistrements, paf. Si vous voulez faire une base de votre collection de CD c'est parfait.

Les commandes Shell du paquet msql2 sont totalement identiques à celles de Linux, par exemple. Le portage Amiga est total, vous pouvez donc, grâce à ces commandes, piloter une base située sur une machine Linux ; ou utiliser Linux pour interroger un serveur Amiga. Yark. Un serveur Amiga. Après tout, ça chauffe pas, un Amiga, en plus, l'alimentation, elle fait à peine 25W, c'est écolo !

Au menu :

Article Version 4.25
1 Amiga VER$: 3.0 Prisoner of war
AmiTCP VER$: B3 Shareware
MultiUser VER$: 1.8 Shareware
E VER$: 3.3e Freeware (seulement la v3.3e)
ixemul VER$: 48 GNU
msql.library VER$: 5.3 (19.02.99) Freeware
msql VER$: 2.0.10.1 (07.00) Exploitation personnelle gratuite

Avec du matériel d'occasion et le programme entièrement gratuit, il ne reste qu'Internet à payer... Vous remarquerez par exemple une version très ancienne d'AmiTCP, cette version de bêta-test gratuite est compatible avec les autres logiciels. Je suppose que Miami fonctionne avec aussi, mais je n'ai pas testé...

Le E est optionnel, la programmation aussi, mais un Amiga aussi est optionnel, d'ailleurs, éteignez cet écran, levez-vous, marchez vers la fenêtre et volez !

Dans le même esprit, vous pouvez vous passer de la pile TCP/IP et de MultiUser. Le serveur pouvant sous certaines conditions tourner sans. Malgré tout, je vous le conseille fermement.

Pour ma part voici mon équation Amiga :
Matériel : A1200, Kickstart 3.1, 68060 à 50 MHz, 48 Mo de mémoire, disque dur 1 Go, SCSI (lecteur de CD, disque dur, SyQuest).
Logiciels : Workbench 3.1, MuPFS2, Executive 2, AmiTCP V3.

2. Installation !

Considérons l'interface réseau par défaut, lo0, comme étant fonctionnelle, soit :

SYS:> ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=1 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=1 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=1 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=255 time=1 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=255 time=1 ms

--- localhost ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 1/1/1 ms

Considérons que MultiUser est actif :

SYS:> who am i
System Administrator (root)

Nous sommes root et possédons tous les droits.

A supposer que les répertoires de MultiUser et ou de AmiTCP pointent vers les répertoires standards de l'Amiga soit S: pour les scripts et C: pour les commandes (la structure de votre système de fichiers n'en sera que simplifiée et les protections aussi).

Attention, c'est très chaud (conseil MultiUser : utiliser MuMu1.0 est une bonne idée).

On a donc :

SYS:> assign amitcp: sys:
SYS:> makelink sys:db sys:s force soft
SYS:> makelink sys:bin sys:c force soft
SYS:> makekeyfiles sys:s sys:s sys:

Nous créons un nouvel utilisateur par addition d'une ligne au fichier des mots de passe, exemple :

SYS:S> echo "msql||4098|2048|Database User|SYS:Homes/users/msql|" >> passwd

Avec, par exemple, le fichier de groupe (multiuser.group) :

SYS:S> type group
root|65535|65535|The root group
users|2048|65535|Users Group

On a omis le dernier champ de S:passwd, "NewCLI" par exemple, pour ne pas laisser de "trou de sécurité". Parce que SQL n'est pas un utilisateur mais l'identité sous laquelle tourne cette base de données. Cette combine ne nous prive pas du droit de faire "su msql" et d'obtenir un Shell sous cet utilisateur, pour la maintenance, par exemple...

On lui choisira un mot de passe, pour éviter les bavures, avec passwd msql.

Après avoir décompressé les archives msql2-0.10...

Le lha (si c'est une archive lha) par :

SYS:> lha x chemin/source disque:chemin/

Le tar par :

tar -xvf /disque/chemin/source /disque/chemin/

Le tgz par :

tar -xzvf /disque/chemin/source /disque/chemin/

La commande Tar est trouvée dans l'archive Geek-Gadgets par exemple. Que l'on utilise ou non des chemins Amiga (tronc:branche/feuille) ou UniX (/tronc/branche/feuille) importe peu, puisque ceci est paramétrable grâce à ixprefs, ce qui nous permet au passage de vérifier que la couche réseau est bien du type AmiTCP et que celle de sécurité est bien MultiUser.

En fait, Assign: équivaut à /Assign/, c'est tout. Il n'y a pas de "/." chez Amiga.

A supposer que l'installation de msql se trouve une fois décompressée dans sys:msql (on a utilisé pour cela le script Installer fourni avec). On doit d'abord attribuer une assignation à mslq :

SYS:> assign msql: sys:msql
SYS:> path msql: msql:bin add

De même, certains fichiers se doivent d'appartenir au serveur :

SYS:> msql:
SYS:msql> mlist
License 2264 ----rwedr---r--- 01-Mai-99 root
Amiga-mSQL.guide 2548 ----rw-dr---r--- 13-Juil-00 root
RELEASE_NOTES 1919 ----rwedr---r--- 01-Mai-99 root
MSQL_BOOK 528 ----rwedr---r--- 01-Mai-99 root
install msql 1987 ----rwedr---r--- 22-Juil-00 root
bin dir ----rwedr---r--- 22-Juil-00 root
lib dir ----rwedr---r--- 22-Juil-00 root
scr dir ----rwedr---r--- 22-Juil-00 root
msql2.sock 0 ----rwedrwedrwed 11-Août-00 root
INSTALL 3882 ----rwedr---r--- 03-Juin-99 root
msqldb dir ----rwedr---r--- 01-Août-00 msql
www dir ----rwedr---r--- 12-Juil-00 root
README 3116 ----rwedr---r--- 01-Mai-99 root
msql2d.pid 10 ----rwed-------- 11-Août-00 msql
msql.conf 1107 ----rw-dr---r--- 22-Juil-00 msql
misc dir ----rwedr---r--- 12-Juil-00 root
makegen dir ----rwedr---r--- 12-Juil-00 root
doc dir ----rwedr---r--- 12-Juil-00 root
msql.acl 195 ----rwedr---r--- 04-Jan-98 root
doc.info 2058 ----rw-dr---r--- 13-Juil-00 root
Amiga-mSQL.guide.info 1573 ----rw-dr---r--- 13-Juil-00 root
Install mSQL.info 2257 ----rw-dr---r--- 22-Juil-00 root
14 files - 8 directories - 76 blocks used

Bien que j'ai un doute sur msql2.sock, enfin si quelqu'un a une bonne idée, je lui suggère de me la confier. J'en ferais part aux autres ! :-)

De même, voici le fichier de configuration msql.conf :

SYS:msql> type msql.conf
#
# msql.conf - Configuration file for Mini SQL Version 2
#
#---------------------------------------------------------------------------
#
# This file is an example configuration and may require modification to
# suit your needs or your site. The values given are the default values
# and will be used by the software if either this file is missing or a
# specific value is not specified.
#
#---------------------------------------------------------------------------
# NOTE : The install directory and all files/directories below it -must-
# be owned by the user specifed in the mSQL-User parameter (the
# user msql by default). If you change the mSQL-User value then
# you must 'chown -R' the install directory.
#

(general)

Inst Dir = /mSQL
DB Dir = %I/msqldb
mSQL User = msql
Admin User = root
Pid File = %I/msql2d.pid
TCP Port = 1114
UNIX Port = %I/msql2.sock

(system)

Msync Timer = 30
Host Lookup = True
Read Only = False
Remote Access = True
Local Access = True
#Query Log = False
#Query Log File = %I/query.log

(w3-msql)

Auth Host = NULL
Footer = True
Force Private = False

# Pour lancer le serveur :

SYS:> stack 200000
SYS:> startnet
SYS:> run msql2d

Voilà, si quelque chose a raté, les messages d'erreur fournis par les différentes applications sont suffisamment clairs pour pouvoir analyser la situation et remédier au problème, malgré tout, utilisez SnoopDOS et lisez les fichiers .log, en dernier lieu, laissez un message sur mon adresse électronique.

Pour vérifier que tout fonctionne :

SYS:> status
Process 1: Loaded as command: AmiTCP
Process 2: Loaded as command: executive
Process 3: Loaded as command: massign
Process 4: Loaded as command: massign
Process 5: Loaded as command: mubackdrop
Process 6: Loaded as command: Workbench
Process 7: Loaded as command: inetd
Process 8: Loaded as command: msql2d
Process 9: status

Donc tous les cadrans au vert, on peut envisager la seconde partie de l'opération. J'aime quand un plan se déroule sans accroc.

3. Usage

Les commandes msql :

La base lancée, le serveur tourne en tâche de fond, seul moyen d'y accéder, les commandes livrées avec :

msqladmin
msql
relshow
msqlimport
msqlexport

Création d'une base :

A cet effet nous utilisons

SYS:> msqladmin

usage : msqladmin (-h host) (-f conf) (-q) <Command>

where command = drop DatabaseName
  create DatabaseName
  copy FromDB ToDB
  move FromDB ToDB
  shutdown
  reload
  version
  stats

 -q Quiet mode. No verification OF commands.
Ce qui est lumineux, et appelle peu de commentaires.

D'où :

SYS:> msqladmin create ma-base
Database "ma-base" created.

Création d'une table :

A présent, nous devons nous connecter, à l'aide du client msql.

SYS:> msql ma-base
Welcome TO the miniSQL monitor. Type /h for help.

mSQL >

Nous sommes à présent connecté à notre base vide. Créons une table, table qui sera la brique fondamentale de notre base, elle sera constituée par la liste de nos copains, avec leur adresse électronique. Soit un tableau de 3 colonnes : nom, prénom, courriel.
Appelons ce tableau "carnet" et donnons une longueur quelconque aux chaînes :

mSQL > create table carnet (nom CHAR(15), prenom CHAR(15), courriel CHAR(30))
mSQL > //g

Query OK. 1 row(s) modified OR retrieved.

mSQL >

Récapitulons :
//g exécute la phrase sql, qui se lit dans le sens naturel du langage :

"crée une table dont le nom est carnet dont les éléments sont successivement nom qui est du type chaîne de 15 caractères maximum de longueur puis prénom qui est du type..."

Jusqu'à présent seule l'ossature de la base est créée. Or, il nous faut remplir ce récipient. Dès lors quittons le client pour donner à manger à notre base.

mSQL > //q

Bye !

SYS:>

Production des données :

Utilisons Ed pour cette tâche :

SYS:> HOME:
HOME:> ed fichier-saisie window=*
adam,olivier,olivieradam@123india.com
seldon,harry,harry.seldon@fondation.org
.
.
.
(Esc):x
HOME:>

Notre saisie terminée, il suffit de l'importer dans la base :

HOME:> msqlimport <fichier-saisie mabase carnet
HOME:>

Les requêtes d'interrogation :

Notre base est nourrie, examinons-la avec le client msql :

HOME:> msql mabase
Welcome to the miniSQL monitor. Type /h for help.

mSQL >

Soit la phrase : "Sélectionne tout le contenu de la table carnet" :

mSQL > select * from carnet
  -> //g
Query OK. 2 row(s) modified or retrieved.

nom prenom courriel
adam olivier olivieradam@123india.com
seldon harry harry.seldon@fondation.org

mSQL >

De la même façon :

mSQL > select nom from carnet where prenom like 'o%'
-> //g
Query OK. 1 row(s) modified or retrieved.

nom
adam

mSQL >

Cette requête est donc : "Sélectionne dans la table carnet le(s) nom(s) pour le(s)quel(s) la première lettre du prénom est 'o' "

J'espère que maintenant vous commencez à entrevoir les possibilités offertes par cette philosophie !

Terminons cette introduction par un outil, relshow, qui permettra d'apprécier le trajet parcouru :

HOME:> relshow

Database
mabase

HOME:> relshow mabase

Database = mabase

Table
carnet

HOME:> relshow mabase carnet

Database = mabase
Table = carnet

Field Type Lenght Not Null Unique Index
nom char 15 N N/A
prenom char 15 N N/A
courriel char 30 N N/A

Allons, toutes les bonnes choses ayant une fin, nous voici à la fin de ce laborieux article. J'espère que personne n'est traumatisé, j'adorerais avoir des retours sur la formule employée d'alternance de lignes de commentaires parmi des lignes d'AmigaDOS.

En attendant la suite, je vous conseille de bien réviser, parce que la fois prochaine, on programmera un peu, en E, en ARexx, en SQL donc, ou encore en AmigaGuide ou en Installer, parce que les langages de script ne manquent pas sur notre machine. En effet, pourquoi ne pas fournir une interface en AmigaGuide, qui lance des scripts ARexx générant des pages AmigaGuide dynamiques, en fonction des requêtes, voilà une solution système, pure ligne du Parti !

Jusqu'à cette occasion je vous dis :

break `status command=msql2d` ALL

Pour faire propre. :-)

Après tout, en Linux je vous dirais : "shutdown -fr now", mais ce n'est pas Linux, car pour éteindre un Amiga, point n'est besoin de devoir gratter plus sur les disques durs, on se penche et on arrache la prise du mur.

Il est temps d'aller manger un tube d'Aspirine ! Avec deux verres d'alcool à bruler.


[Retour en haut] / [Retour aux articles]