Chapitre 17 Introduction à MaxDB

Table des matières

17.1 Historique de MaxDB
17.2 Licence et support MaxDB
17.3 Liens traitant de MaxDB
17.4 Concepts de base de MaxDB
17.5 Différences de fonctionnalités entre MaxDB et MySQL
17.6 Interopérabilité entre MaxDB et MySQL
17.7 Mots réservés de MaxDB

MaxDB est une base de donnée au niveau de l'entreprise. MaxDB est le nouveau nom d'un système de gestion de bases de données, anciennement appelé SAP DB.

17.1 Historique de MaxDB

L'histoire de SAP DB commence au début des années 1980 lorsqu'il était développé en tant que produit commercial (Adabas). La base de données a changé de nom plusieurs fois durant sa vie. Lorsque SAP AG, une société allemande de Walldorf, a pris en main le développement de ce système de base de données, il portait le nom SAP DB.

SAP a développé ce système de base de données pour servir de système de stockage pour toutes les application SAP lourdes, à savoir SAP R/3. SAP DB avait pour objectif de fournir une alternative aux systèmes de bases de données d'éditeurs tiers, comme Oracle, Microsoft SQL Server, ou DB2 d'IBM. En octobre 2000, SAP a publié SAP DB sous licence GNU GPL (see Annexe G, Licence Publique Générale GNU), et en a fait ainsi un logiciel Open Source. En octobre 2003, plus de 2 000 clients l'utilisaient comme système de base de données séparé, en dehors de leur base de donnée principale, faisant partie de la solution APO/LiveCache.

En mai 2003, un partenariat technologique a été conclu entre MySQL AB et SAP AG. Ce partenariat autorise MySQL AB à développer davantage SAP DB, à changer son nom et à vendre des licences commerciales de SAP DB aux clients qui ne veulent pas être limités par les restrictions découlant de la licence GNU GPL (see Annexe G, Licence Publique Générale GNU). En août 2003, MySQL AB a rebaptisé SAP DB : MaxDB .

17.2 Licence et support MaxDB

MaxDB peut être utilisé sous les mêmes licences que celles qui sont disponibles pour les autres produits distribués par MySQL AB. Par conséquent MaxDB est disponible sous licence GNU General Public, et sous licence commerciale. Pour plus d'informations sur les licences, voyez http://www.mysql.com/company/legal/licensing/.

MySQL fournira un support sur MaxDB à ceux qui ne sont pas clients de SAP.

La première version sous bannière MySQL AB, est MaxDB 7.5.00, qui sortira à la fin 2003.

17.3 Liens traitant de MaxDB

Le site officiel où trouver des informations sur MaxDB est http://www.mysql.com/maxdb. A terme, toutes les informations disponibles sur http://www.sapdb.org y seront placées.

17.4 Concepts de base de MaxDB

MaxDB agit en mode client/serveur. Il a été développé pour répondre aux exigences d'installations répondant à un grand nombre de transactions en ligne. Il supporte à la fois la sauvegarde en ligne et l'extension de base de données. Microsoft Clustered Server est supporté directement pour les implémentations à serveurs multiples; les autres solutions de cluster doivent être programmées manuellement. Les outils d'administration de base de données sont fournis à la fois en version native Windows et en version navigateur web.

17.5 Différences de fonctionnalités entre MaxDB et MySQL

La liste suivante est un court résumé des principales différences entre MaxDB et MySQL. Elle n'est pas complète.

  • MaxDB fonctionne comme un système client/serveur. MySQL peut fonctionner comme un système client/serveur ou comme un système intégré.

  • Il est possible que MaxDB ne fonctionne pas sur toutes les plates-formes supportées par MySQL. Par exemple, MaxDB ne fonctionne pas sur OS/2 d'IBM.

  • MaxDB utilise un protocole réseau propriétaire pour la communication client/serveur alors que MySQL utilise soit TCP/IP (avec ou sans chiffrage SSL), soit des interfaces de connexion, ou des canaux de communication nommés (sous les systèmes de la famille Windows NT).

  • MaxDB supporte les procédures stockées. Avec MySQL, les procédures stockées sont implémentées en version 5.0. Max DB supporte aussi les triggers par une extension SQL, qui est prévue pour MySQL 5.1. MaxDB contient un débogueur pour les langages de procédure stockée, peut déclencher sous-programmes imbriqués en cascade, et supporte les triggers multiples sur action et par ligne.

  • MaxDB est livré avec des interfaces utilisateur en mode texte ou graphique, ou encore sur le web. MySQL est livré avec des interfaces utilisateurs en mode texte uniquement; une interface utilisateur graphique (MySQL Control Center) est distribué séparément. Les interfaces utilisateur sur le web pour MySQL sont offerts par des éditeurs tiers.

  • MaxDB supporte un certain nombre d'interfaces de programmation qui sont aussi supportées par MySQL. Toutefois, MaxDB ne supporte pas RDO, ADO, ni .NET, qui sont toutes supportées par MySQL. MaxDB peut uniquement être intégré dans des applications C/C++.

  • MaxDB contient des fonctionnalités administratives que MySQL n'a pas : la planification de tâches, les événements et alerte, et l'envoi de messages à une base de données administrateur sur signal d'alerte.

17.6 Interopérabilité entre MaxDB et MySQL

Les fonctionnalités suivantes seront incluses dans les versions MaxDB qui doivent sortir peu après la première version 7.5.00. Ces fonctionnalités assureront l'interopérabilité entre MaxDB et MySQL :

  • Il y aura un proxy MySQL qui permettra de se connecter à MaxDB en utilisant le protocole MySQL. Ceci rend possible l'utilisation de programmes clients MySQL avec MaxDB, comme le client en ligne de commande mysql, l'utilitaire d'exportation ou le programme d'import mysqlimport. En utilisant mysqldump, on peut facilement exporter des données d'une base de donnée vers un autre système de base de données.

  • La réplication entre MySQL et MaxDB sera supportée dans les deux sens. C'est à dire que MySQL ou MaxDB pourra être utilisé comme serveur maître de réplication. Le but à long terme est de faire converger et d'étendre la syntaxe de réplication de fa¸on à ce que les deux systèmes de base de données utilisent la même syntaxe.

    See Section 6.1, « Introduction à la réplication ».

17.7 Mots réservés de MaxDB

Comme MySQL, MaxDB a un certain nombre de mots réservés, qui ont une signification particulière. Normalement, ils ne peuvent pas être utilisés comme noms d'identifiants, comme les noms de tables ou de bases de donnés. Le tableau suivant liste les mots réservés dans MaxDB, et indique le contexte dans lequel ces mots sont utilisés. Il indique aussi s'ils ont une équivalence en MySQL ou non. Si une telle équivalence existe, la signification avec MySQL peut être identique ou différente par certains aspects. L'objectif principal est de montrer dans quelle mesure MaxDB diffère de MySQL; par conséquent cette liste n'est pas complète.

Pour la liste de mots réservés dans MySQL, consultez Section 9.6, « Cas des mots réservés MySQL ».

Réservé par MaxDBContexte d'utilisation dans MaxDBéquivalent MySQL
@Peut être préfixe à un identifiant, comme ``@table''Non autorisé
ADDDATE()fonction SQLADDDATE(); nouveau en MySQL version 4.1.1
ADDTIME()fonction SQLADDTIME(); nouveau en MySQL version 4.1.1
ALPHAfonction SQLRien de comparable
ARRAYType de donnéeNon implémenté
ASCII()fonction SQLASCII(), mais implémenté avec une signification différente
AUTOCOMMITTransactions; ON par défautTransactions; OFF par défaut
BOOLEANtypes colonne; BOOLEAN n'accepte comme valeur que TRUE, FALSE, et NULLBOOLEAN a été ajouté en MySQL version 4.1.0; c'est un synonyme de BOOL qui équivaut à TINYINT(1). Il accepte les valeurs entières dans la même plage que TINYINT ainsi que la valeur NULL. TRUE et FALSE peuvent être utilisés comme alias de 1 et 0.
CHECKCHECK TABLECHECK TABLE; similaire mais utilisation différente
COLUMNtype colonneCOLUMN; mot parasite
CHAR()fonction SQLCHAR(); syntaxe identique ; similaire, utilisation différente
COMMITDes validations implicites de transactions se produisent quand les requêtes de définition de données sont publiéesDes validations implicites de transactions se produisent quand les requêtes de définition de données sont publiées mais aussi avec d'autres commandes
COSH()fonction SQLRien de comparable
COT()fonction SQLCOT(); syntaxe et implémentation identiques
CREATESQL, langage de définition des donnéesCREATE
DATABASEfonction SQLDATABASE(); DATABASE est utilisé dans un contexte différent, par exemple CREATE DATABASE
DATE()fonction SQLCURRENT_DATE
DATEDIFF()fonction SQLDATEDIFF(); nouveau en MySQL version 4.1.1
DAY()fonction SQLrien de comparable
DAYOFWEEK()fonction SQLDAYOFWEEK(); le premier jour (1) par défaut est lundi avec MaxDB, et dimanche avec MySQL
DISTINCTfonctions SQL AVG, MAX, MIN, SUMDISTINCT; mais utilisé dans un contexte différent : SELECT DISTINCT
DROPalias de DROP INDEXDROP INDEX; similaire mais utilisation différente
EBCDIC()fonction SQLRien de comparable
EXPAND()fonction SQLRien de comparable
EXPLAINOptimisationEXPLAIN; similaire mais utilisation différente
FIXED()fonction SQLrien de comparable
FLOAT()fonction SQLRien de comparable
HEX()fonction SQLHEX(); similaire mais utilisation différente
INDEX()fonction SQLINSTR() ou LOCATE(); similaire mais syntaxe et signification différentes
INDEXUSE INDEX, IGNORE INDEX et des optimisations similaires sont utilisées juste après SELECT, comme SELECT ... USE INDEXUSE INDEX, IGNORE INDEX et des optimisations similaires sont utilisées dans la clause FROM d'une requête SELECT, comme dans SELECT ... FROM ... USE INDEX
INITCAP()fonction SQLRien de comparable
LENGTH()fonction SQLLENGTH(); syntaxe identique mais implémentation légèrement différente
LFILL()fonction SQLRien de comparable
LIKEComparaisonsLIKE; mais LIKE que MaxDB fournit se rapproche plutôt du REGEX de MySQL
LIKE caractères de rapprochementMaxDB supporte ``%'', ``_'', ``contrôle+souligné'', ``contrôle+flèche vers le haut'', ``*'', et ``?'' comme caractères de remplacement dans une comparaison LIKEMySQL supporte ``%'', et ``_'' comme caractères de remplacement dans une comparaison LIKE
LPAD()fonction SQLLPAD(); implémentation légèrement différente
LTRIM()fonction SQLLTRIM(); implémentation légèrement différente
MAKEDATE()fonction SQLMAKEDATE(); nouveau en MySQL version 4.1.1
MAKETIME()fonction SQLMAKETIME(); nouveau en MySQL version 4.1.1
MAPCHAR()fonction SQLRien de comparable
MICROSECOND()fonction SQLMICROSECOND(); nouveau en MySQL version 4.1.1
NOROUND()fonction SQLRien de comparable
NULLtypes colonnes; comparaisonsNULL; MaxDB supporte les valeurs spéciales NULL qui sont renvoyées par des opérations arithmétiques lors de dépassement de capacité ou lors des divisions par zéro; MySQL ne supporte pas de telles valeurs spéciales
PIfonction SQLPI(); syntaxe et implémentation identiques, mais les parenthèses sont obligatoires
REFtype de donnéeRien de comparable
RFILL()fonction SQLRien de comparable
ROWNOPrédicat dans la clause WHERESimilaire à la clause LIMIT
RPAD()fonction SQLRPAD(); implémentation légèrement différente
RTRIM()fonction SQLRTRIM(); implémentation légèrement différente
SEQUENCECREATE SEQUENCE, DROP SEQUENCEAUTO_INCREMENT; concept similaire mais implémentation différente
SINH()fonction SQLRien de comparable
SOUNDS()fonction SQLSOUNDEX(); syntaxe légèrement différente
STATISTICSUPDATE STATISTICSANALYZE; concept similaire, mais implémentation différente
SUBSTR()fonction SQLSUBSTRING(); implémentation légèrement différente
SUBTIME()fonction SQLSUBTIME(); nouveau en MySQL version 4.1.1
SYNONYMlangage de définition de données: CREATE [PUBLIC] SYNONYM, RENAME SYNONYM, DROP SYNONYMRien de comparable
TANH()fonction SQLRien de comparable
TIME()fonction SQLCURRENT_TIME
TIMEDIFF()fonction SQLTIMEDIFF(); nouveau en MySQL version 4.1.1
TIMESTAMP()fonction SQLTIMESTAMP(); nouveau en MySQL version 4.1.1
TIMESTAMP() comme argument de DAYOFMONTH() et DAYOFYEAR()fonction SQLRien de comparable
TIMEZONE()fonction SQLRien de comparable
TRANSACTION()Renvoie l'identité de la transaction en coursRien de comparable
TRANSLATE()fonction SQLREPLACE(); syntaxe et implémentation identiques
TRIM()fonction SQLTRIM(); implémentation légèrement différente
TRUNC()fonction SQLTRUNCATE(); syntaxe et implémentation légèrement différentes
USEmysql interface en ligne de commandeUSE
USERfonction SQLUSER(); syntaxe identique, mais implémentation légèrement différente, et les parenthèses sont obligatoires
UTC_DIFF()fonction SQLUTC_DATE(); fournit un moyen de calculer le résultat de UTC_DIFF()
VALUE()fonction SQL, alias pour COALESCE()COALESCE(); syntaxe et implémentation identiques
VARIANCE()fonction SQLRien de comparable
WEEKOFYEAR()fonction SQLWEEKOFYEAR(); nouveau en MySQL version 4.1.1