Application BDD Hyperfile vers Oracle ou autre

Le
Développement Steganux
Bonjour,

Je possède actuellement une appli avec une base de données Hyperfile
classique, avec des accès hlit, hlitrecherche, et des requêtes, ainsi
que des identifiants automatiques dans les fichiers.
J'aimerais ajouter une option a mon appli pour qu'elle puisse également
être couplée avec une base de données Oracle ou Sql Server ou MySQL,
c'est à dire qu'au départ
l'utilisateur choisira entre une base Hyperfile ou une autre base.
J'utiliserai bien sur l'accés natif fournit par pcsoft adapté à la base
choisie.
Normalement il suffit de créer une nouvelle connexion avec les
paramètres de la base oracle et d'appeler hchangeconnexion, donc pour ça
pas de problème.

J'aimerais d'abord savoir avec quelle base j'aurais le moins de travail
d'adaptation à faire.

Ensuite comment sont gérés les identifiants automatiques ?

Merci



Dvlpt, Steganux
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Développement Steganux
Le #14487211
Gilles a écrit :

Avec MySQL ou SQLServer, les hcreationsiinexistant s'en sortent bien
avec les identifiants automatiques ou les contraintes (décrites dans
l'analyse comme des clés composées).

En revanche, pour Oracle c'est plus corsé, puisque les identifiants
automatiques n'ont pas d'équivalent.

Ce que je te conseille de faire, c'est de ne faire de
hcréationsiinexistant que dans le cas où tu es en hyperfile, et dans les
autres cas, de tester l'existence des tables et de lancer un script de
création.

Ca te permettra, notemment pour Oracle, de générer des triggers avec des
séquences pour simuler le fonctionnement de l'incrément automatique.

Pour les requêtes paramétrées, ca risque d'être plus ou moins compliqué.
Si tes requêtes restent simples, ca ira. Mais dans des cas où la requête
est un peu particulière, et si des fonctions sont utilisées, sachant que
les langages diffèrent selon les bases, tu seras coincé.

Dans ces cas là, il vaudra mieux utiliser hExecuteRequeteSQL et faire
des requêtes spécifiques à chaque base.

Pour les ordres H, ca marche plutôt bien.

Gilles.





Merci pour tout ces renseignements !

En terme de rapidité d'accès aux données, existe-t-il des différences
suivant les accès natifs ?

Cordialement

Dvlpt, Steganux
Daniel
Le #14487201
Développement Steganux a écrit :
Gilles a écrit :

Avec MySQL ou SQLServer, les hcreationsiinexistant s'en sortent bien
avec les identifiants automatiques ou les contraintes (décrites dans
l'analyse comme des clés composées).

En revanche, pour Oracle c'est plus corsé, puisque les identifiants
automatiques n'ont pas d'équivalent.

Ce que je te conseille de faire, c'est de ne faire de
hcréationsiinexistant que dans le cas où tu es en hyperfile, et dans
les autres cas, de tester l'existence des tables et de lancer un
script de création.

Ca te permettra, notemment pour Oracle, de générer des triggers avec
des séquences pour simuler le fonctionnement de l'incrément automatique.

Pour les requêtes paramétrées, ca risque d'être plus ou moins
compliqué. Si tes requêtes restent simples, ca ira. Mais dans des cas
où la requête est un peu particulière, et si des fonctions sont
utilisées, sachant que les langages diffèrent selon les bases, tu
seras coincé.

Dans ces cas là, il vaudra mieux utiliser hExecuteRequeteSQL et faire
des requêtes spécifiques à chaque base.

Pour les ordres H, ca marche plutôt bien.

Gilles.





Merci pour tout ces renseignements !

En terme de rapidité d'accès aux données, existe-t-il des différences
suivant les accès natifs ?



Tout dépend du code initial. Mais il ne faut pas attendre de miracle. Si
tu réussis à faire fonctionner ton application sur une autre base sans
trop d'effort, tu as des accès bases qui ne sont pas du tout optimisés.

Remplacer toutes les tables fichiers par des tables mémoires, mettre un
maximum de requêtes en sélection devraient permettre d'améliorer les choses.

Changer de base demande du boulot.


--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Publicité
Poster une réponse
Anonyme