2010-08-09 18 views
0

N'hésitez pas à apporter des améliorations à l'une de mes idées.Questions de base de conception de base de données

Mon objectif est d'avoir plusieurs utilisateurs exécutant un programme de bureau qui transmettra des informations à un script php qui écrira alors l'information dans une base de données. Pas besoin de s'inquiéter des détails de l'application de bureau.

Mes questions: 1) Cette méthode sera-t-elle efficace? Ou serait-il préférable pour le script php d'écrire les données dans un fichier texte, puis pour un travail cron d'appeler un script php pour traiter le fichier texte chaque minute?

2) Lorsque je sors avec la version 2 de l'application de bureau, comment puis-je adapter la base de données pour gérer les nouveaux changements? Par exemple, supposons que v1 du programme envoie juste une variable. Puis v2 du programme envoie deux variables. Je ne serai pas capable de m'assurer que tous les utilisateurs passent à la version 2. Donc, si un utilisateur utilise toujours la version 1, le script php doit-il simplement écrire les données variables dans la base de données et laisser l'autre variable vide?

Un autre scénario est que ce qui est dans la version 2 je décide que la variable originale doit être changée? Comment puis-je gérer cela?

Tous les commentaires sont appréciés!

Répondre

1

Vous aimez créer un client riche. Je ne comprends pas quelles sont vos raisons pour PHP. Si vous voulez avoir une application client-serveur je vois les options suivantes:

  • L'application de bureau accède directement à une base de données centrale
  • L'application de bureau communique avec un service Web pour cacher les détails de base de données (par exemple versioning)
  • Vous avez PHP faire tous les trucs avec la base de données et utiliser un navigateur à la place de l'application de bureau.

Pour gérer votre deuxième point, vous devriez envisager d'utiliser des transactions. Ils garantissent la cohérence des données à chaque instant.

+0

Une des raisons pour PHP est que si quelqu'un peut se connecter directement à la base de données, il a déjà plus d'accès que n'importe quel client. Toute personne qui pourrait trouver la chaîne de connexion DB dans l'application pourrait insérer des tonnes de données bidon à volonté, potentiellement tout enlever. Un script PHP, ou un autre service fonctionnant sur le serveur, rendrait cela plus difficile, car les données peuvent être vérifiées plus facilement et avant qu'elles ne soient stockées. Et pour référence, un script PHP peut être un service web. – cHao

+0

Oui exactement. Le script php ne reçoit que les données et me donne des options pour filtrer les données avant de les ajouter à la base de données. Cela signifie également que je n'ai pas à coder en dur les détails de la base de données dans l'application de bureau. – Steve

+0

cHao: question de suivi. Quelle adresse dois-je utiliser pour la base de données? Par exemple, si mon serveur Web s'appelait google.com, je ne devrais pas utiliser google.com pour mon adresse de base de données car je ne serais pas en mesure de séparer les deux plus tard si je voulais mon serveur Web sur un ordinateur et ma base de données sur un autre ordinateur. ? Alors, quelles adresses dois-je utiliser? google.com pour le serveur web et database.google.com pour la base de données? – Steve

1

Créez une versionnée API de service Web et utilisez-la.

Notez l'emphisis sur version.

+0

Pouvez-vous me donner un lien pour une lecture plus approfondie? – Steve

+0

Je n'ai jamais rien lu sur ce sujet, donc j'ai peur de ne pas avoir de lien. Je sais par expérience que la gestion des versions de votre API est un must. –

+0

Ma réponse à cette question peut vous être utile. http://stackoverflow.com/questions/948355/when-is-api-overengineered/948419#948419 –

0

L'efficacité du script PHP dépendra de quelques facteurs, notamment de la façon dont il est écrit et de la structure de votre base de données. Soyez particulièrement prudent avec les index; ils accélèrent les lectures, mais au prix de ralentir les écritures - parfois de façon spectaculaire.

J'irais avec les mises à jour en direct jusqu'à ce que j'avais raison de le changer. Si les choses sont bien faites, les clients ne remarqueraient pas l'une ou l'autre façon (à l'exception du délai pour voir les données changer, s'ils peuvent même voir cela).

+0

Je n'ai pas beaucoup d'expérience avec l'optimisation des bases de données donc je vais juste aller avec l'installation et l'utilisation standard de mysql un tas de tables et de clés pour garder les données normalisées. Ensuite, je vais apprendre comme je vais. – Steve

+0

Regardez les clés. Ils iront bien pendant un moment, mais si vous ne faites pas attention, à un moment donné vous pouvez trouver que MySQL passe plus de temps à mettre à jour les index qu'à mettre à jour la table réelle. – cHao

Questions connexes