Question

Je ne connais pas très bien les gâteaux. Alors, voici mes questions. Nous développons une application sur mysql, mais elle devra éventuellement être déployée sur mssql ou oracle. Comment pouvons-nous nous assurer que nous n'aurons pas d'étranges problèmes avec nos clés primaires? Dans mysql, ce sont des colonnes AUTO INCREMENT mais IIRC sous oracle, vous devez utiliser des séquences ... existe-t-il un moyen d’en faire un changement transparent? Est-ce que je pense trop?

Quelqu'un at-il de l'expérience avec le changement de fournisseur de base de données sur une application Cakephp? des indicateurs ou des choses à surveiller?

Était-ce utile?

La solution

Dans le fichier de configuration de la base de données Cake, vous choisissez votre pilote (voir http: // book .cakephp.org / view / 40 / Configuration de la base de données ). Ensuite, si vous définissez votre PK (qui sera également votre colonne A_I si vous utilisez MySQL) avec le nom de champ id , Cake gérera automatiquement l'insertion auto_increment. Je présume (NB: je n'ai pas essayé Cake avec autre chose) que Cake s'occupera des colonnes A_I dans quelque chose comme Oracle.

Cake utilise sa propre couche d’abstraction de base de données, mais les abstractions incluses en couvrent un certain nombre et fonctionnent comme prévu (c’est-à-dire qu’il gérera votre travail d’incrémentation automatique pour vous).

En bref, vous pensez probablement trop. Cela dit, je simulerais une petite application pour les gâteaux, puis essayerais de changer de base de données (changez votre configuration de base de données et votre application devrait basculer automatiquement).

HTH, Travis

Autres conseils

Les pratiques suivantes fonctionnent très bien pour moi

J'utilise des schémas de gâteau (j'ai tendance à configurer un fichier de schéma pour chaque groupe de modèles. I.E. Utilisateur, rôle, profil peut se trouver dans un fichier UsersSchema)

Jetez également un coup d’œil à l’utilisation de FixturesShell de debuggable.com - il vous permet d’importer des fixtures de scénario de test dans la base de données dynamique. Idéal pour configurer ce groupe initial d’utilisateurs et de rôles à partir du fichier de schéma.

De même, si vous définissez votre champ "id" sur VARCHAR (36) au lieu de INT (#), cake utilisera automatiquement les identifiants de style UUID. Cela signifie que vos chances d'avoir des collisions de valeur id si vos données doivent être déplacées vers une autre application ou un autre serveur sont FAR FAR moins élevées.

Le shell de fixtures a aussi un outil de ligne de commande pour générer des uuids (vous pouvez donc les ajouter à votre variable $ records dans le fixture pour l'insertion, etc.)

En résumé - Utilisez le shell de schémas CakeSchema, le shell de fixtures de debuggable.com et les valeurs UUID pour votre identifiant. Il devrait vous fournir un outil de création de structure portable, un outil d'insertion de données portable et un format de champ d'identifiant portable.

http://api.cakephp.org/class/schema-shell

Vous devez utiliser le "schéma de gâteau". pour gérer votre base de données .. Ceci gérera tous les éléments spécifiques à la base de données lorsque vous créez votre base de données.

http://book.cakephp.org/view / 735 / Génération et utilisation de fichiers de schéma

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top