Question

Je suis relativement nouveau à PHP, mais expérimenté programmeur Java dans des environnements complexes d'entreprise avec l'architecture SOA et des applications multiniveaux. Là-bas, nous avions normalement mettre en œuvre des applications d'affaires avec la logique métier au niveau intermédiaire.

Je suis la programmation d'un système monétaire alternatif, qui devrait être facile déployable et personnalisable par des individus et des communautés; il sera open source. Voilà pourquoi php / mysql semble le meilleur choix pour moi.

Les utilisateurs ont des comptes, et ils obtiennent un équilibre. En outre, le système calcule les prix en fonction de l'ensemble des services fournis et le total des actifs disponibles.

Cela signifie, sur l'achat d'une série de calculs se produire; l'équilibre et les totaux sont mis à jour; Ces chiffres sont tirés, quelque chose normalement pas mis dans une base de données.

Cependant, j'ai eu recours à la mise triggers et des procédures stockées dans la db, de sorte que dans le code php aucune de ces mises à jour sont faites.

Qu'est-ce que les gens pensent? Est-ce une bonne approche? Mon expérience me porte à croire que ce n'est pas la meilleure solution, et me pousse à mettre en œuvre un niveau intermédiaire. Cependant, je ne sais même pas comment faire. D'autre part, ce que j'ai à ce jour avec procs magasin me semble le plus approprié.

J'espère que je fait ma question claire. Tous les commentaires appréciés. Il pourrait ne pas être une solution « parfaite ».

Était-ce utile?

La solution

Comme la tendance ces jours-ci, se éloigner de la DB est généralement une bonne chose. Vous obtenez le contrôle de version plus facile et vous obtenez de travailler dans une seule langue. Plus que cela, je pense que les procédures stockées sont une façon difficile d'aller. D'autre part, si vous aimez ce genre de choses et vous vous sentez à l'aise avec le RPU dans le MySql, ils ne sont pas mauvais, mais mon sentiment a toujours été qu'ils sont plus difficiles à déboguer et plus difficile à gérer.

Sur la question des déclencheurs, je ne suis pas sûr que ce qui est nécessaire pour votre application. Depuis les événements qui déclenchent les calculs sont invoquées par l'utilisateur, ces choses peuvent se produire en PHP, même si l'utilisateur est redirigé vers une page « en attente » ou une autre page dans l'intervalle. De toute évidence, les vrais déclencheurs ne peut se faire au niveau DB, mais vous pouvez utiliser un thread démon qui exécute un script PHP toutes les X secondes ... Évitez à tout prix et essayer d'obtenir l'événement pour déclencher à partir du côté utilisateur.

Tout cela dit, je voulais brancher ma solution préférée pour la couche d'accès aux données sur PHP: Doctrine . Ce n'est pas parfait, mais PHP étant ce qu'elle est, il est assez bon. Est-ce que la plupart de ce que vous voulez, et vous permet de travailler avec des objets au lieu des procédures de base de données et ainsi de suite.

En ce qui concerne votre titre, plusieurs niveaux sont, en PHP, tout à fait faisable, mais vous devez les faire et de les respecter. code PHP peut appeler un autre code PHP, et il est maintenant (5.2+) bien OO et tout ça. N'assurez-vous d'ignorer le fait que beaucoup de code PHP, vous verrez autour est de la merde totale et n'utilise même pas des méthodes, laisser seuls niveaux, et la modélisation OO décent. Il est possible, si vous voulez le faire, y compris faire votre propre (ou en utilisant un existant) solution MVC.

Autres conseils

Une question de pousser beaucoup de fonctionnalités au niveau de DB, au lieu d'une couche d'abstraction de données, est que vous êtes enfermé dans le jeu de fonctionnalités du SGBD. Le logiciel libre est souvent écrit de sorte qu'il peut être utilisé avec différents blocs de données (certainement pas toujours). Il est possible que sur la route que vous voulez le rendre facile au port postgre ou d'autres SGBD. En utilisant de nombreuses fonctionnalités spécifiques MySQL va maintenant faire que plus difficile.

Il n'y a absolument rien de mal à utiliser les déclencheurs et les procédures stockées et d'autres caractéristiques qui sont fournis par votre serveur DB. Il fonctionne et fonctionne bien, vous utilisez le plein potentiel de la DB, au lieu de simplement reléguer à être un magasin de données simpliste.

Cependant, je suis sûr que pour tous les développeurs ici qui est d'accord avec vous (et moi), il y a au moins autant qui pensent le contraire et ont eu de bonnes expériences avec le faire.

Merci les gars.

J'utilisais db déclenche parce que je pensais que ce serait peut-être plus facile de contrôler l'intégrité des transactions comme ça. Comme vous pouvez le réaliser, je suis un développeur qui essaie aussi d'obtenir l'adhérence des connaissances db.

Maintenant, je vois qu'il ya la solution pour diffuser le code php sur plusieurs niveaux, non seulement logique, mais aussi physiquement en déployant sur différents serveurs.

Cependant, à ce stade de développement, je pense que je vais en tenir à mes déclencheurs / solution sp, car cela ne se sent pas à être mauvais. La distribution sur plusieurs couches me obliger à repenser mon application cohérente.

En outre, en pensant open source, si quelqu'un aime le système financier alternatif, il pourrait être plus facile pour les gens à changer simplement la mise en page pour leurs besoins, alors que je ne serais pas besoin de se soucier que les calculs se tromper si les gens touchent code php.

D'autre part, bien sûr, je suis d'accord que des choses db peut être très difficile à déboguer.

Les scripts d'initialisation DB sont en contrôle de code source, comme le sont les fichiers php:)

Merci encore

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