Question

J'écris une application que je vais fournir en tant que service et également en tant qu'application autonome. Il est écrit dans Zend Framework et utilise MySQL.

Lorsque ce service est fourni en tant que service, je souhaite que les utilisateurs s'enregistrent sur mon site et possèdent des sous-domaines tels que customer1.mysite.com, customer2.mysite.com.

Je veux tout avoir dans une base de données, pas en créer une nouvelle pour chaque utilisateur.

Mais maintenant je me demande comment faire mieux. Je suis venu avec deux solutions: 1. Ayez l'identifiant de l'utilisateur dans chaque table et ajoutez-le simplement à la clause WHERE dans chaque requête de base de données. 2. Recréez les tables avec un préfixe unique, tel que 'client1_nom de table', 'client2_nom de table'.

Quelle approche est la meilleure? Avantages et inconvénients? Existe-t-il un autre moyen de séparer les utilisateurs de la même base de données?

Leonti

Était-ce utile?

La solution

Je préférerais que toutes les tables soient conservées, sinon l'utilisation d'une base de données ne présente aucun intérêt. Cela signifie également que vous pouvez éventuellement permettre une sorte d'interaction entre sites sur la piste. Assurez-vous simplement de placer des index sur le champ de différenciation ( numéro_client ou autre) et tout devrait bien se passer.

Si les tables deviennent vraiment volumineuses et lentes, consultez partitionnement de table .

Autres conseils

Cela dépend de ce que vous avez l'intention de faire avec les données. Si les clients ne partagent pas les données, la segmentation par client peut être meilleure; vous pouvez également obtenir de meilleures performances.

D'autre part, avoir plusieurs tables avec une structure identique peut être un cauchemar lorsque vous souhaitez modifier la structure.

Je vous recommande d'utiliser des bases de données distinctes pour chaque utilisateur. Cela facilite la programmation de votre application et facilite la maintenance de MySQL (migration d'un compte unique, suppression d'un compte, etc.).

La seule exception à cette règle serait si vous devez accéder aux données entre comptes ou partager des données.

Il s’agit d’une application à locataires multiples que beaucoup de personnes exécutent; voir

balise multi-locataire

Pour les questions de certains autres peuples

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