5 - InterBase 5.0

Qu'est-ce qu'InterBase 5.0 ?

Serveur actif

Evolutivité et portabilité

Client/Serveur à deux niveaux

Technologie InterBase Conformité SQL-92

Extensions SQL

Isolation des transactions

Transactions distribuées et validation automatique en deux phases

Architecture multigénération et verrouillage de bas niveau

Blobs et tableaux

Fonctions définies par l'utilisateur (UDF)

Optimiseur de requête

Evènements

Sécurité des bases de données

Support de l'international

Outils client/serveur d’Inprise

Interface ODBC

Documentation InterBase 6.0

Qu'est-ce qu'InterBase 5.0 ?

InterBase est un système de gestion de bases de données relationnelles complet, implémenté sous forme d'une architecture client/serveur à deux niveaux : une application client et une technologie serveur offrant un support transparent au travers de réseaux hétérogènes. Cette architecture flexible permet d'intégrer le moteur de base de données InterBase à une application verticale.

Les fonctionnalités de serveur actif d'InterBase se prêtent elles-mêmes aux opérations automatiques, de sorte que nous n'avons pas besoin d'administrateur dédié à la base de données. InterBase est de loin le serveur SGBDR le plus simple d'emploi.

L'intégration d'InterBase aux meilleurs outils de développement client/serveur et son implémentation des standards de l'industrie en font le choix idéal pour le développeur d'applications intégrées et orientées données.

Serveur actif 

InterBase a été le pionnier du concept de serveur actif, qui permet à la base de données elle-même de contenir les règles de gestion et de fonctionner comme gestionnaire central d'accès simultanés pour de nombreux clients. Voici les fonctionnalités d'InterBase qui supportent le concept de serveur actif :

• L'analyseur SQL est sur le serveur.

• Des déclencheurs côté serveur automatisent les règles de gestion.

• Des procédures stockées SQL implémentent sur le serveur des opérations de bases de données partagées, modulaires et respectant la sécurité.

• Des fonctions définies par l'utilisateur (UDF) élargissent le langage SQL.

• Des alerteurs d'événements informent les clients des modifications de la base de données.

• Le serveur maintient l'intégrité des données selon des règles d'intégrité référentielle déclarative avec des opérations en cascade.

• Les domaines et les contraintes enrichissent les types SQL.

• La validation (commit) en deux phases stabilise les transactions multibases de données distribuées.

Evolutivité et portabilité

InterBase implémente son interface de développement et sa technologie via une variété de configurations de plates-formes, assurant des fonctionnalités identiques. Cela garantit l'interopérabilité transparente des plates-formes hétérogènes et une migration en douceur lorsque les bases de données sont portées de la station de travail vers le serveur d'un groupe de travail ou d'un département. Les plates-formes supportées par InterBase 5.0 sont :

En outre, les plates-formes suivantes sont supportées par InterBase 4.0 et peuvent l'être en passant aux versions 5.x d'InterBase :

InterBase occupe un très faible encombrement, ce qui permet au logiciel de fonctionner aussi bien sur de modestes plates-formes que sur des serveurs milieu de gamme. L'installation minimale requiert moins de 3 méga-octets d'espace disque, alors que l'installation complète, avec tous les exemples et la documentation en ligne, nécessite moins de 20  méga-octets. Le serveur InterBase gère sans problème jusqu'à 150 clients simultanés.

Client/Serveur à deux niveaux

InterBase 5.0 comprend une installation client/serveur pour une des plates-formes ci-dessus et une bibliothèque client Windows 32 bits. Le client et le serveur peuvent communiquer par le biais des protocoles réseau suivants :

·       TCP/IP (tous les serveurs)

·       IPX/SPX (serveur Novell NetWare seulement)

·       NetBEUI/Named pipes (serveur Windows NT seulement)

Une plate-forme client quelconque peut communiquer de façon transparente avec n'importe quelle plate-forme serveur.

La bibliothèque client fournit une API pour que les applications client puissent soumettre des requêtes à InterBase et récupérer des données lorsqu'InterBase fonctionne sur un serveur NT, UNIX ou NetWare. La bibliothèque client implémente un protocole spécial, optimisé pour le réseau, pour communiquer avec le service InterBase distant. Les outils Inprise fournissent un accès transparent à la bibliothèque client InterBase via le BDE (Borland Database Engine).

InterBase pour Windows peut également être exécuté comme un moteur de bases de données locale, autonome, incorporé dans une application Windows. Cette configuration est appelée serveur InterBase local. Elle ne fait appel à aucun protocole réseau ; à la place, la bibliothèque client communique avec InterBase local par le biais d'une communication locale interprocessus.

Technologie InterBase Conformité SQL-92

InterBase implémente le niveau de base du standard SQL-92, ainsi que de nombreuses fonctionnalités issues du niveau intermédiaire et des fonctionnalités sélectionnées dans le niveau complet. InterBase possède le statut de membre votant dans le comité des standards ANSI SQL, H4. Les fonctionnalités SQL notables sont :

·       Intégrité référentielle déclarative avec des règles d'opérations en cascade

·       Rôles SQL pour offrir des privilèges de sécurité à des groupes d'utilisateurs

·       Syntaxe SQL-92 pour les clauses JOIN internes et externes

·       Vues sur les tables et les jointures

Extensions SQL

Des fonctionnalités d'InterBase avancées, comme les procédure stockées, ont servi de modèle au standard SQL-3 pour les objets de base de données. Les extensions notables à SQL implémentées dans InterBase sont :

Fonctionnalité

Description

Procédures stockées

Modularise les opérations de bases de données complexes

Procédures select

Renvoie les ensembles de résultats des requêtes

Définitions de domaines

Etend les types SQL de base

Déclencheurs

Automatise les règles de gestion

Générateurs

Implémente l'incrémentation automatique des valeurs entières

Isolation des transactions

Toutes les opérations de bases de données dans InterBase surviennent dans le contexte d'une transaction, comme dans tous les SGBDR complets. La transaction fournit un mécanisme pour isoler les modifications faites par une ou plusieurs opérations jusqu'à ce que l'application client valide (commit) la transaction. Cela se traduit également par la possibilité d'annuler (rollback) la transaction, ce qui annule toutes les modifications faites par les opérations qui sont dans le contexte de cette transaction.

Une application client peut supporter un nombre quelconque de transactions simultanées actives avec une base de données. Chacune a son propre contexte et sa propre opportunité de validation ou d'annulation. Cette possibilité de plusieurs transactions simultanées pour chaque client est caractéristique d'InterBase.

Transactions distribuées et validation automatique en deux phases

Non seulement une base de données peut avoir plusieurs transactions d'un seul client, mais InterBase permet à un client d'avoir une seule transaction qui opère sur plusieurs bases de données, pouvant même résider sur des serveurs distincts. La bibliothèque client InterBase gère de façon transparente toute cette "comptabilité". Si l'application client est connectée à plusieurs bases de données, lorsqu'elle lance une transaction, celle-ci est automatiquement définie en tant que transaction distribuée. D'une certaine façon, c'est une transaction virtuelle, correspondant à une vrai transaction pour chacune des bases de données. Le client InterBase garde la trace de tout cela, ce qui permet au développeur de l'application de maintenir une vue identique à celle d'une transaction distribuée. Aucune programmation particulière n'est requise.

Lorsque vous validez ou annulez une transaction distribuée, la bibliothèque client doit s'assurer que toutes les transactions sont résolues de la même façon. Le but d'une transaction est de maintenir un contexte atomique pour les opérations de bases de données, et il serait fatal pour cette intégrité de permettre à une transaction distribuée d'être validée dans une base de données pendant que la validation échoue dans une autre. InterBase réalise cela en utilisant un processus de validation en deux phases. Pour chaque base de données, la transaction est préparée pour la validation (ou éventuellement pour l'annulation). Une fois que toutes les transactions sont marquées préparées, une deuxième phase les fait passer de préparées en validées (ou annulées). Ce mécanisme est encore une fois transparent pour le développeur de l'application ; aucun code particulier n'est requis.

Architecture multigénération et verrouillage de bas niveau

L'architecture MGA (Multi-Generational Architecture) unique d'InterBase, appelée aussi versioning, autorise de nombreux accès client simultanés à un serveur InterBase et de gros débits. De plus, la façon dont InterBase stocke plusieurs versions d'un enregistrement de données signifie que chaque client a une vision cohérente de la base de données. Un client peut mettre à jour les données sans interférer avec la vue des données qu'ont les autres clients. Ces fonctionnalités aboutissent à une technologie de SGBD convenant parfaitement à la gestion des transaction courtes, fréquentes dans le modèle OLTP, ainsi que des transactions de longue durée de type OLAP.

Le serveur implémente de vrais verrous de bas niveau, en utilisant la stratégie du verrouillage optimiste. Un nombre quelconque de clients peuvent partager l'accès simultané en lecture à un enregistrement ; le conflit se produit seulement quand deux clients tentent de mettre à jour le même enregistrement. Dans ce cas, le client qui avait lancé l'opération de mise à jour le premier a la possibilité de la valider et le serveur renvoie une erreur à l'autre ou aux autres clients.

La combinaison du versioning et du verrouillage de bas niveau donne à InterBase des capacités de simultanéité et de débit exceptionnelles, comparées aux implémentations de SGBD utilisant les verrous au niveau de la page ou les verrous exclusifs en lecture. Les accès en lecture ne bloquent jamais les accès en écriture, et les accès en écriture ne bloquent jamais les accès en lecture.

InterBase gère à la fois le versioning et le verrouillage de façon transparente et automatique pour l'application. Cela libère le développeur du contrôle manuel du verrouillage obligatoire dans d'autres SGBDR. De nombreux paramètres facultatifs pour les transactions permettent aux développeurs d'adopter une autre politique de verrouillage.

Blobs et tableaux

InterBase a inventé l'implémentation d'un type de données à taille et contenu variables, le type Blob. Les blobs peuvent occuper plusieurs giga-octets. Les applications peuvent manipuler les blobs volumineux segment par segment afin d'éviter la surcharge des ressources du client sur le réseau. Nous pouvons assigner aux colonnes des blobs des sous-types définis par l'utilisateur, pour identifier et différencier des types particulier de données structurées et les stocker dans les blobs non structurés.

Les types de tableaux d'InterBase sont liés aux blobs. Nous pouvons concevoir dans la base de données une colonne contenant un tableau multi-dimensionnel de type SQL standard, et utiliser des instructions SQL pour interroger le contenu des tableaux. Un tableau InterBase est implémenté comme un blob structuré, ce qui lui permet d'avoir une taille quasi illimitée.

Fonctions définies par l'utilisateur (UDF)

Nous pouvons  augmenter les fonctionnalités du serveur InterBase en ajoutant nos propres modules compilés et en utilisant des fonctions dans les requêtes et dans les procédures stockées. Le code compilé écrit en C, C++ ou Delphi, dans une bibliothèque partagée (UNIX) ou dans une DLL (Windows), place la bibliothèque sur le serveur de bases de données et définit le point d'entrée de la fonction dans la définition de la base de donnée. Nous pouvons alors appeler les fonctions de la bibliothèque par SQL. InterBase nous permet d'ajouter un nombre quelconque de bibliothèques de UDF sur un serveur (nombre limité seulement par le système d'exploitation) et de les utiliser simultanément.

Les filtres Blob sont également une extension compilée du serveur. La fonction des filtres Blob est de convertir un sous-type Blob en un autre. Pour chaque combinaison de deux sous-types Blob, nous pouvons définir une fonction dans une bibliothèque compilée, conçue pour convertir les données d'un format structuré en un autre. Par exemple, nous pouvons définir un sous-type Blob pour qu'il contienne une image au format GIF et un autre sous-type pour un fichier JPEG. Nous pouvons programmer un filtre Blob convertissant les données d'un format dans un autre, et quand nous copions le contenu d'une colonne du Blob dans celle d'une autre base de données, le serveur appelle automatiquement le filtre Blob pour effectuer la conversion.

Optimiseur de requête

InterBase comprend un optimiseur de requêtes SQL sophistiqué côté serveur. En se basant sur un algorithme d'analyse des coûts, le serveur InterBase essaie de faire le meilleur usage des index définis dans des tables de bases de données, pour effectuer les recherches et les tris des clauses SQL JOIN, DISTINCT, ORDER BY et GROUP BY, et pour exécuter la requête de la façon la plus efficace possible.

Evènements

Le serveur actif peut fournir des applications client avec la notification des événements de bases de données définis par l'utilisateur. Les applications client indiquent l'intérêt pour un événement en mémorisant son nom. L'événement est envoyé par l'instruction POST dans le code d'un déclencheur ou d'une procédure stockée. Tout client qui a déclaré un intérêt pour cet événement est immédiatement prévenu par le serveur. Il existe des mécanismes pour que les clients attendent l'événement (notification synchrone), ou bien poursuivent le traitement et soient prévenus par une fonction de rappel (notification asynchrone).

Sécurité des bases de données

InterBase autorise les accès pour effectuer des opérations sur les données en accordant des privilèges SQL standard aux noms d'utilisateur. Ces noms d'utilisateur sont définis par serveur et stockés dans une base de données InterBase spéciale. InterBase supporte également les Rôles SQL, un mécanisme pour constituer des groupes d'utilisateurs auxquels on peut accorder des privilèges.

Sur les serveurs UNIX, InterBase s'intègre au système d'exploitation en permettant d'accorder des privilèges SQL aux noms d'utilisateur et aux noms de groupe UNIX, en plus des utilisateurs définis spécifiquement pour InterBase.

Support de l'international

InterBase stocke désormais de nombreux jeux de caractères internationaux et utilise leur ordre de tri respectif, ainsi que le standard UNICODE-FSS. Cela confère à InterBase une capacité remarquable à supporter les applications de bases de données internationales. Des jeux de caractères et des ordres de tri peuvent être définis au niveau de la base de données toute entière ou au niveau d'une table. En outre, l'ordre de tri peut être spécifié pour une requête, au moment voulu. Le serveur envoie les données au client, et c'est l'application client qui se charge de les afficher de la façon appropriée.

Outils client/serveur d’Inprise

Le moteur de bases de données Inprise (BDE) intègre InterBase à Delphi, C++Builder, IntraBuilder et Visual dBase, qui sont les meilleurs outils de développement visuel pour Windows. Les contrôles orientés données, qui font partie de la technologie RAD d’Inprise, sont directement intégrés au méthodes d'accès aux bases de données du BDE.

InterBase est livré avec les versions Professionnelle et Client/Serveur des outils Inprise. Cela permet d'offrir une solution complète aux développeurs de logiciels client/serveur qui utilisent les outils Inprise.

Interface ODBC

InterBase 5.0 pour Windows comprend un pilote ODBC 32 bits personnalisé de Visigenic Software, Inc. Ainsi, toute application de gestion qui utilise des sources de données ODBC peut accéder à une base de données InterBase. Ce pilote est conforme au standard ODBC 2.5.

InterBase version 6.0

Historique - Ce qu'il vous faut - Installation - Création d'une database - Création d'une table - Programme Delphi - Pour aller plus loin

 

Vous abordez InterBase parce que

Historique

Que ce soit pour l'une ou l'autre de ces raisons, vous serez intéressé d'apprendre qu'InterBase est né des travaux d'un développeur de Rdb de DEC, Jim Starkey. Souhaitant plus de liberté dans l'évolution de son produit, il créa et dirigea InterBase Inc. Ashton-Tate acheta la société. Et quand Borland racheta cette dernière, elle devint propriétaire d'InterBase. Plus récemment Borland/Inprise fit d'InterBase une entité autonome et décide l'été 2000 de mettre InterBase en Open Source.

Aujourd'hui, InterBase est donc soutenue d'une part au sein de Source Forge® ou d' IBPoenix, d'autre part par Inprise. Bien que le produit soit devenu libre de droit d'usage et de diffusion, Borland/Inprise continuera de certifier et de vendre InterBase. C'est une garantie pour ceux qui ne veulent ou ne peuvent prendre le temps de valider les innovations proposées par l'Open Source. Tandis que pour ceux qui adoptent la version Open Source, la présence de Borland/Inprise est une garantie de convergence et d'intégration du produit. Début Octobre 2000, la version vendue est la 5.5, la version en Open Source la 6.01 . La présence simultanée d'un groupe d'initiatives Open Source et d'un acteur commercial est le meilleur modèle de développement d'un progiciel. Loin de s'opposer, ils s'appuient l'un sur l'autre et se renforcent. (C'est d'ailleurs le modèle que Linux est en train d'adopter).

Ce qu'il vous faut

Dans le cadre de cet article, nous allons explorer la version Open Source. Pour la mettre en œuvre avec les outils de base que sont InterBase Express et IBConsole, vous devez avoir Delphi 5 Pro ou Entreprise, auquel vous aurez appliqué la mise à jour (dans le cas ou vous en seriez restés à la version d'origine car la mise à jour est indispensable pour utiliser la dernière version d'InterBase Express).

Evidemment, il vous faut aussi InterBase 6.01 que vous pouvez télécharger à partir du site de Borland.

Installation

Pour installer InterBase sur votre poste de travail, exécutez le fichier IBWin32.exe :

En fin d'installation, vous devez rebooter.
Vous apercevrez alors
InterBase Guardian en bas à droite de la barre des tâches.

Installez ensuite les dernières versions des composants InterBase Express et IBConsole.

Ouvrez IBConsole (à partir de Démarrer/Programmes/Interbase 6.0/IBConsole),
et enregistrez le serveur local par le menu Server/Register

Le mot de passe est masterkey (en minuscules).

Cliquez sur Ok. L'icône Local Server doit apparaître maintenant dans le volet gauche de l'explorer.

Création d'une database

Toutes les tables, index et autres éléments sont rassemblés en un seul fichier database. L'extension usuelle est .gdb Vous pouvez créer autant de database que vous le souhaitez. Généralement un programme accèdera à une database dans laquelle se trouvent les tables et les index liés. Cliquez sur Local Server. Par menu Server/Login, ouvrez une connexion avec le serveur. (le mot de passe est bien entendu masterkey).

La connexion étant ouverte, vous voyez apparaître Databases dans le volet gauche. Par menu Database/CreateDatabase, ouvrez le panneau de création de la database.

Indiquez le nom d'alias, ainsi que le nom du fichier (avec l'extension .gdb)

Cliquez sur Ok. Votre database est créée.

Par la suite, lorsque vous réouvrirez IBConsole, vous double-cliquez directement Local Server, puis MyInitialDatabase.

Par menu Database/Properties, puis onglet General, mettez l'option Forced Writes à Enabled.

Cliquez sur Ok.

De retour dans l'explorer d'IBConsole, vous voyez les différentes composantes d'une database :

Intéressons-nous à la principale de ces composantes : la table.

Création d'une table

Vous pouvez créer votre première table directement à partir d'IBConsole.
Par menu Tools/Interactive SQL, saisissez la commande suivante :

CREATE TABLE MaTable
(
Pk_Numero INTEGER NOT NULL,
Nom VARCHAR(30),
Telephone CHAR(16),
DateAppel TIMESTAMP,
Rappeler CHAR(1),
Montant NUMERIC(18,4),
CONSTRAINT Pk_Numero PRIMARY KEY (Pk_Numero)
)

puis exécutez la par Query/Execute. Votre première table est crée.
Fermez le panneau Interactive SQL. Pour ne voir que votre table dans la liste, décochez View/System Data.
Double-cliquez sur MATABLE. Vous voyez la structure de votre table. L'onglet Metadata vous montre l'ordre SQL régénéré automatiquement par IBConsole à partir de la structure de la table. Enfin, l'onglet Data vous permet de saisir des données.

Vous êtes devant une DBGrid. Voyons maintenant comment intégrer une table dans un programme Delphi.

Programme Delphi

Créez un projet Delphi. Ajoutez un Module de données (DataModule). A partir de l'onglet InterBase Express de la palette de composants,

déposez les composants IBX suivants et un composant TDataSource à partir de l'onglet AccèsBD.

.

Modifiez les propriétés suivantes :

Composant

Propriétés

Valeur

IBDatabase1

DatabaseName

C:\Program Files\Borland\Delphi5\Projects\Data\Initial.gdb

IBDatabase1

DefaultTransaction

IBTransaction1

IBDatabase1

SQLDialect

3

IBTransaction1

DefaultDatabase

IBDatabase1

IBQuery1

Database

IBDatabase1

IBQuery1

SQL

SELECT * FROM MATABLE

DataSource1

DataSet

IBQuery1

Sur la Form1, placez à partir de l'onglet ContrôleDB, un composant DBNavigator et un composant DBGrid.
Faites F12 pour afficher le code de la Form1. Dans la liste des
uses, ajoutez Unit2.
Puis F12 pour revenir sur la Form. Mettez les propriétés suivantes :

Composant

Propriétés

Valeur

DBNavigator

Align

alBottom

DBNavigator

DataSource

DataModule1.DataSource1

DBGrid

Align

alClient

DBGrid

DataSource

DataModule1.DataSource1

Dans DataModule1, mettez la propriété Active à True successivement pour IBDatabase, IBTransaction et IBQuery.

Vous devez voir les données saisies précédemment. Compilez, éxécutez.

Votre premier programme d'accès à une database InterBase est prêt!


Pour que votre programme puisse ajouter, modifier ou supprimer des données, nous allons transformer la requête statique ci-dessus en une requête dynamique : déposez sur le Module de données (DataModule), à partir de l'onglet InterBase Express le composant

Modifiez les propriétés suivantes :

Composant

Propriétés

Valeur

IBQuery1

UpdateObject

IBUpdateSQL1

IBUpdateSQL1 (1)

DeleteSQL

delete from MATABLE
where
PK_NUMERO = :OLD_PK_NUMERO

IBUpdateSQL1

InsertSQL

insert into MATABLE
(PK_NUMERO, NOM, TELEPHONE, DATEAPPEL, RAPPELER, MONTANT)
values
(:PK_NUMERO, :NOM, :TELEPHONE, :DATEAPPEL, :RAPPELER, :MONTANT)

IBUpdateSQL1

ModifySQL

update MATABLE
set
PK_NUMERO = :PK_NUMERO,
NOM = :NOM,
TELEPHONE = :TELEPHONE,
DATEAPPEL = :DATEAPPEL,
RAPPELER = :RAPPELER,
MONTANT = :MONTANT
Where
PK_NUMERO = :OLD_PK_NUMERO

IBUpdateSQL1

RefreshSQL

Select
PK_NUMERO,
NOM,
TELEPHONE,
DATEAPPEL,
RAPPELER,
MONTANT
from MATABLE
where
PK_NUMERO = :PK_NUMERO

DataSource1

DataSet

IBQuery1

(1) Dans la version Delphi 5 Entreprise, les ordres SQL de IBUpdate peuvent être générés automatiquement :

► Mettez la propriété Active de IBDatabase1 à True. Faites de même avec IBTransaction1 et IBQuery1.
► Cliquez droit sur IBUpdateSQL1 et activez l'Editeur IBUpdateSQL.
► Cliquez sur
Sélectionner les clés primaires, puis sur Générer le SQL. Tous les ordres SQL d' IBUpdateSQL1 sont alors automatiquement générés.

Compilez, Exécutez :

Votre première application InterBase fonctionne.

Pour aller plus loin

Quelques compléments à l’ IBCONSOLE un des outils d’administration d’ Interbase : voici quelques autres logiciels

Nouvelle version d'IB Expert, un outils d'administration pour InterBase : Voir aussi IBaccess (Gratuit), IBAdmin, IBConsole, DeZign , Universal DBA  Anglais